安卓課堂知識(shí)_第1頁(yè)
安卓課堂知識(shí)_第2頁(yè)
安卓課堂知識(shí)_第3頁(yè)
安卓課堂知識(shí)_第4頁(yè)
安卓課堂知識(shí)_第5頁(yè)
已閱讀5頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

6.1簡(jiǎn)單select查詢6.2select語(yǔ)句的統(tǒng)計(jì)功能6.3select語(yǔ)句中的多表連接6.4子查詢第6章數(shù)據(jù)查詢2/3/20231教學(xué)要求:通過(guò)本章學(xué)習(xí),讀者應(yīng)掌握以下內(nèi)容:利用SELECT語(yǔ)句進(jìn)行單表查詢的方法利用SELECT語(yǔ)句進(jìn)行多表連接查詢的方法嵌套查詢的方法2/3/202326.1簡(jiǎn)單SELECT語(yǔ)句6.1.1SELECT的語(yǔ)法格式SELECT語(yǔ)句的基本語(yǔ)法格式如下:SELECT<字段列表> [INTO新表名] FROM<表名/視圖名列表> [WHERE條件表達(dá)式] [GROUPBY列名列表] [HAVING條件表達(dá)式] [ORDERBY列名1[ASC|DESC],列名2[ASC|DESC],...,列名n[ASC|DESC]][COMPUTE行聚合函數(shù)名(統(tǒng)計(jì)表達(dá)式)[,…n][BY分類表達(dá)式[,…n]]]2/3/20233其中各子名說(shuō)明如下:(1)字段列表用于指出要查詢的字段,也就是查詢結(jié)果中包含的字段的名稱。(2)INTO子句用于創(chuàng)建一個(gè)新表,并將查詢結(jié)果保存到這個(gè)新表中。(3)FROM子句用于指出所要進(jìn)行查詢的數(shù)據(jù)來(lái)源,即來(lái)源于哪些表或視圖的名稱。(4)WHERE子句用于指出查詢數(shù)據(jù)時(shí)要滿足的檢索條件。(5)GROUPBY子句用于對(duì)查詢結(jié)果分組。(6)ORDERBY子句用于對(duì)查詢結(jié)果排序。2/3/20234SELECT語(yǔ)句的功能如下:從FROM列出的數(shù)據(jù)源表中,找出滿足WHERE檢索條件的記錄,按SELECT子句的字段列表輸出查詢結(jié)果表,在查詢結(jié)果表中可進(jìn)行分組與排序。說(shuō)明:在SELECT語(yǔ)句中SELECT子句與FROM子句是不可少的,其余的是可選的。2/3/202356.1.2基本的SELECT語(yǔ)句SELECT語(yǔ)句的基本形式如下: SELECT<字段列表> FROM<表名列表> [WHERE查詢條件]1.選擇表中若干列USExsglGOSELECT學(xué)號(hào),姓名FROMxs2/3/202362.查詢表中全部列(*)將表中所有屬性都選出來(lái),可以有兩種方法。一種方法是在SELECT命令后面列出所有列名。如果列的顯示順序與其在基表中的順序相同,也可以簡(jiǎn)單地將<字段列表>簡(jiǎn)寫(xiě)為“*”。USExsglGOSELECT*FROMkcGO2/3/202373.設(shè)置字段別名T-SQL提供了在SELECT語(yǔ)句中操作別名的方法。用戶可以根據(jù)實(shí)際需要對(duì)查詢數(shù)據(jù)的列標(biāo)題進(jìn)行修改,或者為沒(méi)有標(biāo)題的列加上臨時(shí)標(biāo)題。其語(yǔ)法格式為:列表達(dá)式[as]別名或:別名=列表達(dá)式【例6.3】查詢xsgl數(shù)據(jù)庫(kù)的kc表,列出表中的所有記錄,每個(gè)記錄名稱依次為課程編號(hào),課程名稱,課程學(xué)分及課程時(shí)數(shù)。USExsglGOSELECT課程號(hào)AS課程編號(hào),課程名AS課程名稱,學(xué)分AS課程學(xué)分,學(xué)時(shí)數(shù)AS課程時(shí)數(shù)FROMkc2/3/202384.查詢經(jīng)過(guò)計(jì)算的值SELECT子句的<字段列表>不僅可以是表中的屬性列,也可以是表達(dá)式,包括字符串常量、函數(shù)等。其語(yǔ)法格式為:計(jì)算字段名=表達(dá)式【例6.4】查詢所有學(xué)生的學(xué)號(hào),姓名及年齡。USExsglGOSELECT學(xué)號(hào),姓名,年齡=DATEDIFF(YY,出生時(shí)間,GETDATE())FROMxsGO2/3/202395.返回全部記錄(ALL)要返回所有記錄可在SELECT后使用ALL,ALL是默認(rèn)設(shè)置,因此也可以省略?!纠?.5】查詢XS表中所有學(xué)生專業(yè)。USExsglGOSELECT專業(yè)FROMxsGO2/3/2023106.過(guò)濾重復(fù)記錄(DISTINCT)在例6.5的執(zhí)行結(jié)果集中顯示重復(fù)行。如果讓重復(fù)行只顯示一次,需在SELECT子句中用DISTINCT指定在結(jié)果集中只能顯示唯一行。【例6.6】查詢xs表中的學(xué)生所在專業(yè)有哪些。(重復(fù)專業(yè)只顯示一次)。USExsglGOSELECTDISTINCT專業(yè)FROMxsGO2/3/2023117.僅返回前面若干條記錄其語(yǔ)法格式如下:SELECT[TOPn︱TOPnPERCENT]列名l[,...n]FROM表名其中:TOPn表示返回最前面的n行,n表示返回的行數(shù)。TOPnPERCENT表示返回的最前面的n%行?!纠?.7】查詢xs表中前5條記錄USExsglGOSELECTTOP5*FROMxsGO2/3/202312【例6.8】查詢XS表中前面10%行記錄USExsglGOSELECTTOP10PERCENT*FROMxsGO2/3/2023136.1.3使用INTO子句使用INTO子句允許用戶定義一個(gè)新表,并且把SELECT子句的數(shù)據(jù)插入到新表中,其語(yǔ)法格式如下。SELECT<字段列表> INTO新表名 FROM<表名列表> WHERE查詢條件使用INTO子句插入數(shù)據(jù)時(shí),應(yīng)注意以下幾點(diǎn):(1)新表不能存在,否則會(huì)產(chǎn)生錯(cuò)誤信息。(2)新表中的列和行是基于查詢結(jié)果集的。(3)使用該子句必須在目的數(shù)據(jù)庫(kù)中具有CREATETABLE權(quán)限。(4)如果新表名稱的開(kāi)頭為“#”,則生成的是臨時(shí)表。注意:使用INTO子句,通過(guò)在WHERE子句中FALSE條件,可以創(chuàng)建一個(gè)和源表結(jié)構(gòu)相同的空表。2/3/202314【例6.9】創(chuàng)建一個(gè)和xs表結(jié)構(gòu)相同的xs_new表。USExsglGOSELECT*INTOxs_newFROMxsWHERE6>8設(shè)置“WHERE6>8”這樣一個(gè)明顯為邏輯否的條件的目的是為了只保留xs表的結(jié)構(gòu),而不返回任何記錄。2/3/202315【例6.10】查詢所有女生的信息并將結(jié)果保存在名為“女生表”的數(shù)據(jù)表中。USExsglGOSELECT*INTO女生表FROMxsWHERE性別='女'2/3/202316【例6.11】查詢所有男生的信息并將結(jié)果存入臨時(shí)表中。USExsglSELECT*INTO#TEMPDBFROMxsWHERE性別='男'要查看臨時(shí)表的內(nèi)容可用下面的語(yǔ)句:SELECT*FROM#TEMPDB2/3/2023176.1.4使用WHERE子句其語(yǔ)法格式如下:SELECT列名1[,…列名n]FROM表名WHERE條件表達(dá)式使用WHERE子句可以限制查詢的記錄范圍。在使用時(shí),WHERE子句必須緊跟在FROM子句后面。WHERE子句中的條件是—個(gè)邏輯表達(dá)式,其中可以包含的運(yùn)算符見(jiàn)表6-1。2/3/2023182/3/2023191.比較表達(dá)式作查詢條件比較表達(dá)式是邏輯表達(dá)式的一種,使用比較表達(dá)式作為查詢條件的一般表達(dá)形式是:表達(dá)式比較運(yùn)算符表達(dá)式其中:表達(dá)式為:常量、變量和列表達(dá)式的任意有效組合。比較運(yùn)算符包括:=(等于)、<(小于)、>(大于)、<>(不等于)、!>(不大于)、!<(不小于)、>=(大于等于)、<=(小于等于)、!=(不等于)。2/3/202320【例6.12】查詢年齡在23歲以下的學(xué)生。USExsglGOSELECT姓名,性別,年齡=DATEDIFF(YEAR,出生時(shí)間,GETDATE())FROMxsWHEREDATEDIFF(YEAR,出生時(shí)間,GETDATE())<=23GO2/3/2023212.邏輯表達(dá)式作查詢條件使用邏輯表達(dá)式作為查詢條件的一般表達(dá)形式是:表達(dá)式1AND|OR表達(dá)式2,或NOT表達(dá)式【例6.13】查詢年齡為23歲且性別為“女”的學(xué)生。USExsglGOSELECT姓名,性別,年齡=DATEDIFF(YEAR,出生時(shí)間,GETDATE())FROMxsWHEREDATEDIFF(YEAR,出生時(shí)間,GETDATE())=23AND性別='女'2/3/2023223.使用(NOT)BETWEEN…AND關(guān)鍵字其語(yǔ)法格式為:表達(dá)式[NOT]BETWEEN表達(dá)式lAND表達(dá)式2謂詞可以用來(lái)查找屬性值在(或不在)指定范圍內(nèi)的元組,其中BETWEEN后是范圍的下限(即低值),AND后是范圍的上限(即高值)。使用BETWEEN限制查詢數(shù)據(jù)范圍時(shí)同時(shí)包括了邊界值,而使用NOTBETWEEN進(jìn)行查詢時(shí)沒(méi)有包括邊界值?!纠?.14】查詢年齡在20到22之間的女學(xué)生的學(xué)號(hào),姓名,年齡。USExsglGOSELECT姓名,性別,年齡=DATEDIFF(YEAR,出生時(shí)間,GETDATE())FROMxsWHEREDATEDIFF(YEAR,出生時(shí)間,GETDATE())BETWEEN20AND22AND性別='女'2/3/2023234.使用IN關(guān)鍵字同BETWEEN關(guān)鍵字一樣,IN的引入也是為了更方便地限制檢索數(shù)據(jù)的范圍,靈活使用IN關(guān)鍵字,可以用簡(jiǎn)潔的語(yǔ)句實(shí)現(xiàn)結(jié)構(gòu)復(fù)雜的查詢。語(yǔ)法格式為:表達(dá)式[NOT]IN(表達(dá)式1,表達(dá)式2[,…表達(dá)式n])如果“表達(dá)式”的值是謂詞IN后面括號(hào)中列出的表達(dá)式1,表達(dá)式2,…表達(dá)式n的值之一,則條件為真?!纠?.15】查詢選修了“a003”和“j003”的學(xué)生的學(xué)號(hào)。USExsglGOSELECTDISTINCT學(xué)號(hào)FROMcjWHERE課程號(hào)IN('a003','j003')GO2/3/2023245.使用LIKE關(guān)鍵字語(yǔ)法格式:表達(dá)式[NOT]LIKE<匹配串>其含義是查找指定的屬性列值與<匹配串>相匹配的元組。<匹配串>可以是一個(gè)完整的字符串,也可以含有通配符。SQLServer提供了以下4種通配符供用戶靈活實(shí)現(xiàn)復(fù)雜的查詢條件。%(百分號(hào)):表示從0到n個(gè)任意字符。_(下劃線):表示單個(gè)的任意字符。[](封閉方括號(hào)):表示方括號(hào)里列出的任意一個(gè)字符。[^]:任意一個(gè)沒(méi)有在方括號(hào)里列出的字符。需要注意的是,以上所有通配符都只有在LIKE子句中才有意義,否則通配符會(huì)被當(dāng)作普通字符處理。2/3/202325【例6.16】查詢姓“張”學(xué)生的學(xué)號(hào)及姓名USExsglGOSELECT學(xué)號(hào),姓名FROMxsWHERE姓名LIKE'張%'GO注意:通配符和字符串必須括在單引號(hào)中。要查找通配符本身時(shí),需將它們用方括號(hào)括起來(lái)。例如:LIKE'[[]'表示要匹配“[”。2/3/2023266.涉及空值的查詢對(duì)于空值(NULL)要用IS進(jìn)行連接,不能用“=”代替?!纠?.17】查詢選修了課程卻沒(méi)有成績(jī)的學(xué)生的學(xué)號(hào)。USExsGOSELECT學(xué)號(hào)FROMcjWHERE成績(jī)ISNULLGO2/3/2023276.1.5使用ORDERBY子句對(duì)查詢的結(jié)果進(jìn)行排序,通過(guò)使用ORDERBY子句實(shí)現(xiàn)。語(yǔ)法格式如下:ORDERBY表達(dá)式1[ASC︱DESC][,…n]]其中,表達(dá)式給出排序依據(jù),即按照表達(dá)式的值升序(ASC)或降序(DESC)排列查詢結(jié)果。在默認(rèn)的情況下,ORDERBY按升序進(jìn)行排列,即默認(rèn)使用的是ASC關(guān)鍵字。不能按ntext、text或image類型的列排序,因此ntext、text或image類型的列不允許出現(xiàn)在ORDERBY子句中。2/3/202328【例6.18】按年齡從小到大的順序顯示女學(xué)生的姓名,性別及出生時(shí)間。USExsglGOSELECT姓名,性別,出生時(shí)間FROMxsWHERE性別='女'ORDERBY出生時(shí)間DESCGO2/3/2023296.2SELECT語(yǔ)句的統(tǒng)計(jì)功能為了進(jìn)一步方便用戶,增強(qiáng)檢索功能,SELECT語(yǔ)句中的統(tǒng)計(jì)功能可以對(duì)查詢結(jié)果集進(jìn)行求和、求平均值、求最大最小值等操作。統(tǒng)計(jì)的方法是通過(guò)集合函數(shù)和GROUPBY子句、COMPUTE子句進(jìn)行組合來(lái)實(shí)現(xiàn)。6.2.1使用集合函數(shù)匯總查詢是把存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)作為一個(gè)整體,對(duì)查詢結(jié)果得到的數(shù)據(jù)集合進(jìn)行匯總或求平均值等各種運(yùn)算。SQLServer提供了一系列統(tǒng)計(jì)函數(shù),用于實(shí)現(xiàn)匯總查詢。常用的統(tǒng)計(jì)函數(shù)見(jiàn)表6-2。2/3/2023302/3/202331【例6.19】查詢學(xué)生總?cè)藬?shù)USExsglGOSELECT學(xué)生總?cè)藬?shù)=COUNT(*)FROMxsGO查詢結(jié)果如圖6.17所示2/3/202332如果指定DISTINCT短語(yǔ),則表示在計(jì)算時(shí)要取消指定列中的重復(fù)值。如果不指定DISTINCT短語(yǔ)或指定ALL短語(yǔ)(ALL為缺省值),則表示不取消重復(fù)值?!纠?.20】查詢選修了“a003”課程的學(xué)生人數(shù)。USExsglGOSELECT選課人數(shù)=COUNT(DISTINCT學(xué)號(hào))FROMcjWHERE課程號(hào)='a003'GO2/3/202333【例6.21】查詢選修了“a001”號(hào)課程的學(xué)生最高分?jǐn)?shù)。USExsglGOSELECTa001課程最高分=MAX(成績(jī))FROMcjWHERE課程號(hào)='a001'GO2/3/2023346.2.2使用GROUPBY子句其語(yǔ)法格式如下。GROUPBY列名[HAVING條件表達(dá)式]HAVING條件表達(dá)式選項(xiàng)是對(duì)生成的組進(jìn)行篩選。2/3/202335【例6.22】在xs表中分專業(yè)統(tǒng)計(jì)出男生和女生的平均年齡及人數(shù),結(jié)果按性別排序。USExsglGOSELECT專業(yè),性別,AVG(DATEDIFF(YEAR,出生時(shí)間,GETDATE()))AS平均年齡,COUNT(*)AS人數(shù)FROMxsGROUPBY專業(yè),性別ORDERBY性別GO2/3/202336【例6.23】查詢cj表中平均成績(jī)大于80分的學(xué)生的學(xué)號(hào)、平均分,并按分?jǐn)?shù)由高到低排序。USExsglGOSELECT學(xué)號(hào),AVG(成績(jī))AS平均成績(jī)FROMcjGROUPBY學(xué)號(hào)HAVINGAVG(成績(jī))>=80ORDERBYAVG(成績(jī))DESCGO2/3/202337注意:WHERE子句是對(duì)表中的記錄進(jìn)行篩選,而HAVING子句是對(duì)組內(nèi)的記錄進(jìn)行篩選,在HAVING子句中可以使用集合函數(shù),并且其統(tǒng)計(jì)運(yùn)算的集合是組內(nèi)的所有列值,而WHERE子句中不能使用集合函數(shù)。2/3/2023386.2.3使用COMPUTE子句使用COMPUTEBY子句,它對(duì)BY后面給出的列進(jìn)行分組顯示,并計(jì)算該列的分組小計(jì)。其語(yǔ)法格式如下:COMPUTE集合函數(shù)[BY分類表達(dá)式]注意:(1)COMPUTE或COMPUTEBY子句中的表達(dá)式,必須出現(xiàn)在選擇列表中,并且必須將其指定為與選擇列表中的某個(gè)表達(dá)式完全一樣,不能使用在選擇列表中指定的列的別名。(2)在COMPUTE或COMPUTEBY子句中,不能指定為ntext、text和image數(shù)據(jù)類型。(3)如果使用COMPUTEBY,則必須也使用ORDERBY子句。表達(dá)式必須與在ORDERBY后列出的子句相同或是其子集,并且必須按相同的序列。例如,如果ORDERBY子句是:ORDERBYa,b,c則COMPUTE子句可以是下面的任意一個(gè)(或全部),即:COMPUTEBYa,b,cCOMPUTEBYa,bCOMPUTEBYa(4)在SELECTINTO語(yǔ)句中不能使用COMPUTE。因此,任何由COMPUTE生成的計(jì)算結(jié)果不出現(xiàn)在用SELECTINTO語(yǔ)句創(chuàng)建的新表內(nèi)。2/3/202339【例6.24】在cj表中求每門課程成績(jī)大于90分的人數(shù),并顯示統(tǒng)計(jì)的明細(xì)。USExsglGOSELECT*FROMcjWHERE成績(jī)>=90ORDERBY課程號(hào)COMPUTECOUNT(課程號(hào))BY課程號(hào)GO2/3/2023406.3SELECT語(yǔ)句中的多表連接在實(shí)際工作中,我們所查詢的內(nèi)容往往是涉及多張表中的內(nèi)容。連接查詢的目的是通過(guò)加載連接字段條件將多個(gè)表連接起來(lái),以便從多個(gè)表中檢索用戶所需要的數(shù)據(jù)。在SQLServer中連接查詢類型分為交叉連接、內(nèi)連接、外連接、自連接。連接查詢就是關(guān)系運(yùn)算的連接運(yùn)算,它是從多個(gè)數(shù)據(jù)源間(FORM)查詢滿足—定條件的記錄。2/3/2023416.3.1交叉連接交叉連接也叫非限制連接,它是將兩個(gè)表不加任何約束地組合起來(lái)。也就是將第一個(gè)表的所有行分別與第二個(gè)表的每行形成一條新的記錄,連接后該結(jié)果集的行數(shù)等于兩個(gè)表的行數(shù)積,列數(shù)等于兩個(gè)表的列數(shù)和。在數(shù)學(xué)上,就是兩個(gè)表的笛卡爾積,在實(shí)際應(yīng)用中一般是沒(méi)有意義的,但在數(shù)據(jù)庫(kù)的數(shù)學(xué)模式上有重要的作用。其語(yǔ)法結(jié)構(gòu)如下:SELECT列名列表FROM表名1CROSSJOIN表名2或者SELECT列名列表FROM表名1,表名22/3/2023426.3.2內(nèi)連接內(nèi)連接也叫自然連接,它是組合兩個(gè)表的常用方法。內(nèi)連接就是只包含滿足連接條件的數(shù)據(jù)行,是將交叉連接結(jié)果集按照連接條件進(jìn)行過(guò)濾的結(jié)果。連接條件通常采用“主鍵=外鍵”的形式。內(nèi)連接有以下兩種語(yǔ)法格式。其語(yǔ)法結(jié)構(gòu)如下:SELECT列名列表FROM表名1[INNER]JOIN表名2ON表名1.列名=表名2.列名或SELECT列名列表FROM表名1,表名2WHERE表名1.列名=表名2.列名2/3/2023436.3.3外連接在自然連接中,只有在兩個(gè)表中匹配的才能在結(jié)果集中出現(xiàn)。而在外連接中可以只限制一個(gè)表,而對(duì)另外一個(gè)表不加限制(即另外一個(gè)表中的所有行都出現(xiàn)在結(jié)果集中)。外連接分為左外連接、右外連接和全外連接。左外連接是對(duì)連接條件中左邊的表不加限制;右外連接是對(duì)右邊的表不加限制;全外連接對(duì)兩個(gè)表都不加限制,所有兩個(gè)表中的行都會(huì)包括在結(jié)果集中。2/3/2023441.左外連接SELECT列名列表FROM表名1ASALEFT[OUTER]JOIN表名2ASBONA.列名=B.列名2.右外連接其語(yǔ)法格式如下:SELECT列名列表FROM表名1ASARIGHT[OUTER]JOIN表名2ASBONA.列名=B.列名2/3/2023453.全外連接其語(yǔ)法格式如下:SELECT列名列表FROM表名1ASAFULL[OUTER]JOIN表名2ASBONA.列名=B.列名2/3/2023466.3.4自連接連接操作不僅可以在不同的表上進(jìn)行,也可以在同一張表內(nèi)進(jìn)行自身連接,即將同一個(gè)表的不同行連接起來(lái)。自連接可以看作一張表的兩個(gè)副本之間的連接。表名在FROM子句中出現(xiàn)兩次,必須對(duì)表指定不同的別名,在SELECT子句中引用的列名也要使用表的別名進(jìn)行限定,使之在邏輯上成為兩張表。2/3/2023476.3.5合并結(jié)果集合并查詢也稱聯(lián)合查詢是將兩個(gè)或兩個(gè)以上的查詢結(jié)果合并,形成一個(gè)具有綜合信息的查詢結(jié)果。使用UNION語(yǔ)句可以把兩個(gè)或兩個(gè)以上的查詢結(jié)果集合并為一個(gè)結(jié)果集。其語(yǔ)法格式如下:查詢語(yǔ)句UNION[ALL]查詢語(yǔ)句注意:(1)聯(lián)合查詢是將兩個(gè)表(結(jié)果集)順序連接。(2)UNION中的每一個(gè)查詢所涉及到的列必須具有相同的列數(shù)、相同位置的列的數(shù)據(jù)類型要相同。若長(zhǎng)度不同,以最長(zhǎng)的字段作為輸出字段的長(zhǎng)度。(3)最后結(jié)果集中的列名來(lái)自第一個(gè)SELECT語(yǔ)句。(4)最后一個(gè)SELECT查詢可以帶ORDERBY子句,對(duì)整個(gè)UNION操作結(jié)果集起作用。且只能用第一個(gè)SELECT查詢中的字段作排序列。(5)系統(tǒng)自動(dòng)刪除結(jié)果集中重復(fù)的記錄,除非使用ALL關(guān)鍵字。2/3/2023486.4子查詢?cè)赟QL語(yǔ)言中,一個(gè)SELECT-FROM-WHERE語(yǔ)句稱為一個(gè)查詢塊。將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句或HAVING短語(yǔ)的條件中的查詢稱為子查詢。子查詢總是寫(xiě)在圓括號(hào)中,可以用在使用表達(dá)式的任何地方。上層的查詢塊稱為外層查詢或父查詢,下層查詢塊稱為內(nèi)查詢或子查詢。SQL語(yǔ)言允許多層嵌套查詢。即一個(gè)子查詢中還可以嵌套其他子查詢。注意:子查詢的SELECT語(yǔ)句中不能使用ORDERBY子句,ORDERBY子句只能對(duì)最終查詢結(jié)果排序。2/3/2023496.4.1嵌套子查詢嵌套子查詢的執(zhí)行不依賴于外部嵌套。其一般的求解方法是由里向外處理。即每個(gè)子查詢?cè)谏弦患?jí)查詢處理之前求解,子查詢的結(jié)果用于建立其父查詢的查找條件。1.比較測(cè)試中的子查詢比較測(cè)試中的子查詢是指父查詢與子查詢之間用比較運(yùn)算符進(jìn)行連接。但是用戶必須確切地知道子查詢返回的是一個(gè)單值,否則數(shù)據(jù)庫(kù)服務(wù)器將報(bào)錯(cuò)。返回的單個(gè)值被外部查詢的比較操作(如:=、!=、<、<=、>、>=)使用,該值可以是子查詢中使用集合函數(shù)得到的值。2/3/202350【例6.33】求選修了哲學(xué)課程的學(xué)生的學(xué)號(hào)及姓名。USExsglGOSELECTxs.學(xué)號(hào),姓名,專業(yè)FROMxs,cjWHERExs.學(xué)號(hào)=cj.學(xué)號(hào)ANDcj.課程號(hào)=(SELECT課程號(hào)FROMkcWHERE課程名='哲學(xué)')GO2/3/202351【例6.34】在xs表中查詢和“程明”在同一專業(yè)的所有男同學(xué)信息。USExsglGOSELECT*FROMxsWHERE性別='男'AND專業(yè)=(SELECT專業(yè)FROMxsWHERE姓名='程明')AND姓名<>'程明'GO2/3/2023522.集合成員測(cè)試中的子查詢集合成員測(cè)試中的子查詢是指父查詢與子查詢之間用IN或NOTIN進(jìn)行連接,判斷某個(gè)屬性列值是否在子查詢的結(jié)果中,通常子查詢的結(jié)果是一個(gè)集合。IN表示屬于,即外部查詢中用于判斷的表達(dá)式的值與子查詢返回的值列表中的一個(gè)值相等;NOTIN表示不屬于?!纠?.35】求選修了學(xué)分為5分的課程的學(xué)生的學(xué)號(hào)及姓名。USExsglGOSELECTDISTINCTxs.學(xué)號(hào),姓名,專業(yè)FROMxs,cjWHERExs.學(xué)號(hào)=cj.學(xué)號(hào)ANDcj.課程號(hào)IN(SELECT課程號(hào)FROMkcWHERE學(xué)分=5)2/3/

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論