第四章 結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL_第1頁(yè)
第四章 結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL_第2頁(yè)
第四章 結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL_第3頁(yè)
第四章 結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL_第4頁(yè)
第四章 結(jié)構(gòu)化查詢(xún)語(yǔ)言SQL_第5頁(yè)
已閱讀5頁(yè),還剩108頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第4章結(jié)構(gòu)化查詢(xún)語(yǔ)言--SQL教學(xué)要求:了解本章所有概念的含義;掌握表、視圖、索引的創(chuàng)建與撤消的語(yǔ)句格式及功能;掌握數(shù)據(jù)的插入、刪除和修改的語(yǔ)句格式及功能;熟練掌握庫(kù)查詢(xún)語(yǔ)句SELECT的各種格式和相應(yīng)功能。對(duì)于電子商務(wù)專(zhuān)業(yè),多表嵌套和謂詞查詢(xún)不作要求。SQL有多個(gè)版本:SQL86、SQL89SQL2、SQL3等?,F(xiàn)在SQL幾乎被所有關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)所使用。SQL具有數(shù)據(jù)定義(DDL)、數(shù)據(jù)操縱(DML)和數(shù)據(jù)控制(DCL)功能。(操作命令、窗口界面)SQL的數(shù)據(jù)定義功能能夠定義數(shù)據(jù)庫(kù)的三級(jí)模式結(jié)構(gòu)。在SQL中,外模式又叫視圖(View),全局模式簡(jiǎn)稱(chēng)模式(Schema)或數(shù)據(jù)庫(kù)(Database),內(nèi)模式由系統(tǒng)根據(jù)數(shù)據(jù)庫(kù)模式自動(dòng)實(shí)現(xiàn),一般無(wú)需用戶(hù)過(guò)問(wèn)。在SQL中,每個(gè)關(guān)系又叫基本表(Table),屬性又叫字段(Field)或列(Column),元組又叫行(Row)。一個(gè)數(shù)據(jù)庫(kù)由若干個(gè)基本表組成,通常一個(gè)基本表對(duì)應(yīng)存儲(chǔ)在外存數(shù)據(jù)庫(kù)空間的一個(gè)存儲(chǔ)文件中。每個(gè)視圖也是一個(gè)關(guān)系,它由基本表產(chǎn)生出來(lái),有自己獨(dú)立的結(jié)構(gòu)定義,但沒(méi)有獨(dú)立的數(shù)據(jù)存在,它的數(shù)據(jù)來(lái)自基本表,間接地來(lái)自存儲(chǔ)基本表的數(shù)據(jù)存儲(chǔ)文件,所以又把視圖稱(chēng)為虛表。SQL的數(shù)據(jù)操縱功能包括對(duì)基本表和視圖的數(shù)據(jù)查詢(xún)、插入、刪除和修改,具有很強(qiáng)的數(shù)據(jù)查詢(xún)能力。對(duì)于SQL任一種數(shù)據(jù)操縱,它的操作對(duì)象都是元組的集合,其操作結(jié)果也是元組的集合。總之,SQL是一種高度非過(guò)程化的面向集合的語(yǔ)言。SQL的控制功能主要是對(duì)用戶(hù)的訪(fǎng)問(wèn)權(quán)限加以控制,以保證系統(tǒng)的安全性。一般由具體系統(tǒng)的數(shù)據(jù)庫(kù)管理員使用,負(fù)責(zé)用戶(hù)的訪(fǎng)問(wèn)控制工作。4.1數(shù)據(jù)庫(kù)模式的建立和刪除當(dāng)需要在計(jì)算機(jī)中某個(gè)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)之下建立數(shù)據(jù)庫(kù)時(shí),首先就要使用數(shù)據(jù)庫(kù)模式的建立命令定義數(shù)據(jù)庫(kù)名,即模式名,然后在其中定義各個(gè)基本表、視圖等有關(guān)對(duì)象。CREATE{SCHEMA|DATABASE}<數(shù)據(jù)庫(kù)名>[AUTHORRIZATION<所有者名>]語(yǔ)句功能:在系統(tǒng)中建立一個(gè)只有名字的空數(shù)據(jù)庫(kù),并定義出它的所有者名。語(yǔ)句說(shuō)明:語(yǔ)句關(guān)鍵字、標(biāo)識(shí)符、字符串常量。4.1.1建立數(shù)據(jù)庫(kù)模式語(yǔ)句舉例:Createschemaxueshauthorization劉勇Createdatabase教學(xué)庫(kù)當(dāng)前數(shù)據(jù)庫(kù)、默認(rèn)數(shù)據(jù)庫(kù)默認(rèn)所有者名為dbo。DROP{SCHEMA|DATABASE}<數(shù)據(jù)庫(kù)名>語(yǔ)句功能:在系統(tǒng)中刪除一個(gè)數(shù)據(jù)庫(kù)。同時(shí)刪除庫(kù)中的所有信息。語(yǔ)句舉例:Dropdatabasexuesh4.1.2刪除數(shù)據(jù)庫(kù)模式4.2表結(jié)構(gòu)的建立、修改和刪除在系統(tǒng)中命名了一個(gè)關(guān)系數(shù)據(jù)庫(kù)之后,接著就要在其中建立關(guān)系數(shù)據(jù)庫(kù)模式設(shè)計(jì)中的每個(gè)關(guān)系(表)。CREATETABLE[<數(shù)據(jù)庫(kù)名><所有者名>]<基本表名>(<列定義>,…[,<表級(jí)完整性約束>,…])語(yǔ)句功能:在當(dāng)前或給定的數(shù)據(jù)庫(kù)中定義一個(gè)表的結(jié)構(gòu)(關(guān)系模式)。語(yǔ)句說(shuō)明:每個(gè)列的名字是一個(gè)用戶(hù)定義的標(biāo)識(shí)符,列名后面跟著其數(shù)據(jù)類(lèi)型的描述。四種P75。4.2.1建立表結(jié)構(gòu)語(yǔ)句說(shuō)明:每個(gè)列后面的完整性約束稱(chēng)為列級(jí)完整性約束。六種P75。<表級(jí)完整性約束>在所有列定義后給出。四種P75。除默認(rèn)值約束和空值/非空值外,對(duì)于其他約束,若只涉及到一個(gè)列時(shí),則既可以作為列級(jí)完整性約束,又可以作為表級(jí)完整性約束,當(dāng)然只能取其一使用,若涉及到多個(gè)列時(shí),則只能作為表級(jí)完整性約束來(lái)定義。語(yǔ)句舉例:p76Createtable學(xué)生(學(xué)生號(hào)char(7)primarykey,姓名char(6)notnullunique,性別char(2)notnullcheck(性別=‘男’or性別=‘女’),出生日期datetimrcheck(出生日期<‘1993-12-31’),專(zhuān)業(yè)intcheck(年級(jí)>=1and年級(jí)<=4))語(yǔ)句舉例:p76Createtable課程(課程號(hào)char(4)primarykey,課程名char(10)notnullunique,課程學(xué)分intcheck(課程學(xué)分>=1and課程學(xué)分<=6))語(yǔ)句舉例:p76Createtable選課(學(xué)生號(hào)char(7),課程號(hào)char(10)notnullunique,成績(jī)intcheck(成績(jī)>=0and成績(jī)<=100),Primarykey(學(xué)生號(hào),課程號(hào)),F(xiàn)oreignkey(學(xué)生號(hào))references學(xué)生(學(xué)生號(hào)),F(xiàn)oreignkey(課程號(hào))references課程(課程號(hào)),)ALTERTABLE[<數(shù)據(jù)庫(kù)名>.<所有者名>.]<基本表名>{ADD<列定義>,…|ADD<表級(jí)完整性約束>,…|DROPCOLUMN<列名>,…|DROP〈約束名〉,…}語(yǔ)句功能:向已定義過(guò)的表中添加一些列的定義或一些表級(jí)完整性約束,或者從已定義過(guò)的表中刪除一些列或一些完整性約束。語(yǔ)句說(shuō)明:P77。4.2.2修改表結(jié)構(gòu)語(yǔ)句舉例:p77Altertable學(xué)生add籍貫char(6)Altertable學(xué)生dropcolumn籍貫DROPTABLE[<數(shù)據(jù)庫(kù)名>.<所有者名>.]<基本表名>語(yǔ)句功能:先刪除掉與之關(guān)聯(lián)的所有子表,或者刪除掉所有相應(yīng)的外碼約束。語(yǔ)句舉例:P78。Droptable學(xué)生14.2.3刪除表結(jié)構(gòu)4.3表內(nèi)容的插入、修改和刪除當(dāng)建立好一個(gè)表結(jié)構(gòu)后,它只是一個(gè)空表,接著需要向它插入數(shù)據(jù),即添加每個(gè)元組,然后還可以修改和刪除等操作。單行插入INSERT[INTO][<數(shù)據(jù)庫(kù)名>.<所有者名>.]<基本表名>(<列名>,…)VALUES(<列值>,…)多行插入INSERT[INTO][<數(shù)據(jù)庫(kù)名>.<所有者名>.]<基本表名>(<列名>,…)<SELECT子句>)語(yǔ)句功能:向表中所指定的若干列插入一行或多行數(shù)據(jù)。語(yǔ)句說(shuō)明:P79。4.3.1插入記錄語(yǔ)句舉例:p79Createtable職工(職工號(hào)char(6)primarykey,姓名char(8)notnull,性別char(2)notnull,年齡int,基本工資float)Insertinto職工(職工號(hào),姓名,性別,年齡,基本工資)values(‘010105’,’李羽‘,’女‘,28,1560)Insertinto職工(職工號(hào),姓名,性別,年齡,基本工資)select職工號(hào),姓名,性別,年齡,基本工資from職工1where性別=‘男’4.3.2修改記錄UPDATE[<數(shù)據(jù)庫(kù)名>.<所有者名>.]<目的表名>SET<列名>=表達(dá)式,…[FROM<源表名>,…][WHERE<邏輯表達(dá)式>]語(yǔ)句功能:按條件修改一個(gè)表中一些值。語(yǔ)句說(shuō)明:P80。語(yǔ)句舉例:Update職工set年齡=年齡+1語(yǔ)句舉例:Update職工set基本工資=職工1.基本工資+職工1.職務(wù)津貼from職工1where職工.職工號(hào)=職工1.職工號(hào)Update職工set基本工資=基本工資*1.2where職工號(hào)=‘010405’4.3.3刪除記錄DELETE[FROM][<數(shù)據(jù)庫(kù)名>.<所有者名>.]<目的表名>[FROM<源表名>,…][WHERE<邏輯表達(dá)式>]語(yǔ)句功能:刪除一個(gè)表中中滿(mǎn)足條件的所有行。語(yǔ)句說(shuō)明:P81。語(yǔ)句舉例:Deletefrom職工where年齡>45語(yǔ)句舉例:delete職工form職工1where職工.職工號(hào)=職工1.職工號(hào)delete職工第4章結(jié)構(gòu)化查詢(xún)語(yǔ)言--SQL4.4視圖的建立、修改和刪除視圖與基本表視圖可以在任何一個(gè)或多個(gè)表上建立,這些表包括基本表和稱(chēng)作邏輯表的視圖在內(nèi)。視圖的建立和刪除只影響視圖本身,不影響對(duì)應(yīng)的基本表,而對(duì)視圖內(nèi)容的更新(插入、刪除和修改)直接影響基本表,即直接更新基本表中的數(shù)據(jù)。當(dāng)視圖來(lái)自多個(gè)基本表時(shí),通常只允許對(duì)視圖做適當(dāng)?shù)男薷?,不允許做插入和刪除數(shù)據(jù)的操作。對(duì)視圖做的較多的是查詢(xún)。4.4.1建立視圖語(yǔ)句格式:CREATEVIEW<視圖名>(<列名>,…)AS<SELECT子句>語(yǔ)句功能:在當(dāng)前數(shù)據(jù)庫(kù)中根據(jù)SELECT子句的查詢(xún)結(jié)果建立一個(gè)視圖,包括視圖的結(jié)構(gòu)和內(nèi)容。語(yǔ)句說(shuō)明:P82語(yǔ)句舉例:P83假定在教學(xué)庫(kù)中建立的學(xué)生、課程、選課三個(gè)基本表如表4-1、4-2、4-3。若教學(xué)庫(kù)為當(dāng)前庫(kù),則執(zhí)行下列語(yǔ)句:createview成績(jī)視圖表(學(xué)生號(hào),姓名,課程號(hào),課程名,成績(jī))asselect選課.學(xué)生號(hào),姓名,選課.課程號(hào),課程名,成績(jī)from學(xué)生,課程,選課where學(xué)生.學(xué)生號(hào)=選課.學(xué)生號(hào)and課程.課程號(hào)=選課.課程號(hào)and專(zhuān)業(yè)=‘電子’由此可見(jiàn),用戶(hù)可以根據(jù)實(shí)際需要在基本表之上對(duì)存在的列進(jìn)行任意組合得到相應(yīng)結(jié)構(gòu)的新表,它是基本表的一種視圖,即映象或虛表。這樣既能滿(mǎn)足數(shù)據(jù)庫(kù)的結(jié)構(gòu)化(達(dá)到一定的范式)要求,又能滿(mǎn)足用戶(hù)對(duì)數(shù)據(jù)表的實(shí)際需要。視圖成為用戶(hù)與數(shù)據(jù)庫(kù)打交道的良好的操作界面。數(shù)據(jù)庫(kù)規(guī)范化是把關(guān)系逐步分解的過(guò)程,而視圖又是把分解的關(guān)系按需要連接起來(lái)的過(guò)程。使用視圖還能夠增強(qiáng)數(shù)據(jù)庫(kù)的安全性,可以從相關(guān)基本表中選擇滿(mǎn)足一定條件的行和列建立視圖,把這個(gè)視圖授權(quán)給相關(guān)用戶(hù)訪(fǎng)問(wèn),而基本表中的其他數(shù)據(jù)他無(wú)權(quán)訪(fǎng)問(wèn)。使用視圖還能夠根據(jù)用戶(hù)的局部應(yīng)用、根據(jù)用戶(hù)的習(xí)慣命名視圖中的列名。如學(xué)生號(hào)改為學(xué)號(hào),課程號(hào)改為課號(hào)等。在設(shè)計(jì)基本表時(shí),考慮到關(guān)系的規(guī)范化要求,不能把通過(guò)計(jì)算得到的屬性作為關(guān)系的屬性,因?yàn)槟菍a(chǎn)生傳遞依賴(lài)。如平均成績(jī)、總成績(jī)、合計(jì)、年齡、工齡等屬性。例:CreateviewresultView(學(xué)號(hào),姓名,性別,語(yǔ)文,數(shù)學(xué),英語(yǔ),物理,生物,化學(xué),平均成績(jī),總成績(jī))asselect學(xué)號(hào),姓名,性別,語(yǔ)文,數(shù)學(xué),英語(yǔ),物理,生物,化學(xué),(語(yǔ)文+數(shù)學(xué)+英語(yǔ)+物理+生物+化學(xué))/6,語(yǔ)文+數(shù)學(xué)+英語(yǔ)+物理+生物+化學(xué)fromresult4.4.2修改視圖內(nèi)容通常需要對(duì)視圖進(jìn)行修改,當(dāng)然一般是修改由基本表中非主屬性所對(duì)應(yīng)的列,若要修改主屬性所對(duì)應(yīng)的列,最好到各自的基本表中去修改,以便更好地滿(mǎn)足關(guān)系的規(guī)范化和完整性的要求。語(yǔ)句格式:UPDATE[<數(shù)據(jù)庫(kù)名>.<所有者名>.]<視圖名>SET<列名>=<表達(dá)式>,…[FROM<源表名>,…][WHERE<邏輯表達(dá)式>]語(yǔ)句功能:按照一定條件對(duì)當(dāng)前或指定數(shù)據(jù)庫(kù)中的一些列值進(jìn)行修改。語(yǔ)句說(shuō)明:P84(等同習(xí)慣基本表內(nèi)容的語(yǔ)句)語(yǔ)句舉例:P85UPDATE[<數(shù)據(jù)庫(kù)名>.<所有者名>.]<視圖名>SET<列名>=<表達(dá)式>,…[FROM<源表名>,…][WHERE<邏輯表達(dá)式>]UPDATE成績(jī)視圖表SET成績(jī)=80WHERE學(xué)生號(hào)=‘0102005’and課程號(hào)=‘E002’此修改直接反映到基本表中,即把對(duì)應(yīng)的選課關(guān)系中該元組的成績(jī)修改為80,當(dāng)然也就自然反映到存儲(chǔ)文件中。4.4.3修改視圖定義語(yǔ)句格式:ALTERVIEW<視圖名>(<列名>,…)AS<SELECT子句>語(yǔ)句功能:在當(dāng)前數(shù)據(jù)庫(kù)中修改已知視圖的列,它與SELECT子句的查詢(xún)結(jié)果相對(duì)應(yīng)。語(yǔ)句說(shuō)明:P85語(yǔ)句舉例:P85Createview學(xué)生視圖(學(xué)生號(hào),姓名)asselect學(xué)生號(hào),姓名from學(xué)生Alterview學(xué)生視圖(學(xué)生號(hào),專(zhuān)業(yè))asselect學(xué)生號(hào),專(zhuān)業(yè)from學(xué)生4.4.4刪除視圖語(yǔ)句格式:DROPVIEW<視圖名>語(yǔ)句功能:刪除當(dāng)前數(shù)據(jù)庫(kù)中的一個(gè)視圖。語(yǔ)句舉例:P85Dropview成績(jī)視圖表第4章結(jié)構(gòu)化查詢(xún)語(yǔ)言--SQL4.5SQL查詢(xún)SQL集數(shù)據(jù)定義、數(shù)據(jù)更新、數(shù)據(jù)控制、數(shù)據(jù)查詢(xún)等功能為一體。SQL查詢(xún)對(duì)應(yīng)SELECT語(yǔ)句。4.5.1SELECT語(yǔ)句格式:SELECT[ALL|DISTINCT]{<表達(dá)式1>[[AS]<列名1>][,<表達(dá)式2>[[AS]<列名2>]…|*|<表別名>.*}[INTO<基本表名>]FROM<表名1>[[AS]<表別名1>][,<表名2>[[AS]<表別名2>]…][WHERE<邏輯表達(dá)式1>][GROUPBY<分組列名1>[,<分組列名2>…][HAVING<邏輯表達(dá)式2>][ORDERBY<排序列名1>[ASC|DESC][,<排序列名2>[ASC|DESC]…]]語(yǔ)句功能:根據(jù)一個(gè)或多個(gè)表按條件進(jìn)行查詢(xún),產(chǎn)生出一個(gè)新表,該表被顯示出來(lái)或者被命名保存起來(lái)。在查詢(xún)語(yǔ)句中,包含了關(guān)系運(yùn)算:選擇、投影、連接、笛卡兒積、并。SELECT…實(shí)現(xiàn)投影運(yùn)算FROM…實(shí)現(xiàn)連接運(yùn)算[WHERE…]實(shí)現(xiàn)選擇運(yùn)算省略連接條件實(shí)現(xiàn)笛卡兒積運(yùn)算在兩個(gè)查詢(xún)語(yǔ)句之間使用UNION關(guān)鍵字實(shí)現(xiàn)并運(yùn)算4.5.2SELECT選項(xiàng):在該選項(xiàng)中,ALL/DISTINC為任選項(xiàng)。語(yǔ)句舉例:P87首先創(chuàng)建兩個(gè)基本表Createdatabase商品庫(kù)Use商品庫(kù)Createtable商品表1(商品代號(hào)…)Createtable商品表2(商品代號(hào)…)另一個(gè)數(shù)據(jù)庫(kù)為教學(xué)庫(kù),包含學(xué)生、課程、選課三個(gè)基本表。注意:使用時(shí),要把它設(shè)為當(dāng)前庫(kù)。例4-1從商品庫(kù)的商品表1中查詢(xún)出每種商品的分類(lèi)名。SELECT分類(lèi)名FROM商品表1或SELECTALL分類(lèi)名FROM商品表1查詢(xún)結(jié)果為:分類(lèi)名電冰箱電視機(jī)電視機(jī)電視機(jī)空調(diào)器微波爐洗衣機(jī)洗衣機(jī)例4-2從商品庫(kù)的商品表1中查詢(xún)出所有商品的不同分類(lèi)名。SELECTDISTINCT分類(lèi)名FROM商品表1查詢(xún)結(jié)果為:分類(lèi)名電冰箱電視機(jī)空調(diào)器微波爐洗衣機(jī)SELECT[ALL|DISTINCT]{<表達(dá)式1>[[AS]<列名1>][,<表達(dá)式2>[[AS]<列名2>]…|*|<表別名>.*}…表達(dá)式1,表達(dá)式2為計(jì)算目的表中相應(yīng)列值??梢酝ㄟ^(guò)AS選項(xiàng)定義對(duì)應(yīng)的列名?!?”表明所有的字段。例4-3從商品庫(kù)的商品表1中查詢(xún)出分類(lèi)名為“電視機(jī)”的所有商品。SELECT*;FROM商品表1;Where分類(lèi)名=“電視機(jī)”查詢(xún)結(jié)果為:商品代號(hào)分類(lèi)名單價(jià)數(shù)量DJS-120電視機(jī)1865.015DJS-180電視機(jī)2073.010DJS-340電視機(jī)3726.05例4-4從商品庫(kù)的商品表1中查詢(xún)出單價(jià)低于2000元的每一種商品的商品代號(hào)、分類(lèi)名和單價(jià)。SELECT商品代號(hào),分類(lèi)名,單價(jià)FROM商品表1where單價(jià)<2000查詢(xún)結(jié)果為:商品代號(hào)分類(lèi)名單價(jià)DBX-134電冰箱1456.0DSJ-120電視機(jī)1865.0WBL-6微波爐640.0XYJ-13洗衣機(jī)468.0XYJ-20洗衣機(jī)873.0例4-5從商品庫(kù)的商品表1中查詢(xún)出每一種商品的價(jià)值。SELECT商品代號(hào),單價(jià)*數(shù)量as價(jià)值FROM商品表1查詢(xún)結(jié)果為:商品代號(hào)價(jià)值DBX-13411648.0DSJ-12027975.0DJS-18020730.0DSJ-34018630.0KTQ-1233600.0WBL-66400.0XYJ-139360.0XYJ-2010476.0例4-6從商品庫(kù)的商品表1和商品表2中查詢(xún)出按商品代號(hào)進(jìn)行自然連接的結(jié)果。SELECT商品表1.*,產(chǎn)地,品牌FROM商品表1,商品表2Where商品表1.商品代號(hào)=商品表2.商品代號(hào)查詢(xún)結(jié)果為:P91商品代號(hào)分類(lèi)名單價(jià)數(shù)量產(chǎn)地品牌DBX-134電冰箱1456.08北京雪花DSJ-120電視機(jī)1865.015南京熊貓…在SELECT語(yǔ)句中,使用的列函數(shù)有:COUNT([ALL|DISTINCT]<列名>|*)MAX(<列名>)求出對(duì)應(yīng)的列的最大值MIN(<列名>)(數(shù)值、字符、日期)AVG(<列名>)SUM(<列名>)例4-7從商品庫(kù)的商品表1中查詢(xún)出不同分類(lèi)名的個(gè)數(shù)。SELECTCOUNT(DISTINCT分類(lèi)名)AS分類(lèi)種數(shù)FROM商品表1查詢(xún)結(jié)果為:分類(lèi)種數(shù)5例4-8從商品庫(kù)的商品表1中查詢(xún)出所有商品的最大數(shù)量、最小數(shù)量、平均數(shù)量及數(shù)量總和。SELECTmax(數(shù)量)as最大數(shù)量,min(數(shù)量)as最小數(shù)量,avg(數(shù)量)as平均數(shù)量,sum(數(shù)量)as總和FROM商品表1查詢(xún)結(jié)果為:最大數(shù)量最小數(shù)量平均數(shù)量總和2051192例4-9從商品庫(kù)的商品表1中查詢(xún)出分類(lèi)名為“電視機(jī)”的商品的種數(shù)、最高價(jià)、最低價(jià)及平均價(jià)。SELECTcount(*)as種數(shù),max(單價(jià))as最高價(jià),min(單價(jià))as最低價(jià),avg(單價(jià))as平均價(jià)FROM商品表1WHERE分類(lèi)名=“電視機(jī)”查詢(xún)結(jié)果為:種數(shù)最高價(jià)最低價(jià)平均價(jià)

33726.01865.02554.6666666666665例4-10從商品庫(kù)的商品表1中查詢(xún)出所有商品的最高價(jià)值、最低價(jià)值及總價(jià)值。SELECTmax(單價(jià)*數(shù)量)as最高價(jià)值,min(單價(jià)*數(shù)量)as最低價(jià)值,sum(單價(jià)*數(shù)量)as總價(jià)值FROM商品表1查詢(xún)結(jié)果為:最高價(jià)值最低價(jià)值總價(jià)值33600.06400.0138819.04.5.3FROM選項(xiàng):SELECT…FROM<表名1>[[AS]<表別名1>][,<表名2>[[AS]<表別名2>]…][WHERE<邏輯表達(dá)式1>]…該選項(xiàng)提供用于查詢(xún)的基本表和視圖,并可以為每個(gè)基本表起一個(gè)別名,此別名只限于該SELECT語(yǔ)句中使用,作為列名的前綴限定符,以區(qū)別于其他源表中的同名列,若沒(méi)有一個(gè)源表定義別名,則使用表名作為所屬列的前綴限定符(不定義也行)。當(dāng)一個(gè)源表的表名較長(zhǎng)時(shí),可起一個(gè)簡(jiǎn)單的別名,以方便在其他選項(xiàng)中使用。若基本表和視圖不在當(dāng)前數(shù)據(jù)庫(kù)中,則必須加上數(shù)據(jù)庫(kù)名和使用者名作為前綴。例4-11從教學(xué)庫(kù)中查詢(xún)出每個(gè)學(xué)生選修每門(mén)課程的學(xué)生號(hào)、姓名、課程號(hào)、課程名、成績(jī)等數(shù)據(jù)。SELECTx.學(xué)生號(hào),x.姓名,y.課程號(hào),y.課程名,z.成績(jī),FROM學(xué)生x,課程y,選課zWherex.學(xué)生號(hào)=z.學(xué)生號(hào)andy.課程號(hào)=z.課程號(hào)查詢(xún)結(jié)果為:p93例4-11從教學(xué)庫(kù)中查詢(xún)出每個(gè)學(xué)生選修每門(mén)課程的學(xué)生號(hào)、姓名、課程號(hào)、課程名、成績(jī)等數(shù)據(jù)。不使用表別名:SELECT學(xué)生.學(xué)生號(hào),姓名,課程.課程號(hào),課程名,選課.成績(jī),FROM學(xué)生,課程,選課Where學(xué)生.學(xué)生號(hào)=選課.學(xué)生號(hào)and課程.課程號(hào)=選課.課程號(hào)查詢(xún)結(jié)果同為:p93學(xué)生號(hào)姓名課程號(hào)課程名成績(jī)0101001王明C001C++語(yǔ)言78…4.5.4WHERE選項(xiàng):SELECT…FROM…[WHERE<邏輯表達(dá)式>]…該子句的功能是指定源表之間的連接條件和對(duì)記錄的篩選條件。在該選項(xiàng)中的<邏輯表達(dá)式>既可包含連接條件,也可以包含篩選條件,還可以同時(shí)包含著兩種條件(用AND連接成)。當(dāng)系統(tǒng)執(zhí)行SELECT時(shí),若WHERE中的邏輯表達(dá)式中的連接或是選擇的運(yùn)算次序,完全由系統(tǒng)自動(dòng)進(jìn)行處理。連接條件中最常用的是等值連接。若在命令的WHERE選項(xiàng)中省略連接條件,則表示將每個(gè)源表按笛卡兒積連接。篩選條件的作用是從源表或連接后生成的中間表中選擇出所需要的行。篩選條件的一般比較式的格式:<表達(dá)式1><比較符><表達(dá)式2>例4-12從商品表1中查詢(xún)出單價(jià)大于1500,同時(shí)數(shù)量大于等于10的商品。SELECT商品代號(hào),單價(jià),數(shù)量FROM商品表1Where單價(jià)>1500and數(shù)量>=10查詢(xún)結(jié)果為:p94商品代號(hào)單價(jià)數(shù)量DSJ-1201865.015DSJ-1802073.010KTQ-122800.012例4-13從商品庫(kù)中查詢(xún)出產(chǎn)地為南京或無(wú)錫的所有商品的商品代號(hào)、分類(lèi)名、產(chǎn)地和品牌。SELECTx.商品代號(hào),分類(lèi)名,產(chǎn)地,品牌FROM商品表1asx,商品表2asyWherex.商品代號(hào)=y.商品代號(hào)and(產(chǎn)地=‘南京’or產(chǎn)地=‘無(wú)錫’)查詢(xún)結(jié)果為:p94商品代號(hào)分類(lèi)名產(chǎn)地品牌DSJ-120電視機(jī)南京熊貓DSJ-180電視機(jī)南京熊貓KTQ-12空調(diào)器無(wú)錫春蘭XYJ-13洗衣機(jī)無(wú)錫小天鵝例4-14從教學(xué)庫(kù)中查詢(xún)出選修至少兩門(mén)課程的學(xué)生學(xué)號(hào)。SELECTdistinctc1.學(xué)生號(hào)FROM選課c1,選課c2

Wherec1.學(xué)生號(hào)=c2.學(xué)生號(hào)andc1.課程號(hào)<>C2.課程號(hào)對(duì)同一個(gè)表,定義了c1和c2別名,作為兩個(gè)不同的表使用。前一個(gè)比較式作為連接條件,后一個(gè)比較式作為篩選條件學(xué)生號(hào)查詢(xún)結(jié)果為:p9501010010202003例4-15從教學(xué)庫(kù)中查詢(xún)出選修了課程名為“操作系統(tǒng)”課程的每個(gè)學(xué)生的姓名。SELECT姓名(學(xué)生.姓名)FROM學(xué)生x,課程y,選課z

Wherex.學(xué)生號(hào)=z.學(xué)生號(hào)andy.課程號(hào)=z.課程號(hào)and課程名=“操作系統(tǒng)”篩選條件:課程.課程名=“操作系統(tǒng)”。連接條件:x.學(xué)生號(hào)=z.學(xué)生號(hào)andy.課程號(hào)=z.課程號(hào)查詢(xún)結(jié)果為:p95姓名王明張魯在新版的SQL中,已經(jīng)把查詢(xún)連接條件從WHERE選項(xiàng)中轉(zhuǎn)移到FROM選項(xiàng)中。在FROM選項(xiàng)中的語(yǔ)法格式為:(隱含雙重循環(huán))中間連接:FROM<表名1>INNERJION<表名2>ON<表名1>.<連接列名1><比較符><表名2>.<連接列名2>(一般的連接)左連接:FROM<表名1>LEFT[OUTER]JION<表名2>ON<表名1>.<連接列名1><比較符><表名2>.<連接列名2>右連接:FROM<表名1>RIGHT[OUTER]JION<表名2>ON<表名1>.<連接列名1><比較符><表名2>.<連接列名2>P95解釋例4-16從教學(xué)庫(kù)中查詢(xún)出所有學(xué)生的選課情況,要求沒(méi)選修任何課程的學(xué)生信息也反映出來(lái)。SELECT*FROM學(xué)生left

join選課on學(xué)生.學(xué)生號(hào)=選課.學(xué)生號(hào)

查詢(xún)結(jié)果為:p96學(xué)生號(hào)姓名性別專(zhuān)業(yè)學(xué)生號(hào)課程號(hào)成績(jī)0101001王明男計(jì)算機(jī)0101001C001780101001王明男計(jì)算機(jī)0101001C004620102005劉芹女電子0102005E00273…若要查詢(xún)出所有課程被學(xué)生選修的情況。SELECT*FROM課程

leftjoin(選課innerjoin學(xué)生on學(xué)生.學(xué)生號(hào)=選課.學(xué)生號(hào))on課程.課程號(hào)=選課.課程號(hào)該語(yǔ)句首先實(shí)現(xiàn)選課關(guān)系和學(xué)生關(guān)系的中間連接,產(chǎn)生出中間表,然后作為右表再同課程關(guān)系進(jìn)行左連接。查詢(xún)結(jié)果為:p96課程號(hào)課程名課程學(xué)分學(xué)生號(hào)課程號(hào)成績(jī)學(xué)生號(hào)姓名性別專(zhuān)業(yè)C001C++語(yǔ)言40101001C001780101001王明男計(jì)算機(jī)…若要從教學(xué)庫(kù)中查詢(xún)出所有電子專(zhuān)業(yè)的學(xué)生選課的全部情況。SELECT*FROM課程innerjoin(選課innerjoin學(xué)生on學(xué)生.學(xué)生號(hào)=選課.學(xué)生號(hào))on課程.課程號(hào)=選課.課程號(hào)Where專(zhuān)業(yè)=“電子”它與下面的傳統(tǒng)查詢(xún)語(yǔ)句等效。SELECT*FROM課程,選課,學(xué)生Where學(xué)生.學(xué)生號(hào)=選課.學(xué)生號(hào)and課程.課程號(hào)=選課.課程號(hào)and專(zhuān)業(yè)=“電子”用于查詢(xún)語(yǔ)句中的專(zhuān)門(mén)比較式又叫判斷式,它實(shí)現(xiàn)單值與集合數(shù)據(jù)之間的比較。常用以下六種格式。1.格式之一<列名><比較符>ALL(<子查詢(xún)>)<子查詢(xún)>是一條完整的SELECT語(yǔ)句,被嵌套在該比較式中使用。當(dāng)<子查詢(xún)>的查詢(xún)結(jié)果中的每一個(gè)值都滿(mǎn)足所給的比較條件時(shí),此比較式的值才為真,否則為假。1.格式之一<列名><比較符>ALL(<子查詢(xún)>)在查詢(xún)語(yǔ)句中出現(xiàn)的每個(gè)子查詢(xún),同樣可以對(duì)一個(gè)或多個(gè)表進(jìn)行查詢(xún),并且它還能夠使用在外層查詢(xún)上所指定的源表中的列,不過(guò)它必須帶有表名前綴,否則將被視為子查詢(xún)中所指定源表中的列。在含有子查詢(xún)的SELECT語(yǔ)句執(zhí)行時(shí),當(dāng)執(zhí)行到WHERE選項(xiàng)需要用到子查詢(xún)結(jié)果時(shí),則該子查詢(xún)將被立即執(zhí)行。在一個(gè)子查詢(xún)的WHERE選項(xiàng)中還可以使用SELECT語(yǔ)句,它是該子查詢(xún)的子查詢(xún)。也就是說(shuō),SELECT命令能夠嵌套使用,嵌套的層次不受限制,通常只需嵌套二至三層就可以滿(mǎn)足應(yīng)用的需要了。例4-17SELECT*FROM商品表1Where單價(jià)>all(select單價(jià)from商品表1where分類(lèi)名=‘洗衣機(jī)’)該語(yǔ)句從商品表1中查詢(xún)出單價(jià)比分類(lèi)名為‘洗衣機(jī)’的所有商品的單價(jià)都高的商品。執(zhí)行此語(yǔ)句時(shí),每次取一個(gè)商品記錄的單價(jià)字段的值同子查詢(xún)結(jié)果(每次子查詢(xún)結(jié)果都相同,即為468和873。P87)進(jìn)行比較,若它大于查詢(xún)結(jié)果中的所有值,則就把該記錄查詢(xún)出來(lái)。查詢(xún)結(jié)果P98。例4-18SELECTx.*,品牌FROM商品表1xinnerjoin商品表2yonx.商品代號(hào)=y.商品代號(hào)Where數(shù)量<all(select數(shù)量from商品表1where分類(lèi)名=‘洗衣機(jī)’or分類(lèi)名=‘微波爐’)該語(yǔ)句按商品代號(hào)連接商品表1和商品表2,查詢(xún)出數(shù)量小于分類(lèi)名為‘洗衣機(jī)’或‘微波爐’的每一個(gè)商品數(shù)量的所有元組。查詢(xún)結(jié)果P98。2.格式之二<列名><比較符>{ANY|SOME}(<子查詢(xún)>)當(dāng)<子查詢(xún)>的查詢(xún)結(jié)果中的任一個(gè)值滿(mǎn)足所給的比較條件時(shí),此比較式的值才為真。例4-19從商品庫(kù)中查詢(xún)出產(chǎn)地與品牌為“春蘭”的商品的產(chǎn)地相同的所有商品的商品代號(hào)、分類(lèi)名、品牌、產(chǎn)地等屬性的值。SELECTx.商品代號(hào),x.分類(lèi)名,y.品牌,y.產(chǎn)地FROM商品表1xinnerjoin商品表2yonx.商品代號(hào)=y.商品代號(hào)Where產(chǎn)地=some(select產(chǎn)地from商品表2where品牌=‘春蘭’)查詢(xún)結(jié)果P99。例4-20從教學(xué)庫(kù)中查詢(xún)出選修了課程名為“C++語(yǔ)言”的所有學(xué)生的姓名和成績(jī)。該查詢(xún)采用雙重查詢(xún)語(yǔ)句處理。在外查詢(xún)中需投影出學(xué)生.姓名和選課.成績(jī),所以需要對(duì)學(xué)生和選課關(guān)系進(jìn)行等值連接,該查詢(xún)的篩選條件是選課關(guān)系的課程號(hào)必須等于“C++語(yǔ)言”課程的課程號(hào),而“C++語(yǔ)言”課程的課程號(hào)可以通過(guò)對(duì)課程關(guān)系的子查詢(xún)求出。該查詢(xún)語(yǔ)句為:例4-20從教學(xué)庫(kù)中查詢(xún)出選修了課程名為“C++語(yǔ)言”的所有學(xué)生的姓名和成績(jī)。SELECT姓名,成績(jī)FROM學(xué)生xinnerjoin選課yonx.學(xué)生號(hào)=y.學(xué)生號(hào)Where課程號(hào)=any(select課程號(hào)from課程where課程名=‘C++語(yǔ)言’)查詢(xún)結(jié)果P99。例4-21從商品庫(kù)中查詢(xún)出所有商品中單價(jià)最高的商品和單價(jià)最低的商品。SELECT*FROM商品表1Where單價(jià)=any(selectmax(單價(jià))from商品表1)or單價(jià)=any(selectmin(單價(jià))from商品表1)

此查詢(xún)只涉及到商品表1,要查詢(xún)出單價(jià)最高和單價(jià)最低的商品,首先必須知道單價(jià)最高值和最低值,然后用每種商品的單價(jià)同其比較,符合則選擇出來(lái)。采用雙重查詢(xún)實(shí)現(xiàn)。此查詢(xún)的篩選條件是一個(gè)或邏輯表達(dá)式,其中每個(gè)比較式都帶有子查詢(xún)。查詢(xún)結(jié)果P100。例4-21從商品庫(kù)中查詢(xún)出所有商品中單價(jià)最高的商品和單價(jià)最低的商品。此查詢(xún)也可以寫(xiě)成:SELECT*FROM商品表1Where單價(jià)=any(selectmax(單價(jià))from商品表1)union

單價(jià)=any(selectmin(單價(jià))from商品表1)

該查詢(xún)中的子查詢(xún)是兩個(gè)查詢(xún)的并。查詢(xún)結(jié)果P100。3.格式之三<列名>[NOT]BETWEEN<開(kāi)始值>AND<結(jié)束值>與下面的邏輯表達(dá)式等效:<列名>>=<開(kāi)始值>AND<列名><=<結(jié)束值>(不選NOT)<列名><<開(kāi)始值>OR<列名>><結(jié)束值>(選NOT)例4-22從商品表1中查詢(xún)出單價(jià)在1000到2000元之間的所有商品。SELECT*FROM商品表1Where單價(jià)between1000and2000查詢(xún)結(jié)果P100。4.格式之四[NOT]EXISTS(<子查詢(xún)>)當(dāng)<子查詢(xún)>的查詢(xún)結(jié)果中至少存在一個(gè)元組時(shí),表明查詢(xún)結(jié)果非空,此判斷式為真。帶NOT關(guān)鍵字,則相反。表明查詢(xún)結(jié)果為空,此判斷式為真。例4-23從教學(xué)庫(kù)中查詢(xún)出選修至少一門(mén)課程的所有學(xué)生。SELECT*FROM學(xué)生Whereexits(select*from選課where選課.學(xué)生號(hào)=學(xué)生.學(xué)生號(hào))查詢(xún)結(jié)果P100。若要查詢(xún)出沒(méi)有選修任何課程的學(xué)生,只要在該查詢(xún)語(yǔ)句中加入NOT關(guān)鍵字。例4-24從教學(xué)庫(kù)中查詢(xún)出與姓名為“王明”的學(xué)生選課至少有一門(mén)相同的所有學(xué)生。SELECT*FROM學(xué)生xWherex.姓名<>“王明”andexits(selecty.課程號(hào)from選課ywherey.學(xué)生號(hào)=x.學(xué)生號(hào)andy.課程號(hào)=any(selectw.課程號(hào)from學(xué)生z,選課wwherez.學(xué)生號(hào)=w.學(xué)生號(hào)andz.姓名=‘王明’))查詢(xún)結(jié)果P100。若在該查詢(xún)語(yǔ)句中加入NOT關(guān)鍵字,則查詢(xún)出與王明同學(xué)的選課完全不同的所有學(xué)生。此查詢(xún)也可通過(guò)如下語(yǔ)句實(shí)現(xiàn)。SELECT*FROM學(xué)生xWherex.姓名<>‘王明’andx.學(xué)生號(hào)=any(selecty.學(xué)生號(hào)from選課y,選課zwherey.課程號(hào)=z.課程號(hào)andz.學(xué)生號(hào)=any(selectw.學(xué)生號(hào)from學(xué)生wwherew.姓名=‘王明’))例4-25從教學(xué)庫(kù)中查詢(xún)出選修了課程表中所有課程的學(xué)生。SELECT*FROM學(xué)生Wherenotexits(select*from課程wherenotexits(select*from選課where學(xué)生.學(xué)生號(hào)=選課.學(xué)生號(hào)and課程.課程號(hào)=選課.課程號(hào)))查詢(xún)結(jié)果P102。5.格式之五<列名>[NOT]IN{(<常量表>)|(<子查詢(xún)>)}當(dāng)<列名>所指定列的當(dāng)前值包含在由<常量表>所給定的值之內(nèi)時(shí),則此判斷式為真,否則為假。若在IN關(guān)鍵字后面不是使用<常量表>,而是使用<子查詢(xún)>,則當(dāng)由<列名>所指定列的當(dāng)前值包含在子查詢(xún)結(jié)果之中時(shí),判斷式為真,否則為假。若選用了NOT關(guān)鍵字,則判斷結(jié)果正好相反。該格式若為“<列名>IN(<子查詢(xún)>)”,則與“<列名>=any(<子查詢(xún)>)”格式等價(jià)。例4-26從學(xué)生表中查詢(xún)出專(zhuān)業(yè)為計(jì)算機(jī)、電氣、通信的所有學(xué)生。SELECT*FROM學(xué)生Where專(zhuān)業(yè)in(‘計(jì)算機(jī)’,‘電氣’,‘通信’)查詢(xún)結(jié)果P102。例4-27從教學(xué)庫(kù)中查詢(xún)出選修了課程名為“操作系統(tǒng)”的所有學(xué)生。SELECT*FROM學(xué)生Where學(xué)生號(hào)in(select學(xué)生號(hào)from選課,課程where選課.課程號(hào)=課程.課程號(hào)and課程名=‘操作系統(tǒng)’)查詢(xún)結(jié)果P103。6.格式之六<字符型列名>[NOT]LIKE<字符表達(dá)式>當(dāng)<字符型列名>的當(dāng)前值與<字符型表達(dá)式>的值相匹配時(shí),此判斷式為真。帶NOT關(guān)鍵字,則相反。通常所使用的<字符型表達(dá)式>為字符常量,若在其中使用下劃線(xiàn)(—)則表示能和任何一個(gè)字符匹配,若使用百分號(hào)(%)則表示能和任意多個(gè)(含零個(gè))任意字符相匹配。例4-28從商品表1中查詢(xún)出商品代號(hào)以字符串“dsj”開(kāi)頭”的所有商品。SELECT*FROM商品表1Where商品代號(hào)like‘dsj%’查詢(xún)結(jié)果P103。SELECT*FROM商品表1Where商品代號(hào)like‘dsj_1%’4.5.5GROUPBY選項(xiàng)該選項(xiàng)中的<分組列名1><分組列名2>等必須是出現(xiàn)在SELECT選項(xiàng)中的被投影的表達(dá)式所指定的列名。語(yǔ)句執(zhí)行時(shí)將按該選項(xiàng)中給定的分組列(通常只有一個(gè))對(duì)連接和選擇后得到的所有元組進(jìn)行分組,使得分組列值相同的元組為一組,形成結(jié)果表中的一個(gè)元組。當(dāng)選項(xiàng)中含有多個(gè)分組列時(shí),則首先按第一個(gè)列值進(jìn)行分組,若第一個(gè)列值相同,再按第二個(gè)列值進(jìn)行分組。通常在SELECT選項(xiàng)中使用列函數(shù)對(duì)列值相同的每一組進(jìn)行有關(guān)統(tǒng)計(jì)。例4-29從學(xué)生表中查詢(xún)出每個(gè)專(zhuān)業(yè)的學(xué)生數(shù)。SELECT專(zhuān)業(yè)as專(zhuān)業(yè)名,count(專(zhuān)業(yè))學(xué)生數(shù)FROM學(xué)生Groupby專(zhuān)業(yè)該語(yǔ)句首先按學(xué)生專(zhuān)業(yè)屬性的值進(jìn)行分組,然后對(duì)每個(gè)分組選擇并投影出一個(gè)元組,該元組包含專(zhuān)業(yè)值和該專(zhuān)業(yè)值的個(gè)數(shù)。查詢(xún)結(jié)果P103。例4-30從教學(xué)庫(kù)中查詢(xún)出每個(gè)學(xué)生的學(xué)生號(hào)、姓名及所選課程的門(mén)數(shù)。SELECTx.學(xué)生號(hào),y.姓名,count(x.學(xué)生號(hào))選課門(mén)數(shù)FROM選課x,學(xué)生yWherex.學(xué)生號(hào)=y.學(xué)生號(hào)Groupbyx.學(xué)生號(hào),y.姓名查詢(xún)結(jié)果P104。學(xué)生號(hào)姓名選課門(mén)數(shù)例4-31從商品表1中查詢(xún)出每一類(lèi)(即分類(lèi)名相同)商品的最高價(jià)、最低價(jià)和平均價(jià)。SELECT分類(lèi)名,max(單價(jià))as最高價(jià),min(單價(jià))as最低價(jià),avg(單價(jià))as平均價(jià)FROM商品表1Groupby分類(lèi)名查詢(xún)結(jié)果P105。分類(lèi)名最高價(jià)最低價(jià)平均價(jià)4.5.6HAVING選項(xiàng)該選項(xiàng)中的<邏輯表達(dá)式>是一個(gè)篩選條件。該選項(xiàng)通常跟在GROUPBY子句后面用來(lái)從分組統(tǒng)計(jì)中篩選出部分統(tǒng)計(jì)結(jié)果,因此該選項(xiàng)中的邏輯表達(dá)式通常帶有字段函數(shù)。例4-32從學(xué)生表中查詢(xún)出專(zhuān)業(yè)的學(xué)生數(shù)多于1人的專(zhuān)業(yè)名及人數(shù)。SELECT

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論