版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章
使用SQL進(jìn)行查詢
1SQL的數(shù)據(jù)查詢功能基本格式:SELECT……FROM……WHERE……2SQL查詢命令格式SELECT[ALL|DISTINCT]{*|<表達(dá)式>,…,<表達(dá)式>}FROM<數(shù)據(jù)來(lái)源>[WHERE<條件>][GROUPBY<列名>[,<列名>…][HAVING<謂詞>]][ORDERBY<列名>[ASC|DESC][,<列名>[ASC|DESC]…][COMPUTE…]3SELECT[ALL|DISTINCT]{*|<表達(dá)式>,…,<表達(dá)式>}
說(shuō)明要查詢的數(shù)據(jù),ALL說(shuō)明不去掉重復(fù)元組,DISTINCT說(shuō)明要去掉重復(fù)元組,<表達(dá)式>一般是表中的列名,如果要查詢表中的所有列可以使用“*”表示
4FROM<數(shù)據(jù)來(lái)源>
說(shuō)明要查詢的數(shù)據(jù)來(lái)自哪個(gè)(些)表,可以基于單個(gè)表或多個(gè)表進(jìn)行查詢;可以基于基本表、也可以基于視圖,當(dāng)然也可以兩者一起使用。
5WHERE<邏輯表達(dá)式>
說(shuō)明查詢條件,即選擇元組的條件,可以用于查詢條件的運(yùn)算符也非常豐富,下表列出了常用的運(yùn)算符6GROUPBY<列名>[,<列名>…][HAVING<謂詞>]
GROUPBY短語(yǔ)用于對(duì)查詢結(jié)果進(jìn)行分組,可以利用它進(jìn)行分組匯總(即對(duì)查詢結(jié)果按組進(jìn)行計(jì)算或匯總);HAVING短語(yǔ)必須跟隨GROUPBY使用,它用來(lái)限定分組必須滿足的條件。7ORDERBY<列名>[ASC|DESC],[<列名>[ASC|DESC]]…
用來(lái)對(duì)查詢的結(jié)果進(jìn)行排序。8COMPUTE短語(yǔ)SQLServer支持的短語(yǔ),可以進(jìn)行帶明細(xì)的匯總。SQLServer支持的短語(yǔ),可以進(jìn)行帶明細(xì)的分組匯總。COMPUTEBY短語(yǔ)9SQLServer2005/2008還支持查詢結(jié)果的并(UNION)交(INTERSECT)差(EXCEPT)運(yùn)算
10查詢的分類簡(jiǎn)單查詢
連接查詢分組及計(jì)算查詢
嵌套查詢
11簡(jiǎn)單無(wú)條件查詢查詢?nèi)總}(cāng)庫(kù)信息.SELECT*FROM倉(cāng)儲(chǔ).倉(cāng)庫(kù)查詢職工的姓名和工資信息。SELECT姓名,工資FROM基礎(chǔ).職工12簡(jiǎn)單條件查詢查詢工資不少于1300元的職工的姓名和工資值。SELECT姓名,工資FROM基礎(chǔ).職工WHERE工資>=1300或SELECT姓名,工資FROM基礎(chǔ).職工WHERE工資!<1300查詢單價(jià)在100至150元的器件信息。SELECT*FROM基礎(chǔ).器件WHERE單價(jià)>=100AND單價(jià)<=15013使用[NOT]BETWEEN…AND…的查詢查詢2011年6月簽訂的訂購(gòu)單信息。SELECT*FROM訂貨.訂購(gòu)單WHERE訂購(gòu)日期BETWEEN'2011/06/01'AND'2011/06/30'查詢單價(jià)不在100至150元的器件信息。SELECT*FROM基礎(chǔ).器件WHERE單價(jià)NOTBETWEEN100AND150等價(jià)的表達(dá)式?14字符串匹配查詢match_expression[NOT]LIKEpattern從器件關(guān)系中查找在規(guī)格字段值中任意位置包含字符串“DDR”的所有記錄。SELECT*FROM基礎(chǔ).器件WHERE規(guī)格LIKE'%DDR%'查找訂購(gòu)單號(hào)最后1位為0的所有訂購(gòu)單記錄。SELECT*FROM訂貨.訂購(gòu)單WHERE訂購(gòu)單號(hào)LIKE'OR_0'15字符串匹配查詢查找訂購(gòu)單號(hào)前3位是OR7、最后1位為0~9的所有訂購(gòu)單記錄。SELECT*FROM訂貨.訂購(gòu)單WHERE訂購(gòu)單號(hào)LIKE'OR7[0-9]'查找訂購(gòu)單號(hào)前3位是OR7、最后1位不是6或8的所有訂購(gòu)單記錄。SELECT*FROM訂貨.訂購(gòu)單WHERE訂購(gòu)單號(hào)LIKE'OR7[^68]'16空值查詢expressionIS[NOT]NULL
查詢沒有確定供貨方的訂購(gòu)單信息(供貨方字段為空值的記錄)。SELECT*FROM訂貨.訂購(gòu)單WHERE供貨方ISNULL查詢已經(jīng)確定了供貨方的訂購(gòu)單信息SELECT*FROM訂貨.訂購(gòu)單WHERE供貨方ISNOTNULL17使用IN表達(dá)式的查詢test_expression[NOT]IN(expression[,...n])查詢器件名稱為“內(nèi)存”或“鼠標(biāo)”的器件信息。SELECT*FROM基礎(chǔ).器件WHERE器件名稱IN('內(nèi)存','鼠標(biāo)')以前怎么表示?18ALL和DISTINCT短語(yǔ)的作用從器件關(guān)系查詢或?yàn)g覽有哪些器件(名稱)。SELECT器件名稱FROM基礎(chǔ).器件SELECTDISTINCT器件名稱FROM基礎(chǔ).器件19存儲(chǔ)查詢結(jié)果使用INTO短語(yǔ)可以將查詢結(jié)果存儲(chǔ)到指定的新表中。查詢職工E3經(jīng)手的訂購(gòu)單的訂購(gòu)單號(hào)、供貨方和訂購(gòu)日期信息,并將結(jié)果存儲(chǔ)到“訂貨”模式下、表名為E3的表中。SELECT訂購(gòu)單號(hào),供貨方,訂購(gòu)日期INTO訂貨.E3FROM訂貨.訂購(gòu)單WHERE經(jīng)手人='E3'20查詢結(jié)果的排序ORDERBYorder_expression[ASC|DESC]按單價(jià)升序列出所有器件信息。SELECT*FROM基礎(chǔ).器件ORDERBY單價(jià)查詢所有訂購(gòu)明細(xì)信息,先按訂購(gòu)單號(hào)升序排序、再按金額降序排序。SELECT*FROM訂貨.訂購(gòu)明細(xì)ORDERBY訂購(gòu)單號(hào),金額DESC21TOP短語(yǔ)的作用TOP(expression)[PERCENT][WITHTIES]從器件表中查詢單價(jià)最高的3條器件信息。SELECTTOP(3)*FROM基礎(chǔ).器件ORDERBY單價(jià)DESC從訂購(gòu)明細(xì)表中查詢訂購(gòu)數(shù)量最多的7條訂購(gòu)信息,如果有與第7條記錄的數(shù)量并列的記錄也一起列出。SELECTTOP(7)WITHTIES*FROM訂貨.訂購(gòu)明細(xì)ORDERBY數(shù)量DESC從訂購(gòu)明細(xì)表中查詢金額在前15%的訂購(gòu)記錄信息,如果隨后有金額并列的記錄也一起列出。SELECTTOP(15)PERCENTWITHTIES*FROM訂貨.訂購(gòu)明細(xì)ORDERBY金額DESC22集合運(yùn)算SQLServer2005/2008支持集合的并(UNION)交(INTERSECT)差(EXCEPT)運(yùn)算。23集合并運(yùn)算查詢工資大于1500和工資小于1250的職工的倉(cāng)庫(kù)號(hào)、職工號(hào)、姓名和工資信息(用集合并運(yùn)算完成),結(jié)果按工資升序排序。語(yǔ)句SELECT倉(cāng)庫(kù)號(hào),職工號(hào),姓名,工資FROM基礎(chǔ).職工WHERE工資>1500UNIONSELECT倉(cāng)庫(kù)號(hào),職工號(hào),姓名,工資FROM基礎(chǔ).職工WHERE工資<1250ORDERBY工資注意:ORDERBY短語(yǔ)是對(duì)最終結(jié)果進(jìn)行排序,該短語(yǔ)不能用在中間結(jié)果上。24集合交運(yùn)算查詢WH2倉(cāng)庫(kù)有經(jīng)手2011年6月訂購(gòu)單的職工號(hào)信息(用集合交運(yùn)算完成)。語(yǔ)句SELECT職工號(hào)FROM基礎(chǔ).職工WHERE倉(cāng)庫(kù)號(hào)='WH2'INTERSECTSELECT經(jīng)手人FROM訂貨.訂購(gòu)單WHERE訂購(gòu)日期
BETWEEN‘2011/06/01’AND‘2011/06/30’25集合差運(yùn)算查詢目前沒有經(jīng)手訂購(gòu)單的職工號(hào)(用集合差運(yùn)算完成)。語(yǔ)句SELECT職工號(hào)FROM基礎(chǔ).職工EXCEPTSELECT經(jīng)手人FROM訂貨.訂購(gòu)單26連接查詢當(dāng)查詢的結(jié)果出自多個(gè)表時(shí),需要通過表之間的連接操作來(lái)完成。關(guān)系代數(shù)的連接?27連接查詢
SELECT……FROM<table_source>[INNER|{LEFT|RIGHT|FULL}[OUTER]]JOIN<table_source>
ON<joined_condition>
[[INNER|{LEFT|RIGHT|FULL}[OUTER]]JOIN<table_source>ON<joined_condition>,n][WHERE<search_condition>]SELECT……FROM<table1>JOIN<table2>
ON<joined_condition>
[JOIN<table3>ON<joined_condition>,n][WHERE<search_condition>]28一般連接查詢工資多于1250元的職工的職工號(hào)、姓名和他們所在的城市。SELECT職工號(hào),姓名,城市FROM基礎(chǔ).職工JOIN倉(cāng)儲(chǔ).倉(cāng)庫(kù)ON職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)WHERE工資>125029多個(gè)表的連接查詢接受上海倉(cāng)庫(kù)訂購(gòu)單的北京供應(yīng)商的信息SELECT供應(yīng)商.供應(yīng)商號(hào),供應(yīng)商名,地址FROM訂貨.供應(yīng)商JOIN訂貨.訂購(gòu)單ON供應(yīng)商號(hào)=供貨方JOIN基礎(chǔ).職工ON職工號(hào)=經(jīng)手人JOIN倉(cāng)儲(chǔ).倉(cāng)庫(kù)ON職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)WHERE地址='北京'AND城市='上海'30別名和自連接查詢<關(guān)系名><別名>根據(jù)職工關(guān)系列出上一級(jí)領(lǐng)導(dǎo)及其職員(被其領(lǐng)導(dǎo))的清單。SELECT領(lǐng)導(dǎo).姓名,'領(lǐng)導(dǎo)',職員.姓名FROM基礎(chǔ).職工領(lǐng)導(dǎo)JOIN基礎(chǔ).職工職員ON領(lǐng)導(dǎo).職工號(hào)=職員.班組長(zhǎng)31外連接查詢SELECT……FROM<table_source>
{LEFT|RIGHT|FULL}[OUTER]]JOIN<table_source>
ON<joined_condition>
[WHERE<search_condition>]32左連接查詢訂購(gòu)單及其供應(yīng)商信息,查詢結(jié)果包括訂購(gòu)單號(hào)、訂購(gòu)日期、供應(yīng)商名和供應(yīng)商地址。SELECT訂購(gòu)單號(hào),訂購(gòu)日期,供應(yīng)商名,地址FROM訂貨.訂購(gòu)單JOIN訂貨.供應(yīng)商ON訂購(gòu)單.供貨方=供應(yīng)商.供應(yīng)商號(hào)區(qū)別?SELECT訂購(gòu)單號(hào),訂購(gòu)日期,供應(yīng)商名,地址FROM訂貨.訂購(gòu)單LEFTJOIN訂貨.供應(yīng)商ON訂購(gòu)單.供貨方=供應(yīng)商.供應(yīng)商號(hào)33右連接查詢倉(cāng)庫(kù)及其職工信息,查詢結(jié)果包括倉(cāng)庫(kù)號(hào)、城市、職工號(hào)、姓名和工資,并按城市排序。SELECT倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào),城市,職工號(hào),姓名,工資FROM倉(cāng)儲(chǔ).倉(cāng)庫(kù)JOIN基礎(chǔ).職工ON倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)=職工.倉(cāng)庫(kù)號(hào)ORDERBY城市區(qū)別?SELECT倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào),城市,職工號(hào),姓名,工資FROM倉(cāng)儲(chǔ).倉(cāng)庫(kù)RIGHTJOIN基礎(chǔ).職工ON倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)=職工.倉(cāng)庫(kù)號(hào)ORDERBY城市34全連接查詢供應(yīng)商及其接受的訂購(gòu)單信息,查詢結(jié)果包括供應(yīng)商號(hào)、供應(yīng)商名、訂購(gòu)單號(hào)和訂購(gòu)日期字段,結(jié)果按供應(yīng)商名排序。SELECT供應(yīng)商號(hào),供應(yīng)商名,訂購(gòu)單號(hào),訂購(gòu)日期FROM訂貨.供應(yīng)商JOIN訂貨.訂購(gòu)單ON供應(yīng)商.供應(yīng)商號(hào)=訂購(gòu)單.供貨方ORDERBY供應(yīng)商名區(qū)別?SELECT供應(yīng)商號(hào),供應(yīng)商名,訂購(gòu)單號(hào),訂購(gòu)日期FROM訂貨.供應(yīng)商FULLJOIN訂貨.訂購(gòu)單ON供應(yīng)商.供應(yīng)商號(hào)=訂購(gòu)單.供貨方ORDERBY供應(yīng)商名35廣義笛卡爾積SELECT……FROM<table_source>CROSSJOIN<table_source>
[WHERE<search_condition>]得到倉(cāng)庫(kù)關(guān)系和職工關(guān)系的廣義笛卡爾積的運(yùn)算結(jié)果。SELECT*FROM倉(cāng)儲(chǔ).倉(cāng)庫(kù)CROSSJOIN基礎(chǔ).職工對(duì)倉(cāng)庫(kù)關(guān)系和職工關(guān)系進(jìn)行傳統(tǒng)的等值連接。SELECT*FROM倉(cāng)儲(chǔ).倉(cāng)庫(kù)CROSSJOIN基礎(chǔ).職工WHERE倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)=職工.倉(cāng)庫(kù)號(hào)36分組及匯總查詢對(duì)查詢結(jié)果進(jìn)行匯總計(jì)算聚合函數(shù)匯總一般匯總查詢帶明細(xì)的匯總查詢使用GROUPBY的分組匯總查詢使用COMPUTEBY的分組匯總查詢使用COMPUTEBY和COMPUTE的匯總查詢37語(yǔ)法格式SELECT<聚合函數(shù)>(expression)}[,...n]FROMtable_source[WHEREsearch_condition]SELECTGroup_id,<聚合函數(shù)>(expression)}[,...n]FROMtable_source[WHEREsearch_condition]GROUPBYGroup_id[HAVING…]SELECT...FROMtable_source[WHEREsearch_condition][ORDERBYGroup_id][COMPUTE<聚合函數(shù)>(expression)}[,...n]BYGroup_id][COMPUTE<聚合函數(shù)>(expression)}[,...n]]38聚合函數(shù)聚合函數(shù)是對(duì)初始的查詢結(jié)果進(jìn)行計(jì)算然后得到最終的查詢結(jié)果常用聚合函數(shù)COUNT(計(jì)數(shù))AVG(計(jì)算平均值)MIN(計(jì)算最小值)MAX(計(jì)算最大值)SUM(求和)CHECKSUM(校驗(yàn)和)STDEV(計(jì)算標(biāo)準(zhǔn)差)……39一般匯總查詢SELECT<聚合函數(shù)>(expression)}[,...n]FROMtable_source[WHEREsearch_condition]40一般匯總查詢舉例找出供應(yīng)商所在地的數(shù)目。SELECTCOUNT(DISTINCT地址)FROM訂貨.供應(yīng)商
求支付的工資總數(shù)和職工人數(shù),以及所有職工的平均工資、最高工資和最低工資。SELECTSUM(工資),COUNT(*),AVG(工資),MAX(工資),MIN(工資)FROM基礎(chǔ).職工
求北京和上海的倉(cāng)庫(kù)職工的工資總和。SELECTSUM(工資)FROM基礎(chǔ).職工JOIN倉(cāng)儲(chǔ).倉(cāng)庫(kù)ON職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)WHERE城市='北京'OR城市='上海'41帶明細(xì)的匯總查詢SELECTselect_listFROMtable_source[WHEREsearch_condition]COMPUTE<聚合函數(shù)>(expression)}[,...n]42帶明細(xì)的匯總查詢舉例列出供應(yīng)商的地址,并計(jì)算出供應(yīng)商所在地的數(shù)目。SELECTDISTINCT地址FROM訂貨.供應(yīng)商COMPUTECOUNT(地址)列出北京和上海倉(cāng)庫(kù)的職工姓名、工資、所在城市信息,并計(jì)算他們的職工人數(shù)、工資總和以及平均工資。SELECT姓名,工資,城市FROM基礎(chǔ).職工JOIN倉(cāng)儲(chǔ).倉(cāng)庫(kù)ON職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)WHERE城市='北京'OR城市='上海'COMPUTECOUNT(姓名),SUM(工資),AVG(工資)43使用GROUPBY的分組匯總查詢SELECTgroup_id,<聚合函數(shù)>(expression)}[,...n]FROMtable_source[WHEREsearch_condition]GROUPBYgroup_id[HAVINGsearch_condition]44使用GROUPBY的分組匯總查詢舉例查詢每個(gè)倉(cāng)庫(kù)的職工人數(shù)和平均工資。SELECT倉(cāng)庫(kù)號(hào),COUNT(*),AVG(工資)FROM基礎(chǔ).職工GROUPBY倉(cāng)庫(kù)號(hào)查詢每個(gè)倉(cāng)庫(kù)工資相同的職工人數(shù),結(jié)果按倉(cāng)庫(kù)號(hào)排序。SELECT倉(cāng)庫(kù)號(hào),工資,COUNT(*)FROM基礎(chǔ).職工GROUPBY倉(cāng)庫(kù)號(hào),工資ORDERBY倉(cāng)庫(kù)號(hào)45使用GROUPBY+HAVING的分組匯總查詢舉例求至少有4個(gè)職工的每個(gè)倉(cāng)庫(kù)的職工人數(shù)和平均工資。SELECT倉(cāng)庫(kù)號(hào),COUNT(*),AVG(工資)FROM基礎(chǔ).職工GROUPBY倉(cāng)庫(kù)號(hào)HAVINGCOUNT(*)>=4查詢至少有2個(gè)職工的工資大于1250的每個(gè)倉(cāng)庫(kù)的職工人數(shù)和平均工資。SELECT倉(cāng)庫(kù)號(hào),COUNT(*),AVG(工資)FROM基礎(chǔ).職工WHERE工資>1250GROUPBY倉(cāng)庫(kù)號(hào)HAVINGCOUNT(*)>=246使用COMPUTEBY的分組匯總查詢SELECTselect_listFROMtable_source[WHEREsearch_condition]ORDERBYorder_expression[ASC|DESC]COMPUTE<聚合函數(shù)>(expression)}[,...n]BYexpressionORDERBY的必要性IfORDERBY子句是:ORDERBYa,b,c則COMPUTE…BY子句可以是如下三種形式:COMPUTE…BYa,b,cCOMPUTE…BYa,bCOMPUTE…BYa47使用COMPUTEBY的分組匯總查詢舉例列出職工全部記錄并計(jì)算各倉(cāng)庫(kù)的平均工資和工資小計(jì)。SELECT*FROM基礎(chǔ).職工ORDERBY倉(cāng)庫(kù)號(hào)COMPUTEAVG(工資),SUM(工資)BY倉(cāng)庫(kù)號(hào)查詢目前訂購(gòu)的器件信息,要求列出器件名稱、訂購(gòu)單號(hào)、訂購(gòu)的數(shù)量和金額,并計(jì)算各種器件的訂購(gòu)條目數(shù)、訂購(gòu)數(shù)量合計(jì)和金額合計(jì)。SELECT器件名稱,訂購(gòu)單號(hào),數(shù)量,金額FROM基礎(chǔ).器件JOIN訂貨.訂購(gòu)明細(xì)ON器件.器件號(hào)=訂購(gòu)明細(xì).器件號(hào)ORDERBY器件名稱COMPUTECOUNT(器件名稱),SUM(數(shù)量),SUM(金額)BY器件名稱48使用COMPUTEBY和COMPUTE的匯總查詢SELECTselect_listFROMtable_source[WHEREsearch_condition]ORDERBYorder_expression[ASC|DESC]COMPUTE<聚合函數(shù)>(expression)}[,...n]BYexpressionCOMPUTE<聚合函數(shù)>(expression)}[,...n]49使用COMPUTEBY和COMPUTE的匯總查詢舉例列出職工全部記錄并計(jì)算各倉(cāng)庫(kù)的平均工資和工資小計(jì),最后給出全體職工的平均工資和工資總和。SELECT*FROM基礎(chǔ).職工ORDERBY倉(cāng)庫(kù)號(hào)COMPUTEAVG(工資),SUM(工資)BY倉(cāng)庫(kù)號(hào)COMPUTEAVG(工資),SUM(工資)50嵌套查詢普通嵌套查詢使用量詞的嵌套查詢內(nèi)、外層互相關(guān)嵌套查詢使用EXISTS的嵌套查詢51普通嵌套查詢SELECT…FROM<table_source>WHERE[<其他查詢條件>
AND]<expression1>IN(SELECT<expression2>FROM<table_source>[WHERE…])52普通嵌套查詢舉例查詢哪些城市至少有一個(gè)倉(cāng)庫(kù)的職工的工資為1250元?SELECT城市FROM倉(cāng)儲(chǔ).倉(cāng)庫(kù)WHERE倉(cāng)庫(kù)號(hào)IN(SELECT倉(cāng)庫(kù)號(hào)FROM基礎(chǔ).職工WHERE工資=1250)JOIN?SELECT城市FROM倉(cāng)儲(chǔ).倉(cāng)庫(kù)JOIN基礎(chǔ).職工ON倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)=職工.倉(cāng)庫(kù)號(hào)WHERE工資=1250查詢效率?53普通嵌套查詢舉例查詢所有職工的工資都多于1210元的倉(cāng)庫(kù)的信息。SELECT*FROM倉(cāng)儲(chǔ).倉(cāng)庫(kù)WHERE倉(cāng)庫(kù)號(hào)NOTIN(SELECT倉(cāng)庫(kù)號(hào)FROM基礎(chǔ).職工WHERE工資<=1210)JOIN?54普通嵌套查詢舉例找出和職工E4掙同樣工資的所有職工。SELECT職工號(hào)FROM基礎(chǔ).職工WHERE工資=(SELECT工資FROM基礎(chǔ).職工WHERE職工號(hào)='E4')Join?55普通嵌套查詢舉例找出哪些城市的倉(cāng)庫(kù)向北京的供應(yīng)商發(fā)出了訂購(gòu)單。SELECT城市FROM倉(cāng)儲(chǔ).倉(cāng)庫(kù)WHERE倉(cāng)庫(kù)號(hào)IN(SELECT倉(cāng)庫(kù)號(hào)FROM基礎(chǔ).職工WHERE職工號(hào)IN(SELECT職工號(hào)FROM訂貨.訂購(gòu)單WHERE供貨方IN(SELECT供應(yīng)商號(hào)FROM訂貨.供應(yīng)商WHERE地址=‘北京’)))
Join?56使用量詞的嵌套查詢<表達(dá)式><比較運(yùn)算符>[ANY|ALL|SOME](子查詢)57使用量詞的嵌套查詢舉例查詢有職工的工資大于或等于WH1倉(cāng)庫(kù)中任何一名職工的工資的倉(cāng)庫(kù)號(hào)。SELECTDISTINCT倉(cāng)庫(kù)號(hào)FROM基礎(chǔ).職工WHERE工資>=ANY(SELECT工資FROM基礎(chǔ).職工WHERE倉(cāng)庫(kù)號(hào)='WH1')等價(jià)?58使用量詞的嵌套查詢舉例查詢有職工的工資大于或等于“WH1”倉(cāng)庫(kù)中所有職工的工資的倉(cāng)庫(kù)號(hào)。SELECTDISTINCT倉(cāng)庫(kù)號(hào)FROM基礎(chǔ).職工WHERE工資>=ALL(SELECT工資FROM基礎(chǔ).職工WHERE倉(cāng)庫(kù)號(hào)='WH1')等價(jià)?59內(nèi)、外層互相關(guān)嵌套查詢列出每個(gè)職工經(jīng)手的具有最高總金額的訂購(gòu)單信息。
SELECTouta.訂購(gòu)單號(hào),outa.經(jīng)手人,outa.供貨方,outa.訂購(gòu)日期,outa.金額FROM訂貨.訂購(gòu)單
outaWHEREouta.金額=(SELECTMAX(innera.金額)FROM訂貨.訂購(gòu)單inneraWHEREinnera.經(jīng)手人=outa.經(jīng)手人)列出每個(gè)職工經(jīng)手的?是否可以用Groupby?60使用EXISTS的嵌套查詢[NOT]EXISTS(子查詢)查詢目前沒有經(jīng)手訂購(gòu)單的職工信息。SELECT*FROM基礎(chǔ).職工WHERENOTEXISTS(SELECT*FROM訂貨.訂購(gòu)單WHERE經(jīng)手人=職工.職工號(hào))等價(jià)?查詢那些目前至少已經(jīng)經(jīng)手了1張訂購(gòu)單的職工信息。SELECT*FROM基礎(chǔ).職工WHEREEXISTS(SELECT*FROM訂貨.訂購(gòu)單WHERE經(jīng)手人=職工.職工號(hào))等價(jià)?61需要查詢支持的數(shù)據(jù)操作查詢支持的插入操作查詢支持的更新操作查詢支持的刪除操作62查詢支持的插入操作INSERTINTO<表名><SELECT查詢>新在“重慶”設(shè)立一個(gè)倉(cāng)庫(kù)號(hào)為WH5、面積為600的倉(cāng)庫(kù),并計(jì)劃在該倉(cāng)庫(kù)存放全部器件,因此先在庫(kù)存表中插入倉(cāng)庫(kù)號(hào)WH5和所有器件號(hào)的組合,數(shù)量暫時(shí)為空值NULL。INSERTINTO倉(cāng)儲(chǔ).庫(kù)存SELECT‘WH5’,器件號(hào),NULLFROM基礎(chǔ).器件注意INSERTINTO…SELECT…和SELECT…INTO…的不同
63查詢支持的更新操作UPDATE[schema_name.]table_nameSETcol_name={exp|DEFAULT|NULL}[,...n][WHERE<search_condition>]這里的<search_condition>可以是基于本表定義的表達(dá)式,還可以是基于其他表的查詢,即在<search_condition>中可以嵌套查詢,并且通常是內(nèi)外層互相關(guān)的嵌套,即外層為內(nèi)層查詢提供值,而內(nèi)層的查詢結(jié)果為外層的UPDATE語(yǔ)句所用。64查詢支持的更新操作根據(jù)訂購(gòu)明細(xì)表中的單價(jià)和數(shù)量計(jì)算并更新訂購(gòu)單表的金額字段值。UPDATE訂貨.訂購(gòu)單SET金額=(SELECTSUM(單價(jià)*數(shù)量)FROM訂貨.訂購(gòu)明細(xì)WHERE訂購(gòu)單號(hào)=訂購(gòu)單.訂購(gòu)單號(hào))65查詢支持的刪除操作DELETE[FROM][schema_name.]table_name[WHERE<search_condition>]同樣,這里的<search_condition>可以是基于本表定義的表達(dá)式,還可以是基于其他表的查詢,即在<search_condition>中可以嵌套查詢,可以是內(nèi)外層互相關(guān)的嵌套、也可以是僅外層依賴于內(nèi)層的嵌套。66查詢支持的刪除操作刪除目前沒有任何訂購(gòu)單的供應(yīng)商記錄。DELETEFROM訂貨.供應(yīng)商WHERE供應(yīng)商號(hào)NOTIN(SELECT供貨方FROM訂貨.訂購(gòu)單WHERE供貨方ISNOTNULL)67視圖及其操作視圖倉(cāng)庫(kù)號(hào)城市面積倉(cāng)庫(kù)號(hào)職工號(hào)工資倉(cāng)庫(kù)號(hào)城市職工號(hào)工資倉(cāng)庫(kù)號(hào)面積基本表視圖68定義視圖的命令視圖是根據(jù)對(duì)表的查詢定義的,其命令格式如下:CREATEVIEW[<模式名>.]<視圖名>[(<列名>[,<列名>……])]AS<SELECT-查詢塊>[WITHCHECKOPTION]69行列子集視圖從單個(gè)基本表選取某些行和某些列、并且包含基本表中的關(guān)鍵字所定義的視圖稱作行列子集視圖。行列子集視圖不僅可以用于查詢,原則上也可以進(jìn)行各種更新操作。視圖是虛擬表,所以對(duì)視圖的所有操作實(shí)際上都要轉(zhuǎn)換成對(duì)基本表的操作。70行列子集視圖定義視圖emp_v1,使之只包含職工基本表的職工號(hào)、倉(cāng)庫(kù)號(hào)和姓名字段。CREATEVIEWemp_v1ASSELECT職工號(hào),倉(cāng)庫(kù)號(hào),姓名FROM基礎(chǔ).職工SELECT*FROMemp_v1?INSERTINTOemp_v1VALUES('E13','WH1','郭天華')?71WITHCHECKOPTION的作用對(duì)通過視圖操作的數(shù)據(jù)是否滿足定義視圖時(shí)的條件做檢查。定義視圖wh_v1,使之只包含城市在北京的倉(cāng)庫(kù)號(hào)和面積信息。CREATEVIEWwh_v1ASSELECT倉(cāng)庫(kù)號(hào),面積FROM倉(cāng)儲(chǔ).倉(cāng)庫(kù)WHERE城市='北京'行列子集視圖?INSERTINTOwh_v1VALUES('WH9',777)?72WITHCHECKOPTION的作用定義視圖wh_v2,使之只包含城市在北京的倉(cāng)庫(kù)號(hào)和面積信息,定義視圖時(shí)使用WITHCHECKOPTION選項(xiàng)。CREATEVIEWwh_v2ASSELECT倉(cāng)庫(kù)號(hào),面積FROM倉(cāng)儲(chǔ).倉(cāng)庫(kù)WHERE城市='北京'WITHCHECKOPTIONINSERTINTOwh_v2VALUES('WH10',777)?73基于多個(gè)表的視圖定義視圖wh_emp_v1,使之包含倉(cāng)庫(kù)號(hào)、城市、職工號(hào)和職工姓名信息。CREATEVIEWwh_emp_v1ASSELECT倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào),城市,職工號(hào),姓名FROM基礎(chǔ).職工JOIN倉(cāng)儲(chǔ).倉(cāng)庫(kù)ON職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)對(duì)用戶將有關(guān)系wh_emp_v1(倉(cāng)庫(kù)號(hào),城市,職工號(hào),姓名)wh_emp_v1不是行列子集視圖,這樣的視圖能夠進(jìn)行插入、修改和刪除操作嗎?74不是行列子集視圖能進(jìn)行插、改和刪操作嗎?INSERTINTOwh_emp_v1VALUES('WH11','杭州','E13','海燕')?INSERTINTOwh_emp_v1(倉(cāng)庫(kù)號(hào),城市)VALUES('WH11','杭州')?INSERTINTOwh_emp_v1(倉(cāng)庫(kù)號(hào),職工號(hào),姓名)VALUES('WH11','E13','海燕')?CREATEVIEWwh_emp_v1ASSELECT倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào),城市,職工號(hào),姓名FROM基礎(chǔ).職工JOIN倉(cāng)儲(chǔ).倉(cāng)庫(kù)ON職工.倉(cāng)庫(kù)號(hào)=倉(cāng)庫(kù).倉(cāng)庫(kù)號(hào)75
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 滬科版八年級(jí)物理全一冊(cè)《第三章光的世界》單元檢測(cè)卷及答案
- 利用元數(shù)據(jù)促進(jìn)數(shù)據(jù)共享協(xié)作
- 蘇教版五年級(jí)下冊(cè)課內(nèi)閱讀25篇、及課外閱讀材料(含答案)
- 2024高中地理第四章區(qū)域經(jīng)濟(jì)發(fā)展章末整合學(xué)案新人教版必修3
- 2024高中生物第5章生態(tài)系統(tǒng)及其穩(wěn)定性第1節(jié)生態(tài)系統(tǒng)的結(jié)構(gòu)課堂演練含解析新人教版必修3
- 2024高中語(yǔ)文第二單元第7課陸文學(xué)自傳課時(shí)作業(yè)含解析粵教版選修唐宋散文蚜
- 2024高考地理一輪復(fù)習(xí)第十六章第1講資源的跨區(qū)域調(diào)配-以我國(guó)西氣東輸為例教案含解析新人教版
- 2024高考?xì)v史一輪復(fù)習(xí)方案專題九走向世界的資本主義市場(chǎng)第22講“蒸汽”的力量與走向整體的世界教學(xué)案+練習(xí)人民版
- 2024高考地理一輪復(fù)習(xí)第一部分自然地理-重在理解第二章地球上的大氣第6講冷熱不均引起大氣運(yùn)動(dòng)學(xué)案新人教版
- (3篇)2024年幼兒園園長(zhǎng)年度考核表個(gè)人總結(jié)
- 2025至2031年中國(guó)臺(tái)式燃?xì)庠钚袠I(yè)投資前景及策略咨詢研究報(bào)告
- 第三章第一節(jié)《多變的天氣》說(shuō)課稿2023-2024學(xué)年人教版地理七年級(jí)上冊(cè)
- 2025年中國(guó)電科集團(tuán)春季招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年度建筑施工現(xiàn)場(chǎng)安全管理合同2篇
- 建筑垃圾回收利用標(biāo)準(zhǔn)方案
- 2024年考研英語(yǔ)一閱讀理解80篇解析
- 樣板間合作協(xié)議
- 2024解析:第一章機(jī)械運(yùn)動(dòng)-講核心(解析版)
- 屋面板的拆除與更換施工方案
- 無(wú)人機(jī)飛行區(qū)域安全協(xié)議書
- 物業(yè)員工安全知識(shí)教育培訓(xùn)
評(píng)論
0/150
提交評(píng)論