第4章數(shù)據(jù)查詢(xún)_第1頁(yè)
第4章數(shù)據(jù)查詢(xún)_第2頁(yè)
第4章數(shù)據(jù)查詢(xún)_第3頁(yè)
第4章數(shù)據(jù)查詢(xún)_第4頁(yè)
第4章數(shù)據(jù)查詢(xún)_第5頁(yè)
已閱讀5頁(yè),還剩46頁(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章數(shù)據(jù)查詢(xún)4.1SELECT語(yǔ)句

SELECT語(yǔ)句的作用是讓數(shù)據(jù)庫(kù)服務(wù)器根據(jù)客戶(hù)的要求從數(shù)據(jù)庫(kù)中搜索出所需要的信息資料,并且可以按規(guī)定的格式進(jìn)行分類(lèi)、統(tǒng)計(jì)、排序,再返回給客戶(hù)。語(yǔ)法形式為:SELECT[ALL|DISTINCT]

[TOPnPERCENT]select_list[INTOnew_table]FROMtable_name[WHEREsearch_condition][GROUPBYgroup_by_expression][HAVINGsearch_condition][ORDERBYorder_expression[ASC|DESC]]進(jìn)入結(jié)果集的列源表名4.2基本查詢(xún)

當(dāng)使用SELECT語(yǔ)句時(shí),可以用兩種方式來(lái)控制返回的數(shù)據(jù):選擇列和選擇行。選擇列就是垂直地劃分?jǐn)?shù)據(jù),限制返回結(jié)果中的列,這由SELECT語(yǔ)句中的SELECT子句指定要返回的列來(lái)控制;選擇行則是水平地劃分?jǐn)?shù)據(jù),限制返回結(jié)果中的行,這由SELECT語(yǔ)句中的WHERE子句指定選擇條件來(lái)控制。

4.2.1選擇列

1.指定列

SELECTcolumn_name1[,column_name2,…]FROMtable_name例4-1我們選擇Products表中的產(chǎn)品ID、產(chǎn)品名稱(chēng)(ProductName)和單價(jià)(Price)三列。USEsalesGOSELECTProductID,ProductName,PriceFROMProducts注意:在數(shù)據(jù)查詢(xún)時(shí),列的顯示順序由SELECT語(yǔ)句的SELECT子句指定,順序可以和列定義時(shí)順序不同,這并不影響數(shù)據(jù)在表中的存儲(chǔ)順序。在查找多列內(nèi)容時(shí),用‘,’將各字段分開(kāi)。

2.選擇所有列在SELECT子句中可以使用星號(hào)(*),顯示表中所有的列。例4-2顯示Orders表中的所有信息。SELECT*FROMOrders3.使用計(jì)算列在SELECT子句中可以使用算術(shù)運(yùn)算符對(duì)數(shù)值型數(shù)據(jù)列進(jìn)行加(+)、減(-)、乘(*)、除(/)和取模(%)運(yùn)算,構(gòu)造計(jì)算列。

例4-3從Products表中檢索出產(chǎn)品ID(ProductID)、產(chǎn)品名稱(chēng)(ProductName)、產(chǎn)品單價(jià)(Price)、產(chǎn)品庫(kù)存量(Stocks)及產(chǎn)品的總價(jià)值,查詢(xún)?nèi)鐖D4-2所示。SELECTProductID,ProductName,Price,Stocks,Price*StocksFROMProducts例4-4從pubs數(shù)據(jù)庫(kù)的authors表查詢(xún)作者的姓和名,以及作者所居住的州和城市的名字,查詢(xún)結(jié)果如圖4-3所示。USEpubsGOSELECTau_lname+'.'+au_fname,city+','+stateFROMauthors4.增加說(shuō)明列為了增加查詢(xún)結(jié)果的可讀性,可以在SELECT子句中增加一些說(shuō)明列,增加的說(shuō)明文字串需用單引號(hào)括起來(lái)。例4-5從pubs數(shù)據(jù)庫(kù)的publishers表中查詢(xún)出版商ID及出版商名字,查詢(xún)結(jié)果如圖4-4所示。SELECTpub_id,'publishernameis:',pub_nameFROMpublishers5.改變列標(biāo)題如果我們想改變查詢(xún)結(jié)果中所顯示的列標(biāo)題,可以在SELECT語(yǔ)句中使用‘列標(biāo)題’=列名或列名AS‘列標(biāo)題’兩種方法。例4-6為例4-3中的計(jì)算列指定一個(gè)列標(biāo)題“總價(jià)值”。SELECTProductID,ProductName,Price,Stocks,'totalcost'=Price*StocksFROMProducts例4-7按如下格式顯示銷(xiāo)售員信息。SELECTSaleNameAS‘姓名’,SexAS‘性別’,BirthdayAS'出生日期',AddressAS'地址'FROMSalers4.2.2選擇行使用WHERE子句的目的是從表中篩選出符合條件的行,其語(yǔ)法形式如下:SELECTcolumn_name1[,column_name2,…]FROMtable_nameWHEREsearch_condition<search_condition>:定義查詢(xún)條件。

SQLServer支持的查詢(xún)條件包括比較運(yùn)算、邏輯運(yùn)算、模糊匹配、范圍、列表、以及是否為空。1.使用比較運(yùn)算符

WHERE子句中允許使用的比較運(yùn)算符包括:

例4-8查詢(xún)Products表中價(jià)格小于5的產(chǎn)品記錄。

SELECTProductID,ProductName,PriceFROMproductsWHEREPrice<5.0例4-9查詢(xún)Salers表中男銷(xiāo)售人員的信息。

SELECTSaleID,SaleName,Address,TelephoneFROMsalersWHERESex=‘男’

2.使用邏輯運(yùn)算符在WHERE子句中還可以使用邏輯運(yùn)算符把若干個(gè)查詢(xún)條件連接起來(lái),構(gòu)成一個(gè)復(fù)雜的條件進(jìn)行查詢(xún)??梢允褂玫倪壿嬤\(yùn)算符包括:邏輯與(AND)、邏輯或(OR)和邏輯非(NOT)。語(yǔ)法形式如下:[NOT]search_condition{AND|OR}[NOT]search_condition例4-10查詢(xún)Products表中價(jià)格在5-10元之間的產(chǎn)品記錄SELECTProductID,ProductName,PriceFROMproductsWHEREPrice>=5.0ANDPrice<=10.0當(dāng)兩個(gè)條件都為true時(shí),返回特定于這些條件的所有行。例4-11查詢(xún)pubs數(shù)據(jù)庫(kù)的Titles表中現(xiàn)代烹調(diào)術(shù)(mod_cook)和商務(wù)方面的書(shū)。SELECTTitle,Price,TypeFROMTitlesWHEREType='mod_cook'ORType='business'結(jié)果集包含滿(mǎn)足任意一個(gè)條件的所有行。例4-12查詢(xún)pubs數(shù)據(jù)庫(kù)的Publishers表中居住在Boson或不住在Paris的出版商信息。SELECT*FROMPublishersWHERECity='Boston'ORNOTCity='Paris'注意:如果NOT所修飾的查詢(xún)條件不是單個(gè)的,而是復(fù)合的,則需要用圓括號(hào)()把復(fù)合條件括起來(lái)。

3.使用字符串模糊匹配語(yǔ)法形式為:expression[NOT]LIKE‘string’‘string’:是匹配字符串。在匹配字符串中可以使用四種匹配符:%、_、[]、[^]。例4-13從Salers表中檢索出所有姓張的銷(xiāo)售人員的資料。SELECT*FROMSalersWHERESaleNameLIKE'張%'例4-14從Salers表中檢索出名字的第二個(gè)字是“偉”或“煒”的所有銷(xiāo)售人員的資料。SELECT*FROMSalersWHERESaleNameLIKE'_[偉,煒]%'例4-15從Salers表中檢索出名字的第二個(gè)字不是“芳”的銷(xiāo)售人員的資料。SELECT*FROMSalersWHERESaleNameLIKE'_[^芳]%'

4.使用查詢(xún)范圍在WHERE子句中使用BETWEEN關(guān)鍵字可以對(duì)表中某一范圍內(nèi)的數(shù)據(jù)進(jìn)行查詢(xún),系統(tǒng)將逐行檢查表中的數(shù)據(jù)是否在BETWEEN關(guān)鍵字設(shè)定的范圍內(nèi)。如果在其設(shè)定的范圍內(nèi),則取出該行,否則不取該行。其語(yǔ)法形式為:column_name[NOT]BETWEENexpression1ANDexpression2例4-16從Products表中查詢(xún)出價(jià)格在5-10元之間的產(chǎn)品信息。

SELECT*FROMProductsWHEREPriceBETWEEN5AND105.使用查詢(xún)列表如果列值的取值范圍不是一個(gè)連續(xù)的區(qū)間,而是一些離散的值,就應(yīng)使用SQLServer提供的另一個(gè)關(guān)鍵字IN。其語(yǔ)法形式為:column_name[NOT]IN(value1,value2,…)例4-17查詢(xún)salers表中saleID為s01,s05,s07的銷(xiāo)售人員的信息。SELECTSaleID,SaleName,Sex,Birthday,HireDate,AddressFROMsalersWHERESaleIDIN('S01','S05','S07')等價(jià)于:SELECTSaleID,SaleName,Sex,Birthday,HireDate,AddressFROMsalersWHERESaleID='S01'ORSaleID='S05'ORSaleID='S07'6.空值的判定在SQLServer中,用NULL表示空值,它僅僅是一個(gè)符號(hào),不等于空格,也不等于0,因此空值判定的語(yǔ)法形式如下:column_nameIS[NOT]NULL例4-18檢索Salers表中雇用日期為空的銷(xiāo)售人員的資料。

SELECT*FROMSalersWHEREHireDateISNULL4.2.3排序通過(guò)ORDERBY子句,可以將查詢(xún)結(jié)果進(jìn)行排序顯示。其語(yǔ)法形式為:SELECTcolumn_name1[,column_name2,…]FROMtable_nameWHEREsearch_conditionORDERBYcolumn_name[ASC|DESC][,column_name[ASC|DESC]…]其中:關(guān)鍵字ASC表示按升序排列,可省略;關(guān)鍵字DESC表示按降序排列。

例4-19從salers表中按姓名順序檢索出所有銷(xiāo)售員的信息。

SELECT*FROMsalersORDERBYSaleNameASC例4-20按出生日期列的降序排列salers表。

SELECTSaleID,SaleName,Sex,Birthday,AddressFROMsalersORDERBYBirthdayDESC我們還可以使用列所處的位置來(lái)指定排序列。例4-21按出生日期的升序排列salers表。

SELECTSaleID,SaleName,Birthday,AddressFROMsalersORDERBY3

當(dāng)ORDERBY子句指定了多個(gè)排序列時(shí),系統(tǒng)先按照ORDERBY子句中第一列的順序排列,當(dāng)該列出現(xiàn)相同值時(shí),再按照第二列的順序排列,依次類(lèi)推。例4-22查詢(xún)orders表中的數(shù)據(jù),先按CustomerID的升序排列,當(dāng)CustomerID相同時(shí)再按照SaleID的降序排列。SELECT*FROMordersORDERBYCustomerID,SaleIDDESC4.2.4使用TOP和DISTINCT關(guān)鍵字

1.TOP關(guān)鍵字使用TOP關(guān)鍵字可以返回表中前面一定數(shù)量的數(shù)據(jù)。語(yǔ)法形式為:SELECT[TOPinteger|TOPintegerPERCENT]column_nameFROMtable_nameTOPinteger:表示返回表中最前面的幾行,用integer表示返回的行數(shù)。

TOPintegerPERCENT:用百分比表示返回的行數(shù)。例4-23分別從customers表中檢索出前5個(gè)及表中前面20%的顧客信息。查詢(xún)表中前5個(gè)顧客信息:

SELECTTOP5*FROMCustomers查詢(xún)表中前20%個(gè)顧客信息SELECTTOP20PERCENT*FROMCustomers例4-24查詢(xún)Products表中,價(jià)格最高的6種商品。SELECTTOP6*FROMProductsORDERBYPriceDESC2.DISTINCT關(guān)鍵字使用DISTINCT關(guān)鍵字可以從返回的結(jié)果數(shù)據(jù)集中刪除重復(fù)的行。其語(yǔ)法形式為:SELECT[ALL|DISTINCT]column_name1[,column_name2,…]FROMtable_nameWHEREsearch_condition例4-25打開(kāi)Pubs數(shù)據(jù)庫(kù),從Publishers表中查詢(xún)出版商的國(guó)籍。SELECTcountrySELECTDISTINCTcountryFROMpublishersFROMpublishers例4-26查詢(xún)Pubs數(shù)據(jù)庫(kù)的authors表中作者居住的城市和州。

SELECTcity,stateSELECTDISTINCTcity,stateFROMauthorsFROMauthors注意:DISTINCT關(guān)鍵字的作用范圍是整個(gè)查詢(xún)的結(jié)果集,而不是單獨(dú)的一列。如果同時(shí)對(duì)兩列數(shù)據(jù)進(jìn)行查詢(xún)時(shí),使用了DISTINCT關(guān)鍵字,將返回這兩列數(shù)據(jù)的唯一組合。

4.3高級(jí)查詢(xún)4.3.1多表查詢(xún)

SQLServer提供了實(shí)現(xiàn)多表查詢(xún)的方法――連接查詢(xún)。所謂連接查詢(xún)是將多個(gè)表通過(guò)某個(gè)或某些列為條件進(jìn)行連接,從中檢索出關(guān)聯(lián)數(shù)據(jù)。連接有兩種語(yǔ)法形式:

ANSI連接語(yǔ)法形式:SELECTcolumn_listFROM{table_name1[join_type]JOINtable_name2ONconnection_condition}[,…n]WHEREsearch_conditionSQLServer連接語(yǔ)法形式:

SELECTcolumn_list

FROMtable_name1[,…n]

WHERE{search_conditionAND|ORconnection_condition}[,…n]connection_condition:為連接條件;join_type:為連接類(lèi)型。連接有多種類(lèi)型,包括內(nèi)連接、外連接、交叉連接等。

1.內(nèi)連接(INNERJOIN)所謂內(nèi)連接是多個(gè)表通過(guò)連接條件中共享列的值進(jìn)行的比較連接。當(dāng)未指明連接類(lèi)型是,缺省為內(nèi)連接。內(nèi)連接值顯示兩個(gè)表中所有匹配數(shù)據(jù)的行。例4-27顯示OrderID為‘10249’的產(chǎn)品ID、產(chǎn)品名稱(chēng)、產(chǎn)品數(shù)量及價(jià)格。用ANSI語(yǔ)法表示的內(nèi)連接:SELECTOrderID,OrderDetails.ProductID,ProductName,Price,QuantityFROMOrderDetailsJOINProductsONOrderDetails.ProductID=Products.ProductIDWHEREOrderID=’10249’注意:缺省了連接類(lèi)型,默認(rèn)為內(nèi)連接。用SQLServer語(yǔ)法表示的內(nèi)連接:SELECTOrderID,OrderDetails.ProductID,ProductName,Price,QuantityFROMOrderDetails,ProductsWHEREOrderID=’10249’ANDOrderDetails.ProductID=Products.ProductID注意:當(dāng)單個(gè)查詢(xún)引用多個(gè)表時(shí),所有列都必須明確。在查詢(xún)所引用的兩個(gè)或多個(gè)表之間,任何重復(fù)的列名都必須用表名限定,如OrderDetails.ProductID,表示引用了OrderDetails表中的ProductID列。

為了增加可讀性,可以使用表的別名。表的別名的命令語(yǔ)法形式為:FROMtable_nametable_aliastable_alias為表的別名。例4-28修改例4-27,使用表的別名,結(jié)果和例4-27一樣。SELECTOrderID,O.ProductID,ProductName,Price,QuantityFROMOrderDetailsOINNERJOINProductsPONO.ProductID=P.ProductIDWHEREOrderID=’10249’例4-29查詢(xún)OrderID為‘10248’的顧客ID、顧客姓名、銷(xiāo)售員ID、銷(xiāo)售員姓名。SELECTOrderID,O.CustomerID,ConnectName,O.SaleID,SaleNameFROMOrdersOINNERJOINCustomersCONO.CustomerID=C.CustomerIDINNERJOINSalersSONO.SaleID=S.SaleIDWHEREOrderID=’10248’注意:一旦使用了別名代替某個(gè)表格,則在連接時(shí)必須用表格的別名,不能再用表格原名。2.外連接(OUTERJOIN)外連接顯示一個(gè)表中所有的行和另外一個(gè)表中的任何匹配的行。

1)左外連接(LEFTOUERJOIN)左外連接即在連接兩表時(shí),不管右表中是否有匹配數(shù)據(jù),結(jié)果將保留左表中的所有行。例4-30顯示所有產(chǎn)品的ProductID、ProductName、Price以及被顧客定購(gòu)的OrderID、Quantity。SELECTP.ProductID,ProductName,Price,OrderID,QuantityFROMProductsPLEFTOUTERJOINOrderDetailsOONP.ProductID=O.ProductID

2)右外連接(RIGHTOUTERJOIN)右外連接即在連接兩表時(shí),不管左表中是否有匹配數(shù)據(jù),結(jié)果將保留右表中的所有行。例4-32修改例4-30使用右外連接。SELECTOrderID,Quantity,P.ProductID,ProductName,PriceFROMOrderDetailsORIGHTOUTERJOINProductsPONO.ProductID=P.ProductID3.交叉連接兩個(gè)表之間的交叉連接,是用左表中的每一行與右表中的每一行進(jìn)行連接。因此,結(jié)果集中的行數(shù)是左表的行數(shù)乘以右表的行數(shù),該乘積也稱(chēng)為“笛卡兒乘積”。交叉連接使用關(guān)鍵字CROSSJOIN。例4-33交叉連接。SELECTCustomerID,CompanyName,ConnectName,SaleID,SaleNameFROMCustomersCROSSJOINSalers4.3.2分組和匯總

1.使用聚合函數(shù)

聚合函數(shù)可以返回一列、幾列或全部列的匯總數(shù)據(jù),用于計(jì)數(shù)或?qū)ふ夷沉械钠骄怠_@類(lèi)函數(shù)僅作用于數(shù)值型列,并且在列上使用聚合函數(shù)時(shí),不考慮NULL值。

例4-34求Products表中,所有產(chǎn)品的平均價(jià)格、最高價(jià)、最低價(jià)以及總庫(kù)存。SELECTAVG(Price)AS‘平均價(jià)格’FROMProductsSELECTMAX(Price)AS‘最高價(jià)格’FROMProductsSELECTMIN(Price)AS‘最低價(jià)格’FROMProductsSELECTSUM(Stocks)AS‘總庫(kù)存’FROMProducts例4-35統(tǒng)計(jì)Products表中,庫(kù)存量>200的產(chǎn)品數(shù)量。SELECTCOUNT(ProductID)FROMProductsWHEREStocks>200例4-36統(tǒng)計(jì)Products表中的產(chǎn)品種數(shù)。SELECTCOUNT(*)FROMProducts2.使用分組匯總子句當(dāng)需要顯示分組的匯總數(shù)據(jù)時(shí),就應(yīng)使用GROUPBY子句。該子句的功能是根據(jù)指定的列將表中數(shù)據(jù)分成多個(gè)組后進(jìn)行匯總。其語(yǔ)法格式為:SELECTcolumn_name1[,…n]FROMtable_nameWHEREsearch_conditionGROUPBY[ALL]colum_name1[,…n][HAVINGsearch_condition]例4-37將Products表中的數(shù)據(jù)按CategoryID進(jìn)行分組,然后分別統(tǒng)計(jì)每一組產(chǎn)品的平均價(jià)格及總庫(kù)存。SELECTCategoryID,AVG(Price)AS‘平均價(jià)格’,SUM(Stocks)AS'總庫(kù)存'FROMProductsGROUPBYCategoryID注意:使用GROUPBY子句為每一個(gè)組產(chǎn)生一個(gè)匯總結(jié)果,每個(gè)組只返回一行,不返回詳細(xì)信息。SELECT子句中指定的列必須是GROUPBY子句中指定的列,或者是和聚合函數(shù)一起使用。如果包含WHERE子句,則只對(duì)滿(mǎn)足WHERE條件的行進(jìn)行分組匯總。如果GROUPBY子句使用關(guān)鍵字ALL,則WHERE子句將不起作用。HAVING子句可進(jìn)一步排除不滿(mǎn)足條件的組

例4-38在上例基礎(chǔ)上只顯示平均價(jià)格低于10元的分組匯總信息。SELECTCategoryID,AVG(Price)AS‘平均價(jià)格’,SUM(Stocks)AS'總庫(kù)存'FROMProductsGROUPBYCategoryIDHAVINGAVG(Price)<10注意:當(dāng)同時(shí)存在GROUPBY子句、HAVING子句和WHERE子句時(shí),其執(zhí)行順序?yàn)椋合萕HERE子句,后GROUPBY子句,再HAVING子句。即先用WHERE子句過(guò)濾不符合條件的數(shù)據(jù)記錄,接著用GROUPBY子句對(duì)余下的數(shù)據(jù)記錄按指定列分組、匯總,最后再用HAVING子句排除不符合條件的組。

例4-39對(duì)所有價(jià)格大于5元且組平均價(jià)格大于15元的價(jià)格表目,列出所有的產(chǎn)品的類(lèi)型、平均價(jià)格及總庫(kù)存。SELECTCategoryID,AVG(Price)AS‘平均價(jià)格’,SUM(Stocks)AS'總庫(kù)存'FROMProductsWHEREPrice>5GROUPBYCategoryIDHAVINGAVG(Price)>15如果GROUPBY子句中指定了多個(gè)列,則表示要基于這些列的唯一組合來(lái)進(jìn)行分組。在分組過(guò)程中,首先按第一列進(jìn)行分組并按升序排列,然后再按第二列進(jìn)行分組并按升序排列,依次類(lèi)推,最后在分好的組中進(jìn)行匯總。

2.使用明細(xì)匯總子句使用GROUPBY對(duì)查詢(xún)出來(lái)的數(shù)據(jù)作分類(lèi)匯總后,只能顯示統(tǒng)計(jì)結(jié)果,看不到詳細(xì)的數(shù)據(jù)。使用COMPUTE和COMPUTEBY子句既能瀏覽詳細(xì)數(shù)據(jù)又可看到統(tǒng)計(jì)的結(jié)果。其語(yǔ)法形式為:COMPUTEaffregate_function(column_name)[,…n][BYcolumn_name[,…n]]其中:affregate_function表示聚合函數(shù)。例4-40使用COMPUTE子句對(duì)所有訂單訂購(gòu)產(chǎn)品數(shù)量進(jìn)行明細(xì)匯總。SELECTOrderID,ProductID,QuantityFROMOrderDetailsCOMPUTEsum(Quantity)例4-41用COMPUTEBY子句按訂單號(hào)匯總出OrderDetails表中每個(gè)訂單訂購(gòu)產(chǎn)品的數(shù)量。SELECTOrderID,ProductID,QuantityFROMOrderDetailsORDERBYOrderIDCOMPUTESUM(Quantity)BYOrderID注意:COMPUTE[BY]子句不能與SELECTINTO子句一起使用。COMPUTE子句中的列必須出現(xiàn)在SELECT子句的列表中。COMPUTEBY表示按指定的列進(jìn)行明細(xì)匯總,使用BY關(guān)鍵字時(shí)必須同時(shí)使用ORDERBY子句,并且COMPUTEBY后出現(xiàn)的列必須具有與ORDERBY后出現(xiàn)的列相同的順序,且不能跳過(guò)其中的列。例如:如果ORDERBY子句按照如下順序指定排序列:ORDERBYCategoryID,Price,Stocks則COMPUTEBY后的列表只能是下面任一種形式:BYCategoryID,Price,StocksBYCategoryID,PriceBYCategoryID4.3.3嵌套查詢(xún)

所謂嵌套查詢(xún)指的是在一個(gè)SELECT查詢(xún)內(nèi)再嵌入一個(gè)SELECT查詢(xún)。外層的SELECT語(yǔ)句叫外部查詢(xún),內(nèi)層的SELECT語(yǔ)句叫子查詢(xún)。

使用子查詢(xún)時(shí)需注意:子查詢(xún)可以嵌套多層。子查詢(xún)需用圓括號(hào)()括起來(lái)。子查詢(xún)中不能使用COMPUTE[BY]和INTO子句。子查詢(xún)的SELECT語(yǔ)句中不能使用image、text或ntext數(shù)據(jù)類(lèi)型

1.子查詢(xún)返回值類(lèi)型為單值單列例4-43查詢(xún)訂單ID為‘10249’的顧客信息。SELECTCustomerID,CompanyName,ConnectName,Address,ZipCode,TelephoneFROMCustomersWHERECustomerID=(SELECTCustomerIDFROMOrdersWHEREOrderID='10249')該子查詢(xún)的執(zhí)行過(guò)程:首先對(duì)子查詢(xún)求值(僅一次),求出OrderID為‘10249’CustomerID為‘c02’,然后作外部查詢(xún),外部查詢(xún)依賴(lài)于子查詢(xún)的結(jié)果。例4-44顯示所有價(jià)格高于平均價(jià)格的產(chǎn)品。SELECT*FROMProductsWHEREPrice>(SELECTavg(Price)FROMProducts)

如果子查詢(xún)中返回的是單列多值,則必須在子查詢(xún)前使用關(guān)鍵字ALL或ANY,否則系統(tǒng)會(huì)提示錯(cuò)誤信息。

例4-45查詢(xún)訂單ID為‘10248’的所訂購(gòu)的產(chǎn)品信息。SELECT*FROMProductsWHEREProductID=ANY(SELECTProductIDFROMOrderDetailsWHEREOrderID='10248')例4-46試比較下列兩個(gè)查詢(xún)語(yǔ)句的不同。SELECTSt

溫馨提示

  • 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)論