MYSQL課件7 過程函數(shù)觸發(fā)器_第1頁
MYSQL課件7 過程函數(shù)觸發(fā)器_第2頁
MYSQL課件7 過程函數(shù)觸發(fā)器_第3頁
MYSQL課件7 過程函數(shù)觸發(fā)器_第4頁
MYSQL課件7 過程函數(shù)觸發(fā)器_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

主要內(nèi)容MYSQL中存儲(chǔ)過程和函數(shù)的創(chuàng)建MYSQL中存儲(chǔ)過程應(yīng)用函數(shù)的參數(shù)使用方法存儲(chǔ)過程和函數(shù)的調(diào)用、查看、修改和刪除

MYSQL觸發(fā)器

1.

存儲(chǔ)過程簡(jiǎn)介我們常用的操作數(shù)據(jù)庫語言SQL語句在執(zhí)行的時(shí)候需要先編譯,然后執(zhí)行,而存儲(chǔ)過程(StoredProcedure)是一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫中用戶通過指定存儲(chǔ)過程的名字并給定參數(shù)(如果該存儲(chǔ)過程帶有參數(shù))來調(diào)用執(zhí)行它。

數(shù)據(jù)庫中的存儲(chǔ)過程可以看做是對(duì)編程中面向?qū)ο蠓椒ǖ哪M。它允許控制數(shù)據(jù)的訪問方式。它可以有SQL語句和一些特殊的控制結(jié)構(gòu)組成。當(dāng)希望在不同的應(yīng)用程序或平臺(tái)上執(zhí)行相同的函數(shù),或者封裝特定功能時(shí),存儲(chǔ)過程是非常有用的。

存儲(chǔ)過程又稱存儲(chǔ)程序它是一系列保存在數(shù)據(jù)庫服務(wù)器上的SQL語句可以供客戶端程序調(diào)用它.MySQL的存儲(chǔ)程序可分以下四大類:

(1)存儲(chǔ)過程(2)函數(shù)(3)觸發(fā)器(4)事件與存儲(chǔ)過程相關(guān)的系統(tǒng)表為Mysql.Proc表什么是存儲(chǔ)過程?★

當(dāng)多個(gè)用不同語言開發(fā)的應(yīng)用程序或不同平臺(tái)的應(yīng)用程序需要去執(zhí)行相同的數(shù)據(jù)庫操作.(避免為各個(gè)程序都開發(fā)相同的功能)安全性要求較高時(shí),使用存儲(chǔ)程序和函數(shù)為一些公共的操作(程序員不是數(shù)據(jù)庫管理員他可能不了解很多數(shù)據(jù)庫的機(jī)制比如事務(wù),錯(cuò)誤回滾等.銀行轉(zhuǎn)帳問題可以解釋.)減輕客戶端應(yīng)用程序的負(fù)擔(dān)

(讓更多的操作由數(shù)據(jù)庫服務(wù)器執(zhí)行)

什么情況適合用存儲(chǔ)過程?★

1)提升性能由于客戶端和服務(wù)器間傳遞的信息量少了2)存儲(chǔ)過程允許你使用數(shù)據(jù)庫上的豐富的庫函數(shù)3)程序員減少編碼量存儲(chǔ)過程有哪些好處?

MySQL存儲(chǔ)過程的創(chuàng)建

MySQL存儲(chǔ)過程創(chuàng)建的格式:CREATEPROCEDURE過程名([過程參數(shù)[,...]])

begin

.........

end

delimiter//createprocedureproc1(outsint)beginselectcount(*)intosfrom

employees;end//

(1)DELIMITER//和DELIMITER;

DELIMITER是分割符的意思,因?yàn)镸ySQL默認(rèn)以";"為分隔符,如果我們沒有聲明分割符,那么編譯器會(huì)把存儲(chǔ)過程當(dāng)成SQL語句進(jìn)行處理,則存儲(chǔ)過程的編譯過程會(huì)報(bào)錯(cuò),所以要事先用DELIMITER關(guān)鍵字申明當(dāng)前段分隔符,這樣MySQL才會(huì)將";"當(dāng)做存儲(chǔ)過程中的代碼,不會(huì)執(zhí)行這些代碼,用完了之后要把分隔符還原。(2)存儲(chǔ)過程根據(jù)需要可能會(huì)有輸入、輸出、輸入輸出參數(shù),這里有一個(gè)輸出參數(shù)s,類型是int型,如果有多個(gè)參數(shù)用","分割開。(3)過程體的開始與結(jié)束使用BEGIN與END進(jìn)行標(biāo)識(shí)。

MySQL存儲(chǔ)過程的查詢1.

showprocedurestatus2.showprocedurestatuswheredb='數(shù)據(jù)庫名';看存儲(chǔ)過程的詳細(xì):SHOWCREATEPROCEDURE數(shù)據(jù)庫.存儲(chǔ)過程名;參數(shù)MySQL存儲(chǔ)過程的參數(shù)用在存儲(chǔ)過程的定義時(shí),共有三種參數(shù)類型:IN,OUT,INOUT,形式如:CREATEPROCEDURE存儲(chǔ)過程名([[IN|OUT|INOUT]參數(shù)名數(shù)據(jù)類形...])IN輸入?yún)?shù):表示該參數(shù)的值必須在調(diào)用存儲(chǔ)過程時(shí)指定,在存儲(chǔ)過程中修改該參數(shù)的值不能被返回,為默認(rèn)值OUT輸出參數(shù):該值可在存儲(chǔ)過程內(nèi)部被改變,并可返回INOUT輸入輸出參數(shù):調(diào)用時(shí)指定,并且可被改變和返回IN參數(shù)例子mysql

>

DELIMITER

//

mysql

>

CREATE

PROCEDURE

demo_in_parameter(IN

p_in

int)

BEGIN

SELECT

p_in;

SET

p_in=2;

SELECT

p_in;

END;

//

mysql

>

DELIMITER

執(zhí)行結(jié)果:mysql

>

SET

@p_in=1;

mysql

>

CALL

demo_in_parameter(@p_in);

Ⅱ.OUT參數(shù)例子mysql

>

DELIMITER

//

mysql

>

CREATE

PROCEDURE

demo_out_parameter(OUT

p_out

int)

->

BEGIN

->

SELECT

p_out;

->

SET

p_out=2;

->

SELECT

p_out;

->

END;

->

//

mysql

>

DELIMITER

執(zhí)行:mysql

>

SET

@p_out=1;

mysql

>

CALL

demo_out_parameter(@p_out);

Ⅲ.INOUT參數(shù)例子

mysql

>

DELIMITER

//

mysql

>

CREATE

PROCEDURE

demo_inout_parameter(INOUT

p_inout

int)

->

BEGIN

->

SELECT

p_inout;

->

SET

p_inout=2;

->

SELECT

p_inout;

->

END;

->

//

mysql

>

DELIMITER

執(zhí)行mysql

>

SET

@p_inout=1;

mysql

>

CALL

demo_inout_parameter(@p_inout)

變量

變量定義:DECLARE變量名變量類型[DEFAULTvalue];變量類型如:int,float,date,varchar(length)DECLARE

a

int;

DECLARE

b

date

DEFAULT

'1999-12-31';

DECLARE

c

varchar(255)

變量賦值:

SET變量名=表達(dá)式值

用戶變量

ⅰ.在MySQL客戶端使用用戶變量

mysql

>

select‘Hello

World’into@x;

mysql

>

SELECT

@x;

mysql

>

SET

@y='Goodbye

Cruel

World';mysql

>

SELECT

@y;

mysql

>

SET

@z=1+2+3;

mysql

>

SELECT

@z;

用戶變量在存儲(chǔ)過程中使用用戶變量

mysql

>

createproceduregreetworld()

selectconcat(@greeting,’world’);

mysql

>

set@greeting='Hello';

mysql

>

call

greetWorld(

);

用戶變量在存儲(chǔ)過程間傳遞全局范圍的用戶變量

mysql>

CREATE

PROCEDURE

p1()

SET

@last_procedure='p1';

mysql>

CREATE

PROCEDURE

p2()

SELECT

CONCAT('Last

procedure

was

',@last_proc);

mysql>

CALL

p1(

);

mysql>

CALL

p2(

);

4.

MySQL存儲(chǔ)過程的調(diào)用Call過程名(參數(shù))參數(shù)包括輸入?yún)?shù)、輸出參數(shù)、輸入輸出參數(shù)。具體的調(diào)用方法可以參看上面的例子。

MySQL存儲(chǔ)過程的修改:ALTERPROCEDURE過程名MySQL存儲(chǔ)過程的刪除:DROPPROCEDURE過程名

MySQL存儲(chǔ)過程的控制語句內(nèi)部的變量在其作用域范圍內(nèi)享有更高的優(yōu)先權(quán),當(dāng)執(zhí)行到end時(shí),內(nèi)部變量消失,此時(shí)在其作用域外,變量不再可見了,因?yàn)樵诖鎯?chǔ)過程外再也不能找到這個(gè)申明的變量,但是你可以通過out參數(shù)或者將其值指派給會(huì)話變量來保存其值。

mysql

>

DELIMITER

//

mysql

>

CREATE

PROCEDURE

proc3()

begin

declare

x1

varchar(5)

default

'outer';

begin

declare

x1

varchar(5)

default

'inner';

select

x1;

end;

select

x1;

end;

//

mysql

>

DELIMITER

;

條件語句之If–then-else語句【例7.6】創(chuàng)建xscj數(shù)據(jù)庫的存儲(chǔ)過程,判斷兩個(gè)輸入的參數(shù)哪一個(gè)更大。delimiter$$createprocedurepar (ink1integer,ink2integer,outk3char(6))begin ifk1>k2then setk3='大于'; elseifk1=k2then setk3='等于'; else setk3='小于'; endif;end$$delimiter;【例7.7】創(chuàng)建一個(gè)存儲(chǔ)過程,針對(duì)參數(shù)的不同,返回不同的結(jié)果。delimiter$$createprocedurexscj.result (instrvarchar(4),outsexvarchar(4))begincasestr when'm'thensetsex='男'; when'f'thensetsex='女'; elsesetsex='無';endcase;end$$delimiter;【例7.8】用第二種格式的CASE語句創(chuàng)建以上存儲(chǔ)過程,程序片段如下:case whenstr='m'thensetsex='男'; whenstr='f'thensetsex='女'; elsesetsex='無';endcase;Case語句循環(huán)語句

(3)循環(huán)語句MySQL支持3條用來創(chuàng)建循環(huán)的語句:WHILE、REPEAT和LOOP語句。在存儲(chǔ)過程中可以定義0個(gè)、1個(gè)或多個(gè)循環(huán)語句。WHILE語句語法格式為:[begin_label:]WHILEsearch_conditionDO statement_listENDWHILE[end_label]【例7.9】創(chuàng)建一個(gè)帶WHILE循環(huán)的存儲(chǔ)過程。delimiter$$createproceduredowhile()begindeclarev1intdefault5;whilev1>0dosetv1=v1-1;endwhile;end$$

錯(cuò)誤處理【例7.12】創(chuàng)建一個(gè)存儲(chǔ)過程,向xs表插入一行數(shù)據(jù)('081101','王民','計(jì)算機(jī)',1,'1994-02-10',50,NULL,NULL),已知學(xué)號(hào)081101在XS表中已存在。如果出現(xiàn)錯(cuò)誤,程序繼續(xù)進(jìn)行。usexscj;delimiter$$createproceduremy_insert()begin declareundohandlerforsqlstate'23000'set@x2=1; set@x=2; insertintoxsvalues('081101','王民','計(jì)算機(jī)',1,'1994-02-10',50,null,null); set@x=3;end$$delimiter;調(diào)用存儲(chǔ)過程查看結(jié)果的語法格式為:callmy_insert();select@x;執(zhí)行結(jié)果如圖所示。游標(biāo)的使用【例7.14】創(chuàng)建一個(gè)存儲(chǔ)過程,計(jì)算xs表中行的數(shù)目。delimiter$$createprocedurecompute(outnumberinteger)begin declarexhchar(6); declarefoundbooleandefaulttrue; declarenumber_xscursorfor select學(xué)號(hào)

fromxs; declarecontinuehandlerfornotfound setfound=false; setnumber=0; opennumber_xs; fetchnumber_xsintoxh; whilefounddo setnumber=number+1; fetchnumber_xsintoxh; endwhile; closenumber_xs;end$$delimiter;調(diào)用此存儲(chǔ)過程并查看結(jié)果:callcompute(@num);select@num;

存儲(chǔ)函數(shù)

創(chuàng)建存儲(chǔ)函數(shù)CREATEFUNCTION語法格式:CREATEFUNCTIONsp_name([func_parameter[,...]])RETURNStype[characteristic...]routine_body下面舉一些存儲(chǔ)函數(shù)的例子?!纠?.21】創(chuàng)建一個(gè)存儲(chǔ)函數(shù),它返回xs表中學(xué)生的數(shù)目作為結(jié)果。delimiter$$createfunctionnum_of_xs()returnsintegerBeginreturn(selectcount(*)fromxs);end$$delimiter;調(diào)用函數(shù)Selectnum_of_xs()觸發(fā)器是一種特殊的存儲(chǔ)過程,它在插入,刪除或修改特定表中的數(shù)據(jù)時(shí)觸發(fā)執(zhí)行,它比數(shù)據(jù)庫本身標(biāo)準(zhǔn)的功能有更精細(xì)和更復(fù)雜的數(shù)據(jù)控制能力。數(shù)據(jù)庫觸發(fā)器有以下的作用:1.安全性??梢曰跀?shù)據(jù)庫的值使用戶具有操作數(shù)據(jù)庫的某種權(quán)利。

#可以基于時(shí)間限制用戶的操作,例如不允許下班后和節(jié)假日修改數(shù)據(jù)庫數(shù)據(jù)。

#可以基于數(shù)據(jù)庫中的數(shù)據(jù)限制用戶的操作,例如不允許股票的價(jià)格的升幅一次超過10%。2.審計(jì)??梢愿櫽脩魧?duì)數(shù)據(jù)庫的操作。

#審計(jì)用戶操作數(shù)據(jù)庫的語句。

#把用戶對(duì)數(shù)據(jù)庫的更新寫入審計(jì)表。3.實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)完整性規(guī)則

#實(shí)現(xiàn)非標(biāo)準(zhǔn)的數(shù)據(jù)完整性檢查和約束。觸發(fā)器可產(chǎn)生比規(guī)則更為復(fù)雜的限制。與規(guī)則不同,觸發(fā)器可以引用列或數(shù)據(jù)庫對(duì)象。例如,觸發(fā)器可回退任何企圖吃進(jìn)超過自己保證金的期貨。#提供可變的缺省值。

4.實(shí)現(xiàn)復(fù)雜的非標(biāo)準(zhǔn)的數(shù)據(jù)庫相關(guān)完整性規(guī)則。觸發(fā)器可以對(duì)數(shù)據(jù)庫中相關(guān)的表進(jìn)行連環(huán)更新。例如,在auths表author_code列上的刪除觸發(fā)器可導(dǎo)致相應(yīng)刪除在其它表中的與之匹配的行。

#在修改或刪除時(shí)級(jí)聯(lián)修改或刪除其它表中的與之匹配的行。

#在修改或刪除時(shí)把其它表中的與之匹配的行設(shè)成NULL值。

#在修改或刪除時(shí)把其它表中的與之匹配的行級(jí)聯(lián)設(shè)成缺省值。

#觸發(fā)器能夠拒絕或回退那些破壞相關(guān)完整性的變化,取消試圖進(jìn)行數(shù)據(jù)更新的事務(wù)。當(dāng)插入一個(gè)與其主健不匹配的外部鍵時(shí),這種觸發(fā)器會(huì)起作用。例如,可以在books.author_code

列上生成一個(gè)插入觸發(fā)器,如果新值與auths.author_code列中的某值不匹配時(shí),插入被回退。5.同步實(shí)時(shí)地復(fù)制表中的數(shù)據(jù)。

6.自動(dòng)計(jì)算數(shù)據(jù)值,如果數(shù)據(jù)的值達(dá)到了一定的要求,則進(jìn)行特定的處理。例如,如果公司的帳號(hào)上的資金低于5萬元?jiǎng)t立即給財(cái)務(wù)人員發(fā)送警告數(shù)據(jù)。MySQL觸發(fā)器語法

㈠CREATETRIGGER語法

CREATETRIGGER

觸發(fā)器名BEFORE或AFTER

觸發(fā)事件

ON

表名FOREACHROWbegin

執(zhí)行語句

End

觸發(fā)程序是與表有關(guān)的命名數(shù)據(jù)庫對(duì)象,當(dāng)表上出現(xiàn)特定事件時(shí),將激活該對(duì)象。表必須引用永久性表。

不能將觸發(fā)程序與TEMPORARY表或視圖關(guān)聯(lián)起來。

觸發(fā)事件可以是下述值之一:

·INSERT:將新行插入表時(shí)激活觸發(fā)程序,例如,通過INSERT、LOADDATA和REPLACE語句。·UPDATE:更改某一行時(shí)激活觸發(fā)程序,例如,通過UPDATE語句。DELETE:從表中刪除某一行時(shí)激活觸發(fā)程序,例如,通過DELETE和REPLACE語句

請(qǐng)注意

對(duì)于具有相同觸發(fā)程序動(dòng)作時(shí)間和事件的給定表,不能有兩個(gè)觸發(fā)程序。例如,對(duì)于某一表,不能有兩個(gè)BEFOREUPDATE觸發(fā)程序。但可以有1個(gè)BEFOREUPDATE觸發(fā)程序和1個(gè)BEFOREINSERT觸發(fā)程序,或1個(gè)BEFOREUPDATE觸發(fā)程序和1個(gè)AFTERUPDATE觸發(fā)程序。

Createtabletimelog(Idint(11)primarykeyauto_incrementnotnull,Savetimevarchar(50)notnull);Delimiter//Createtriggerauto_save_timebeforeinsertonStudentinfoforeachrowInsertintotimelog(savetime)values(now());//查看觸發(fā)器1.查看選擇數(shù)據(jù)庫中的所有觸發(fā)器:

Showtriggers;2.通過查看triggers表查看Select*frominformation_schema.triggers;查看指定的觸發(fā)器內(nèi)容:Select*frominformation_schema.triggerswheretrigger_name=‘觸發(fā)器名’㈢使用觸發(fā)程序

觸發(fā)器執(zhí)行順序:before觸發(fā)器、表操作、after觸發(fā)器操作。㈢使用觸發(fā)程序

觸發(fā)程序是與表有關(guān)的命名數(shù)據(jù)庫對(duì)象,當(dāng)表上出現(xiàn)特定事件時(shí),將激活該對(duì)象。在某些觸發(fā)程序的用法中,可用于檢查插入到表中的值,

或?qū)Ω律婕暗闹颠M(jìn)行計(jì)算。

觸發(fā)程序與表相關(guān),當(dāng)對(duì)表執(zhí)行INSERT、DELETE或UPDATE語句時(shí),將激活觸發(fā)程序??梢詫⒂|發(fā)程序設(shè)置為在執(zhí)行語句之前或之后激活。例如,可以在從表中刪除每一行之前,或在更新了每一行后激活觸發(fā)程序。

㈡DROPTRIGGER刪除觸發(fā)程序

DROPTRIGGER[schema_name.]trigger_name

schema_name是可選的。如省略,將從當(dāng)前數(shù)據(jù)中刪除觸發(fā)程序。

注釋:從MySQL5.0.10之前的MySQL版本升級(jí)到5.0.10或更高版本時(shí)(包括所有的MySQL5.1版本),必須在升級(jí)之前刪除所有的觸發(fā)程序,并在隨后重新創(chuàng)建它們,否則,在升級(jí)之后DROPTRIGGER不工作。

DROPTRIGGER語句需要SUPER權(quán)限。在該示例中,定義了1個(gè)UPDATE觸發(fā)程序,用于檢查更新每一行時(shí)將使用的新值,并更改值,使之位于0~100的范圍內(nèi)。它必須是BEFORE觸發(fā)程序,這是因?yàn)椋枰趯⒅涤糜诟滦兄皩?duì)其進(jìn)行檢查:mysql>delimiter//

mysql>CREATETRIGGERupd_checkBEFOREUPDATEONaccount

->FOREACHROW

->BEGIN

->

IFNEW.amount<0THEN

->

SETNEW.amount=0;

->

ELSEIFNEW.amount>100THEN

->

SETNEW.amount=100;

->

ENDIF;

->END;//

mysql>delimiter;

觸發(fā)程序不能調(diào)用將數(shù)據(jù)返回客戶端的存儲(chǔ)程序,也不能使用采用CALL語句的動(dòng)態(tài)SQL(允許存儲(chǔ)程序通過參數(shù)將數(shù)據(jù)返回觸發(fā)程序)。觸發(fā)程序不能使用以顯式或隱式方式開始或結(jié)束事務(wù)的語句,如STARTTRANSACTION、COMMIT或ROLLBACK。

使用OLD和NEW關(guān)鍵字,能夠訪問受觸發(fā)程序影響的行中的列

在INSERT觸發(fā)程序中,僅能使用NEW.col_name,沒有舊行。在DELETE觸發(fā)程序中,僅能使用OLD.col_name,沒有新行。在UPDATE觸發(fā)程序中,可以使用OLD.col_name來引用更新前的某一行的列,也能使用NEW.col_name來引用更新后的行中的列。

用OLD命名的列是只讀的。你可以引用它,但不能更改它。對(duì)于用NEW命名的列,如果具有SELECT權(quán)限,可引用它。在BEFORE觸發(fā)程序中,如果你具有UPDATE權(quán)限,可使用“SETNEW.col_name=value”更改它的值。這意味著,你可以使用觸發(fā)程序來更改將要插入到新行中的值,或用于更新行的值。

在BEFORE觸發(fā)程序中,AUTO_INCREMENT列的NEW值為0,不是實(shí)際插入新記錄時(shí)將自動(dòng)生

成的序列號(hào)。通過使用BEGIN...END結(jié)構(gòu),能夠定義執(zhí)行多條語句的觸發(fā)程序。在BEGIN塊中,還能使用存儲(chǔ)

子程序中允許的其他語法,如條件和循環(huán)等。但是,正如存儲(chǔ)子程序那樣,定義執(zhí)行多條語句的

觸發(fā)程序時(shí),如果使用mysql程序來輸入觸發(fā)程序,需要重新定義語句分隔符,以便能夠在觸發(fā)

程序定義中使用字符“;”。在觸發(fā)程序的執(zhí)行過程中,MySQL處理錯(cuò)誤的方式如下:

如果BEFORE觸發(fā)程序失敗,不執(zhí)行相應(yīng)行上的操作。

·僅當(dāng)BEFORE觸發(fā)程序(如果有的話)和行操作均已成功執(zhí)行,才執(zhí)行AFTER觸發(fā)程序。

·

如果在BEFORE或AFTER觸發(fā)程序的執(zhí)行過程中出現(xiàn)錯(cuò)誤,將導(dǎo)致調(diào)用觸發(fā)程序的整個(gè)語

句的失敗。

·

對(duì)于事務(wù)性表,如果觸發(fā)程序失?。ㄒ约坝纱藢?dǎo)致的整個(gè)語句的失?。撜Z句所執(zhí)行的

所有更改將回滾。對(duì)于非事務(wù)性表,不能執(zhí)行這類回滾,因而,即使語句失敗,失敗之前所作的

任何更改依然有效。例一:

mysql>createtableaccount(acct_numint,amountdecimal(10,2));mysql>

createtriggerins_sumbeforeinsertonaccountforeachrowset@sum=@sum+new.amount;

例一:利用事件往一張表中插數(shù)據(jù),然后再把表中的數(shù)據(jù)通過存儲(chǔ)過程進(jìn)行計(jì)算插入到另一張表中.1)創(chuàng)建兩張臨時(shí)表Createtablet_org(idintnotnull

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論