第06章使用SQL查詢_第1頁
第06章使用SQL查詢_第2頁
第06章使用SQL查詢_第3頁
第06章使用SQL查詢_第4頁
第06章使用SQL查詢_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第6章

使用SQL進(jìn)行查詢

1SQL的數(shù)據(jù)查詢功能基本格式:SELECT……FROM……WHERE……2SQL查詢命令格式SELECT[ALL|DISTINCT]{*|<表達(dá)式>,…,<表達(dá)式>}FROM<數(shù)據(jù)來源>[WHERE<條件>][GROUPBY<列名>[,<列名>…][HAVING<謂詞>]][ORDERBY<列名>[ASC|DESC][,<列名>[ASC|DESC]…][COMPUTE…]3SELECT[ALL|DISTINCT]{*|<表達(dá)式>,…,<表達(dá)式>}

說明要查詢的數(shù)據(jù),ALL說明不去掉重復(fù)元組,DISTINCT說明要去掉重復(fù)元組,<表達(dá)式>一般是表中的列名,如果要查詢表中的所有列可以使用“*”表示

4FROM<數(shù)據(jù)來源>

說明要查詢的數(shù)據(jù)來自哪個(gè)(些)表,可以基于單個(gè)表或多個(gè)表進(jìn)行查詢;可以基于基本表、也可以基于視圖,當(dāng)然也可以兩者一起使用。

5WHERE<邏輯表達(dá)式>

說明查詢條件,即選擇元組的條件,可以用于查詢條件的運(yùn)算符也非常豐富,下表列出了常用的運(yùn)算符6GROUPBY<列名>[,<列名>…][HAVING<謂詞>]

GROUPBY短語用于對查詢結(jié)果進(jìn)行分組,可以利用它進(jìn)行分組匯總(即對查詢結(jié)果按組進(jìn)行計(jì)算或匯總);HAVING短語必須跟隨GROUPBY使用,它用來限定分組必須滿足的條件。7ORDERBY<列名>[ASC|DESC],[<列名>[ASC|DESC]]…

用來對查詢的結(jié)果進(jìn)行排序。8COMPUTE短語SQLServer支持的短語,可以進(jìn)行帶明細(xì)的匯總。SQLServer支持的短語,可以進(jìn)行帶明細(xì)的分組匯總。COMPUTEBY短語9SQLServer2005/2008還支持查詢結(jié)果的并(UNION)交(INTERSECT)差(EXCEPT)運(yùn)算

10查詢的分類簡單查詢

連接查詢分組及計(jì)算查詢

嵌套查詢

11簡單無條件查詢查詢?nèi)總}庫信息.SELECT*FROM倉儲.倉庫查詢職工的姓名和工資信息。SELECT姓名,工資FROM基礎(chǔ).職工12簡單條件查詢查詢工資不少于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月簽訂的訂購單信息。SELECT*FROM訂貨.訂購單WHERE訂購日期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%'查找訂購單號最后1位為0的所有訂購單記錄。SELECT*FROM訂貨.訂購單WHERE訂購單號LIKE'OR_0'15字符串匹配查詢查找訂購單號前3位是OR7、最后1位為0~9的所有訂購單記錄。SELECT*FROM訂貨.訂購單WHERE訂購單號LIKE'OR7[0-9]'查找訂購單號前3位是OR7、最后1位不是6或8的所有訂購單記錄。SELECT*FROM訂貨.訂購單WHERE訂購單號LIKE'OR7[^68]'16空值查詢expressionIS[NOT]NULL

查詢沒有確定供貨方的訂購單信息(供貨方字段為空值的記錄)。SELECT*FROM訂貨.訂購單WHERE供貨方ISNULL查詢已經(jīng)確定了供貨方的訂購單信息SELECT*FROM訂貨.訂購單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短語的作用從器件關(guān)系查詢或?yàn)g覽有哪些器件(名稱)。SELECT器件名稱FROM基礎(chǔ).器件SELECTDISTINCT器件名稱FROM基礎(chǔ).器件19存儲查詢結(jié)果使用INTO短語可以將查詢結(jié)果存儲到指定的新表中。查詢職工E3經(jīng)手的訂購單的訂購單號、供貨方和訂購日期信息,并將結(jié)果存儲到“訂貨”模式下、表名為E3的表中。SELECT訂購單號,供貨方,訂購日期INTO訂貨.E3FROM訂貨.訂購單WHERE經(jīng)手人='E3'20查詢結(jié)果的排序ORDERBYorder_expression[ASC|DESC]按單價(jià)升序列出所有器件信息。SELECT*FROM基礎(chǔ).器件ORDERBY單價(jià)查詢所有訂購明細(xì)信息,先按訂購單號升序排序、再按金額降序排序。SELECT*FROM訂貨.訂購明細(xì)ORDERBY訂購單號,金額DESC21TOP短語的作用TOP(expression)[PERCENT][WITHTIES]從器件表中查詢單價(jià)最高的3條器件信息。SELECTTOP(3)*FROM基礎(chǔ).器件ORDERBY單價(jià)DESC從訂購明細(xì)表中查詢訂購數(shù)量最多的7條訂購信息,如果有與第7條記錄的數(shù)量并列的記錄也一起列出。SELECTTOP(7)WITHTIES*FROM訂貨.訂購明細(xì)ORDERBY數(shù)量DESC從訂購明細(xì)表中查詢金額在前15%的訂購記錄信息,如果隨后有金額并列的記錄也一起列出。SELECTTOP(15)PERCENTWITHTIES*FROM訂貨.訂購明細(xì)ORDERBY金額DESC22集合運(yùn)算SQLServer2005/2008支持集合的并(UNION)交(INTERSECT)差(EXCEPT)運(yùn)算。23集合并運(yùn)算查詢工資大于1500和工資小于1250的職工的倉庫號、職工號、姓名和工資信息(用集合并運(yùn)算完成),結(jié)果按工資升序排序。語句SELECT倉庫號,職工號,姓名,工資FROM基礎(chǔ).職工WHERE工資>1500UNIONSELECT倉庫號,職工號,姓名,工資FROM基礎(chǔ).職工WHERE工資<1250ORDERBY工資注意:ORDERBY短語是對最終結(jié)果進(jìn)行排序,該短語不能用在中間結(jié)果上。24集合交運(yùn)算查詢WH2倉庫有經(jīng)手2011年6月訂購單的職工號信息(用集合交運(yùn)算完成)。語句SELECT職工號FROM基礎(chǔ).職工WHERE倉庫號='WH2'INTERSECTSELECT經(jīng)手人FROM訂貨.訂購單WHERE訂購日期

BETWEEN‘2011/06/01’AND‘2011/06/30’25集合差運(yùn)算查詢目前沒有經(jīng)手訂購單的職工號(用集合差運(yùn)算完成)。語句SELECT職工號FROM基礎(chǔ).職工EXCEPTSELECT經(jīng)手人FROM訂貨.訂購單26連接查詢當(dāng)查詢的結(jié)果出自多個(gè)表時(shí),需要通過表之間的連接操作來完成。關(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元的職工的職工號、姓名和他們所在的城市。SELECT職工號,姓名,城市FROM基礎(chǔ).職工JOIN倉儲.倉庫ON職工.倉庫號=倉庫.倉庫號WHERE工資>125029多個(gè)表的連接查詢接受上海倉庫訂購單的北京供應(yīng)商的信息SELECT供應(yīng)商.供應(yīng)商號,供應(yīng)商名,地址FROM訂貨.供應(yīng)商JOIN訂貨.訂購單ON供應(yīng)商號=供貨方JOIN基礎(chǔ).職工ON職工號=經(jīng)手人JOIN倉儲.倉庫ON職工.倉庫號=倉庫.倉庫號WHERE地址='北京'AND城市='上海'30別名和自連接查詢<關(guān)系名><別名>根據(jù)職工關(guān)系列出上一級領(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).職工號=職員.班組長31外連接查詢SELECT……FROM<table_source>

{LEFT|RIGHT|FULL}[OUTER]]JOIN<table_source>

ON<joined_condition>

[WHERE<search_condition>]32左連接查詢訂購單及其供應(yīng)商信息,查詢結(jié)果包括訂購單號、訂購日期、供應(yīng)商名和供應(yīng)商地址。SELECT訂購單號,訂購日期,供應(yīng)商名,地址FROM訂貨.訂購單JOIN訂貨.供應(yīng)商ON訂購單.供貨方=供應(yīng)商.供應(yīng)商號區(qū)別?SELECT訂購單號,訂購日期,供應(yīng)商名,地址FROM訂貨.訂購單LEFTJOIN訂貨.供應(yīng)商ON訂購單.供貨方=供應(yīng)商.供應(yīng)商號33右連接查詢倉庫及其職工信息,查詢結(jié)果包括倉庫號、城市、職工號、姓名和工資,并按城市排序。SELECT倉庫.倉庫號,城市,職工號,姓名,工資FROM倉儲.倉庫JOIN基礎(chǔ).職工ON倉庫.倉庫號=職工.倉庫號ORDERBY城市區(qū)別?SELECT倉庫.倉庫號,城市,職工號,姓名,工資FROM倉儲.倉庫RIGHTJOIN基礎(chǔ).職工ON倉庫.倉庫號=職工.倉庫號ORDERBY城市34全連接查詢供應(yīng)商及其接受的訂購單信息,查詢結(jié)果包括供應(yīng)商號、供應(yīng)商名、訂購單號和訂購日期字段,結(jié)果按供應(yīng)商名排序。SELECT供應(yīng)商號,供應(yīng)商名,訂購單號,訂購日期FROM訂貨.供應(yīng)商JOIN訂貨.訂購單ON供應(yīng)商.供應(yīng)商號=訂購單.供貨方ORDERBY供應(yīng)商名區(qū)別?SELECT供應(yīng)商號,供應(yīng)商名,訂購單號,訂購日期FROM訂貨.供應(yīng)商FULLJOIN訂貨.訂購單ON供應(yīng)商.供應(yīng)商號=訂購單.供貨方ORDERBY供應(yīng)商名35廣義笛卡爾積SELECT……FROM<table_source>CROSSJOIN<table_source>

[WHERE<search_condition>]得到倉庫關(guān)系和職工關(guān)系的廣義笛卡爾積的運(yùn)算結(jié)果。SELECT*FROM倉儲.倉庫CROSSJOIN基礎(chǔ).職工對倉庫關(guān)系和職工關(guān)系進(jìn)行傳統(tǒng)的等值連接。SELECT*FROM倉儲.倉庫CROSSJOIN基礎(chǔ).職工WHERE倉庫.倉庫號=職工.倉庫號36分組及匯總查詢對查詢結(jié)果進(jìn)行匯總計(jì)算聚合函數(shù)匯總一般匯總查詢帶明細(xì)的匯總查詢使用GROUPBY的分組匯總查詢使用COMPUTEBY的分組匯總查詢使用COMPUTEBY和COMPUTE的匯總查詢37語法格式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ù)是對初始的查詢結(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ǔ).職工

求北京和上海的倉庫職工的工資總和。SELECTSUM(工資)FROM基礎(chǔ).職工JOIN倉儲.倉庫ON職工.倉庫號=倉庫.倉庫號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(地址)列出北京和上海倉庫的職工姓名、工資、所在城市信息,并計(jì)算他們的職工人數(shù)、工資總和以及平均工資。SELECT姓名,工資,城市FROM基礎(chǔ).職工JOIN倉儲.倉庫ON職工.倉庫號=倉庫.倉庫號WHERE城市='北京'OR城市='上海'COMPUTECOUNT(姓名),SUM(工資),AVG(工資)43使用GROUPBY的分組匯總查詢SELECTgroup_id,<聚合函數(shù)>(expression)}[,...n]FROMtable_source[WHEREsearch_condition]GROUPBYgroup_id[HAVINGsearch_condition]44使用GROUPBY的分組匯總查詢舉例查詢每個(gè)倉庫的職工人數(shù)和平均工資。SELECT倉庫號,COUNT(*),AVG(工資)FROM基礎(chǔ).職工GROUPBY倉庫號查詢每個(gè)倉庫工資相同的職工人數(shù),結(jié)果按倉庫號排序。SELECT倉庫號,工資,COUNT(*)FROM基礎(chǔ).職工GROUPBY倉庫號,工資ORDERBY倉庫號45使用GROUPBY+HAVING的分組匯總查詢舉例求至少有4個(gè)職工的每個(gè)倉庫的職工人數(shù)和平均工資。SELECT倉庫號,COUNT(*),AVG(工資)FROM基礎(chǔ).職工GROUPBY倉庫號HAVINGCOUNT(*)>=4查詢至少有2個(gè)職工的工資大于1250的每個(gè)倉庫的職工人數(shù)和平均工資。SELECT倉庫號,COUNT(*),AVG(工資)FROM基礎(chǔ).職工WHERE工資>1250GROUPBY倉庫號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ì)算各倉庫的平均工資和工資小計(jì)。SELECT*FROM基礎(chǔ).職工ORDERBY倉庫號COMPUTEAVG(工資),SUM(工資)BY倉庫號查詢目前訂購的器件信息,要求列出器件名稱、訂購單號、訂購的數(shù)量和金額,并計(jì)算各種器件的訂購條目數(shù)、訂購數(shù)量合計(jì)和金額合計(jì)。SELECT器件名稱,訂購單號,數(shù)量,金額FROM基礎(chǔ).器件JOIN訂貨.訂購明細(xì)ON器件.器件號=訂購明細(xì).器件號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ì)算各倉庫的平均工資和工資小計(jì),最后給出全體職工的平均工資和工資總和。SELECT*FROM基礎(chǔ).職工ORDERBY倉庫號COMPUTEAVG(工資),SUM(工資)BY倉庫號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è)倉庫的職工的工資為1250元?SELECT城市FROM倉儲.倉庫WHERE倉庫號IN(SELECT倉庫號FROM基礎(chǔ).職工WHERE工資=1250)JOIN?SELECT城市FROM倉儲.倉庫JOIN基礎(chǔ).職工ON倉庫.倉庫號=職工.倉庫號WHERE工資=1250查詢效率?53普通嵌套查詢舉例查詢所有職工的工資都多于1210元的倉庫的信息。SELECT*FROM倉儲.倉庫WHERE倉庫號NOTIN(SELECT倉庫號FROM基礎(chǔ).職工WHERE工資<=1210)JOIN?54普通嵌套查詢舉例找出和職工E4掙同樣工資的所有職工。SELECT職工號FROM基礎(chǔ).職工WHERE工資=(SELECT工資FROM基礎(chǔ).職工WHERE職工號='E4')Join?55普通嵌套查詢舉例找出哪些城市的倉庫向北京的供應(yīng)商發(fā)出了訂購單。SELECT城市FROM倉儲.倉庫WHERE倉庫號IN(SELECT倉庫號FROM基礎(chǔ).職工WHERE職工號IN(SELECT職工號FROM訂貨.訂購單WHERE供貨方IN(SELECT供應(yīng)商號FROM訂貨.供應(yīng)商WHERE地址=‘北京’)))

Join?56使用量詞的嵌套查詢<表達(dá)式><比較運(yùn)算符>[ANY|ALL|SOME](子查詢)57使用量詞的嵌套查詢舉例查詢有職工的工資大于或等于WH1倉庫中任何一名職工的工資的倉庫號。SELECTDISTINCT倉庫號FROM基礎(chǔ).職工WHERE工資>=ANY(SELECT工資FROM基礎(chǔ).職工WHERE倉庫號='WH1')等價(jià)?58使用量詞的嵌套查詢舉例查詢有職工的工資大于或等于“WH1”倉庫中所有職工的工資的倉庫號。SELECTDISTINCT倉庫號FROM基礎(chǔ).職工WHERE工資>=ALL(SELECT工資FROM基礎(chǔ).職工WHERE倉庫號='WH1')等價(jià)?59內(nèi)、外層互相關(guān)嵌套查詢列出每個(gè)職工經(jīng)手的具有最高總金額的訂購單信息。

SELECTouta.訂購單號,outa.經(jīng)手人,outa.供貨方,outa.訂購日期,outa.金額FROM訂貨.訂購單

outaWHEREouta.金額=(SELECTMAX(innera.金額)FROM訂貨.訂購單inneraWHEREinnera.經(jīng)手人=outa.經(jīng)手人)列出每個(gè)職工經(jīng)手的?是否可以用Groupby?60使用EXISTS的嵌套查詢[NOT]EXISTS(子查詢)查詢目前沒有經(jīng)手訂購單的職工信息。SELECT*FROM基礎(chǔ).職工WHERENOTEXISTS(SELECT*FROM訂貨.訂購單WHERE經(jīng)手人=職工.職工號)等價(jià)?查詢那些目前至少已經(jīng)經(jīng)手了1張訂購單的職工信息。SELECT*FROM基礎(chǔ).職工WHEREEXISTS(SELECT*FROM訂貨.訂購單WHERE經(jīng)手人=職工.職工號)等價(jià)?61需要查詢支持的數(shù)據(jù)操作查詢支持的插入操作查詢支持的更新操作查詢支持的刪除操作62查詢支持的插入操作INSERTINTO<表名><SELECT查詢>新在“重慶”設(shè)立一個(gè)倉庫號為WH5、面積為600的倉庫,并計(jì)劃在該倉庫存放全部器件,因此先在庫存表中插入倉庫號WH5和所有器件號的組合,數(shù)量暫時(shí)為空值NULL。INSERTINTO倉儲.庫存SELECT‘WH5’,器件號,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語句所用。64查詢支持的更新操作根據(jù)訂購明細(xì)表中的單價(jià)和數(shù)量計(jì)算并更新訂購單表的金額字段值。UPDATE訂貨.訂購單SET金額=(SELECTSUM(單價(jià)*數(shù)量)FROM訂貨.訂購明細(xì)WHERE訂購單號=訂購單.訂購單號)65查詢支持的刪除操作DELETE[FROM][schema_name.]table_name[WHERE<search_condition>]同樣,這里的<search_condition>可以是基于本表定義的表達(dá)式,還可以是基于其他表的查詢,即在<search_condition>中可以嵌套查詢,可以是內(nèi)外層互相關(guān)的嵌套、也可以是僅外層依賴于內(nèi)層的嵌套。66查詢支持的刪除操作刪除目前沒有任何訂購單的供應(yīng)商記錄。DELETEFROM訂貨.供應(yīng)商WHERE供應(yīng)商號NOTIN(SELECT供貨方FROM訂貨.訂購單WHERE供貨方ISNOTNULL)67視圖及其操作視圖倉庫號城市面積倉庫號職工號工資倉庫號城市職工號工資倉庫號面積基本表視圖68定義視圖的命令視圖是根據(jù)對表的查詢定義的,其命令格式如下:CREATEVIEW[<模式名>.]<視圖名>[(<列名>[,<列名>……])]AS<SELECT-查詢塊>[WITHCHECKOPTION]69行列子集視圖從單個(gè)基本表選取某些行和某些列、并且包含基本表中的關(guān)鍵字所定義的視圖稱作行列子集視圖。行列子集視圖不僅可以用于查詢,原則上也可以進(jìn)行各種更新操作。視圖是虛擬表,所以對視圖的所有操作實(shí)際上都要轉(zhuǎn)換成對基本表的操作。70行列子集視圖定義視圖emp_v1,使之只包含職工基本表的職工號、倉庫號和姓名字段。CREATEVIEWemp_v1ASSELECT職工號,倉庫號,姓名FROM基礎(chǔ).職工SELECT*FROMemp_v1?INSERTINTOemp_v1VALUES('E13','WH1','郭天華')?71WITHCHECKOPTION的作用對通過視圖操作的數(shù)據(jù)是否滿足定義視圖時(shí)的條件做檢查。定義視圖wh_v1,使之只包含城市在北京的倉庫號和面積信息。CREATEVIEWwh_v1ASSELECT倉庫號,面積FROM倉儲.倉庫WHERE城市='北京'行列子集視圖?INSERTINTOwh_v1VALUES('WH9',777)?72WITHCHECKOPTION的作用定義視圖wh_v2,使之只包含城市在北京的倉庫號和面積信息,定義視圖時(shí)使用WITHCHECKOPTION選項(xiàng)。CREATEVIEWwh_v2ASSELECT倉庫號,面積FROM倉儲.倉庫WHERE城市='北京'WITHCHECKOPTIONINSERTINTOwh_v2VALUES('WH10',777)?73基于多個(gè)表的視圖定義視圖wh_emp_v1,使之包含倉庫號、城市、職工號和職工姓名信息。CREATEVIEWwh_emp_v1ASSELECT倉庫.倉庫號,城市,職工號,姓名FROM基礎(chǔ).職工JOIN倉儲.倉庫ON職工.倉庫號=倉庫.倉庫號對用戶將有關(guān)系wh_emp_v1(倉庫號,城市,職工號,姓名)wh_emp_v1不是行列子集視圖,這樣的視圖能夠進(jìn)行插入、修改和刪除操作嗎?74不是行列子集視圖能進(jìn)行插、改和刪操作嗎?INSERTINTOwh_emp_v1VALUES('WH11','杭州','E13','海燕')?INSERTINTOwh_emp_v1(倉庫號,城市)VALUES('WH11','杭州')?INSERTINTOwh_emp_v1(倉庫號,職工號,姓名)VALUES('WH11','E13','海燕')?CREATEVIEWwh_emp_v1ASSELECT倉庫.倉庫號,城市,職工號,姓名FROM基礎(chǔ).職工JOIN倉儲.倉庫ON職工.倉庫號=倉庫.倉庫號75

溫馨提示

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

最新文檔

評論

0/150

提交評論