




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本部分主要所用的表結(jié)構(gòu)要所用的表結(jié)構(gòu)SQL Server 2005 數(shù)據(jù)庫(kù)程序設(shè)計(jì)語(yǔ)言數(shù)據(jù)庫(kù)程序設(shè)計(jì)語(yǔ)言第第8章章 數(shù)據(jù)操作數(shù)據(jù)操作8.2 使用連接使用連接1、使用表的別名、使用表的別名2、命名列、命名列3、組合多個(gè)表中的數(shù)據(jù)、組合多個(gè)表中的數(shù)據(jù)4、推薦操作、推薦操作 在查詢中,同時(shí)涉及兩個(gè)或兩在查詢中,同時(shí)涉及兩個(gè)或兩個(gè)以上的表,要根據(jù)表中數(shù)據(jù)的情個(gè)以上的表,要根據(jù)表中數(shù)據(jù)的情況作連接。況作連接。 SELECT buyer_name ,qty FROM sales cross join buyers一個(gè)示例:一個(gè)示例:例例1:本例列出:本例列出buyers. buyer_name和和sale
2、s. qty列中所有可能的值的組合列中所有可能的值的組合 SELECT buyer_name ,qty FROM sales,buyers查詢查詢結(jié)果結(jié)果buyers表表sales表表連接操作的執(zhí)行過(guò)程連接操作的執(zhí)行過(guò)程首先在表首先在表1中找到第一個(gè)元組,然后從頭開(kāi)始掃描中找到第一個(gè)元組,然后從頭開(kāi)始掃描表表2,逐一查找滿足條件的元組,找到后就將表,逐一查找滿足條件的元組,找到后就將表1中的第一個(gè)元組與該元組拼接起來(lái),形成結(jié)果表中的第一個(gè)元組與該元組拼接起來(lái),形成結(jié)果表中一個(gè)元組。中一個(gè)元組。表表2全部查找完后,再找表全部查找完后,再找表1中第二個(gè)元組,然后中第二個(gè)元組,然后再?gòu)念^開(kāi)始掃描表再
3、從頭開(kāi)始掃描表2,逐一查找滿足條件的元組,逐一查找滿足條件的元組,找到后就將表找到后就將表1中的第二個(gè)元組與該元組拼接起來(lái),中的第二個(gè)元組與該元組拼接起來(lái),形成結(jié)果表中一個(gè)元組。形成結(jié)果表中一個(gè)元組。重復(fù)上述操作,直到表重復(fù)上述操作,直到表1中的全部元組都處理完畢中的全部元組都處理完畢 8.2 使用連接使用連接1、使用表的別名、使用表的別名2、命名列、命名列3、組合多個(gè)表中的數(shù)據(jù)、組合多個(gè)表中的數(shù)據(jù)4、推薦操作、推薦操作使用表的別名使用表的別名指派表的別名時(shí),可以使用也可以不使用指派表的別名時(shí),可以使用也可以不使用 AS 關(guān)鍵字關(guān)鍵字: table_name AS table_aliastab
4、le_name table_alias 如果為表指派了別名,那么在該如果為表指派了別名,那么在該 Transact-SQL 語(yǔ)句中語(yǔ)句中對(duì)該表的所有顯式引用都必須使用別名,而不能使對(duì)該表的所有顯式引用都必須使用別名,而不能使用表名。用表名。有時(shí)復(fù)雜的有時(shí)復(fù)雜的 JOIN 語(yǔ)句和子查詢必須使用表的別名。語(yǔ)句和子查詢必須使用表的別名。 例如,聯(lián)接一個(gè)表和它自身時(shí),必須使用別名例如,聯(lián)接一個(gè)表和它自身時(shí),必須使用別名 使用表的別名使用表的別名在下例中,為在下例中,為 publishers 指派了別名指派了別名 p。USE pubsSELECT p.pub_id, p.pub_nameFROM pub
5、lishers AS p下列下列 SELECT 語(yǔ)句將產(chǎn)生語(yǔ)法錯(cuò)誤,請(qǐng)問(wèn)為什么?:語(yǔ)句將產(chǎn)生語(yǔ)法錯(cuò)誤,請(qǐng)問(wèn)為什么?: SELECT Employees.EmployeeID,emp.FirstName, emp.LastName FROM Northwind.dbo.Employees AS emp8.2 使用連接使用連接1、使用表的別名、使用表的別名2、命名列、命名列3、組合多個(gè)表中的數(shù)據(jù)、組合多個(gè)表中的數(shù)據(jù)4、推薦操作、推薦操作命名列命名列在查詢中使用多表聯(lián)接時(shí),必須注意列的命在查詢中使用多表聯(lián)接時(shí),必須注意列的命名名任何數(shù)據(jù)庫(kù)對(duì)象的全名包括四個(gè)標(biāo)識(shí)符:任何數(shù)據(jù)庫(kù)對(duì)象的全名包括四個(gè)標(biāo)識(shí)符:
6、服務(wù)器名服務(wù)器名.數(shù)據(jù)庫(kù)名數(shù)據(jù)庫(kù)名.架構(gòu)名稱架構(gòu)名稱.對(duì)象名對(duì)象名 在多表聯(lián)接中,如果表?yè)碛邢嗤淖侄蚊?,在多表?lián)接中,如果表?yè)碛邢嗤淖侄蚊?,則在指定字段時(shí),必須包含表名則在指定字段時(shí),必須包含表名例如:例如:school.dbo.student.sno8.2 使用連接使用連接1、使用表的別名、使用表的別名2、命名列、命名列3、組合多個(gè)表中的數(shù)據(jù)、組合多個(gè)表中的數(shù)據(jù)4、推薦操作、推薦操作3、組合多個(gè)表中的數(shù)據(jù)、組合多個(gè)表中的數(shù)據(jù)聯(lián)接概述聯(lián)接概述使用內(nèi)聯(lián)接使用內(nèi)聯(lián)接使用外聯(lián)接使用外聯(lián)接使用交叉聯(lián)接使用交叉聯(lián)接聯(lián)接兩個(gè)以上的表聯(lián)接兩個(gè)以上的表自聯(lián)接自聯(lián)接 (Self-Join)聯(lián)接概述聯(lián)接概述從
7、多個(gè)表中選擇指定的字段從多個(gè)表中選擇指定的字段關(guān)鍵字關(guān)鍵字 JOIN :指定要聯(lián)接的表,以及這些表聯(lián)指定要聯(lián)接的表,以及這些表聯(lián)接的方式接的方式關(guān)鍵字關(guān)鍵字 ON: 指定聯(lián)接條件指定聯(lián)接條件部分語(yǔ)法:部分語(yǔ)法: := on | CROSS JOIN 聯(lián)接概述(續(xù))聯(lián)接概述(續(xù))Join_type的格式:的格式: INNER | LEFT|RIGHT|FULL OUTER JOINANSI JOIN 操作符操作符 INNER JOIN LEFT OUTER JOIN、RIGHT OUTER JOIN、FULL OUTER JOIN、 GROSS JOIN查詢兩個(gè)或多個(gè)表并生成單個(gè)結(jié)果集查詢兩個(gè)或
8、多個(gè)表并生成單個(gè)結(jié)果集所有聯(lián)接的表必須所有聯(lián)接的表必須共同擁有共同擁有某些字段,這些字某些字段,這些字段必須有段必須有相同的或兼容相同的或兼容的數(shù)據(jù)類型的數(shù)據(jù)類型如果聯(lián)接的表有相同字段,則引用這些字段時(shí)如果聯(lián)接的表有相同字段,則引用這些字段時(shí)必須指定表名必須指定表名盡量在聯(lián)接中盡量在聯(lián)接中限制限制表的表的個(gè)數(shù)個(gè)數(shù)聯(lián)接概述(續(xù))聯(lián)接概述(續(xù))使用內(nèi)聯(lián)接使用內(nèi)聯(lián)接l內(nèi)聯(lián)接通過(guò)比較被聯(lián)接的表所共同擁有的字段,內(nèi)聯(lián)接通過(guò)比較被聯(lián)接的表所共同擁有的字段,把多個(gè)表聯(lián)接起來(lái)。把多個(gè)表聯(lián)接起來(lái)。將只返回滿足聯(lián)接條件的行將只返回滿足聯(lián)接條件的行。l為什么要使用內(nèi)聯(lián)接為什么要使用內(nèi)聯(lián)接l內(nèi)聯(lián)接是內(nèi)聯(lián)接是 SQL
9、Server 缺省的聯(lián)接方式缺省的聯(lián)接方式l在選擇列表中指定結(jié)果集要顯示的字段名在選擇列表中指定結(jié)果集要顯示的字段名l使用使用 WHERE 子句來(lái)限制結(jié)果集要返回的記錄子句來(lái)限制結(jié)果集要返回的記錄l在聯(lián)接條件中不要使用空值,因?yàn)榭罩蹬c其他在聯(lián)接條件中不要使用空值,因?yàn)榭罩蹬c其他值不會(huì)相等值不會(huì)相等使用內(nèi)聯(lián)接(續(xù))使用內(nèi)聯(lián)接(續(xù))SELECT buyer_name, sales.buyer_id, qtyFROM buyers INNER JOIN salesON buyers.buyer_id = sales.buyer_idGOsales114323151553711421003buyers
10、Adam BarrSean ChaiEva CoretsErin OMelia1234結(jié)果結(jié)果Adam BarrAdam BarrErin OMeliaEva Corets11431553711Erin OMelia41003示例示例列出購(gòu)買產(chǎn)品的顧客信息列出購(gòu)買產(chǎn)品的顧客信息buyer_name, sales.buyer_id, qty使用外聯(lián)接使用外聯(lián)接l左(右)外聯(lián)接可以從兩個(gè)表中返回符合聯(lián)接條左(右)外聯(lián)接可以從兩個(gè)表中返回符合聯(lián)接條件的記錄,同時(shí)也將返回左(右)邊不符合聯(lián)接件的記錄,同時(shí)也將返回左(右)邊不符合聯(lián)接條件的記錄條件的記錄l使用左(右)外聯(lián)接時(shí),請(qǐng)注意使用左(右)外聯(lián)接時(shí)
11、,請(qǐng)注意l不滿足聯(lián)接條件的記錄將顯示空值不滿足聯(lián)接條件的記錄將顯示空值l左聯(lián)接可以顯示第一個(gè)表中所有記錄左聯(lián)接可以顯示第一個(gè)表中所有記錄l右聯(lián)接可以顯示第二個(gè)表中所有記錄右聯(lián)接可以顯示第二個(gè)表中所有記錄使用外聯(lián)接(續(xù))使用外聯(lián)接(續(xù))SELECT buyer_name, sales.buyer_id, qty FROM buyers LEFT OUTER JOIN sales ON buyers.buyer_id = sales.buyer_idGO示例示例sales114323151553711421003buyersAdam BarrSean ChaiEva CoretsErin OMel
12、ia1234結(jié)果結(jié)果Adam BarrAdam BarrSean ChaiEva Corets11NULL3155NULL11Erin OMelia437Erin OMelia41003列出購(gòu)買產(chǎn)品的顧客信息列出購(gòu)買產(chǎn)品的顧客信息buyer_name, sales.buyer_id, qty。結(jié)果集也將返回沒(méi)有購(gòu)買任何產(chǎn)品的顧客結(jié)果集也將返回沒(méi)有購(gòu)買任何產(chǎn)品的顧客使用交叉聯(lián)接使用交叉聯(lián)接l交叉聯(lián)接將從被聯(lián)接的表中返回所有可能的記錄交叉聯(lián)接將從被聯(lián)接的表中返回所有可能的記錄組合組合l為什么使用交叉聯(lián)接為什么使用交叉聯(lián)接 l在規(guī)范化的數(shù)據(jù)庫(kù)中,很少使用交叉聯(lián)接在規(guī)范化的數(shù)據(jù)庫(kù)中,很少使用交叉聯(lián)接l
13、可以為數(shù)據(jù)庫(kù)生成測(cè)試數(shù)據(jù)可以為數(shù)據(jù)庫(kù)生成測(cè)試數(shù)據(jù)l為清單及企業(yè)模板生成所有可能的組合數(shù)據(jù)為清單及企業(yè)模板生成所有可能的組合數(shù)據(jù)使用交叉聯(lián)接(續(xù))使用交叉聯(lián)接(續(xù))SELECT buyer_name, qty FROM buyers CROSS JOIN salesGO結(jié)果結(jié)果Adam BarrAdam BarrAdam BarrAdam Barr1553711 Adam Barr1003 Sean Chai15 Sean Chai5 Sean Chai37 Sean Chai11 Sean Chai1003 Eva Corets15 .sales114323151553711421003buy
14、ers1234Adam BarrSean ChaiEva CoretsErin OMelia示例示例列出列出buyers.buyer_name, sales. Qty的所有可能的值的組合的所有可能的值的組合聯(lián)接兩個(gè)以上的表聯(lián)接兩個(gè)以上的表l聯(lián)接任意數(shù)目的表都有可能聯(lián)接任意數(shù)目的表都有可能l通過(guò)使用共同擁有的字段,任何通過(guò)使用共同擁有的字段,任何一個(gè)表都可以和其他表聯(lián)接一個(gè)表都可以和其他表聯(lián)接聯(lián)接兩個(gè)以上的表(續(xù))聯(lián)接兩個(gè)以上的表(續(xù))SELECT buyer_name, prod_name, qty FROM buyers INNER JOIN sales ON buyers.buyer_id
15、 = sales.buyer_id INNER JOIN produce ON d_id = d_idproduce1234ApplesPearsOrangesBananas5Peachesbuyers1234Adam BarrSean ChaiEva CoretsErin OMeliasales114323154215537111003結(jié)果結(jié)果Erin OMeliaAdam BarrErin OMeliaAdam BarrEva CoretsApplesPearsPearsOrangesPeaches37151003511示例示例自聯(lián)接自聯(lián)接 (Sel
16、f-Join)l使用自聯(lián)接,可以使用自聯(lián)接,可以查詢一個(gè)表中各查詢一個(gè)表中各記錄之間的關(guān)系記錄之間的關(guān)系l使用自聯(lián)接時(shí),應(yīng)注意使用自聯(lián)接時(shí),應(yīng)注意 l引用表的兩份副本時(shí),必須使用表的別名引用表的兩份副本時(shí),必須使用表的別名l生成自聯(lián)接時(shí),表中每一行都和自身比較一生成自聯(lián)接時(shí),表中每一行都和自身比較一下,并生成重復(fù)的記錄,使用下,并生成重復(fù)的記錄,使用 WHERE WHERE 子句來(lái)子句來(lái)消除這些重復(fù)記錄消除這些重復(fù)記錄Sales 檢索出購(gòu)買了相同產(chǎn)品的顧客檢索出購(gòu)買了相同產(chǎn)品的顧客ID號(hào)以及其購(gòu)買的號(hào)以及其購(gòu)買的產(chǎn)品產(chǎn)品ID?Sales bSales aSELECT a.buyer_id AS
17、 buyer1, d_id ,b.buyer_id AS buyer2 FROM sales AS a JOIN sales AS b ON d_id = d_idsales b114323151553711421003sales a114323151553711421003SELECT a.buyer_id AS buyer1, d_id ,b.buyer_id AS buyer2 FROM sales AS a JOIN sales AS b ON d_id = d_idWHERE a.buyer_id b.buyer_idsal
18、es b114323151553711421003sales a114323151553711421003SELECT a.buyer_id AS buyer1, d_id ,b.buyer_id AS buyer2 FROM sales AS a JOIN sales AS b ON d_id = d_idWHERE a.buyer_id b.buyer_idsales b114323151553711421003sales a114323151553711421003421UNION 和和 JOIN 的區(qū)別的區(qū)別lJOIN 是合并多個(gè)表并生存是合并多個(gè)表并生存一個(gè)單獨(dú)的結(jié)果集一個(gè)單獨(dú)的結(jié)果集,該結(jié)果集將包含多個(gè)表中的字段該結(jié)果集將包含多
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年金融租賃服務(wù)項(xiàng)目建議書(shū)
- 2025年半導(dǎo)體用石英玻璃材料項(xiàng)目發(fā)展計(jì)劃
- 2025年鋼增強(qiáng)塑料復(fù)合管項(xiàng)目發(fā)展計(jì)劃
- 2025年特種機(jī)載裝置合作協(xié)議書(shū)
- 性別差異下的教育心理學(xué)如何針對(duì)不同性別激發(fā)學(xué)生潛力
- 教育投資的新趨勢(shì)游戲化學(xué)習(xí)平臺(tái)的融資路徑
- 教育政策成效評(píng)估的多維度分析
- 未來(lái)科技趨勢(shì)下的教育技術(shù)增強(qiáng)現(xiàn)實(shí)與虛擬現(xiàn)實(shí)的融合應(yīng)用研究
- 2025年甘肅省靖遠(yuǎn)縣四中物理高一第二學(xué)期期末質(zhì)量跟蹤監(jiān)視試題含解析
- 幼兒教育中教師心理調(diào)適的技巧與方法
- 醫(yī)院電力系統(tǒng)改造技術(shù)標(biāo)書(shū)范本
- 委托代辦購(gòu)買水果合同范例
- 2024至2030年輕鋼隔墻龍骨項(xiàng)目投資價(jià)值分析報(bào)告
- 養(yǎng)老院防恐防暴應(yīng)急預(yù)案
- 舊房加裝電梯基礎(chǔ)施工方案
- 2024年中國(guó)沖擊波醫(yī)療器械市場(chǎng)調(diào)查研究報(bào)告
- 小學(xué)英語(yǔ)時(shí)態(tài)練習(xí)大全(附答案)-小學(xué)英語(yǔ)時(shí)態(tài)專項(xiàng)訓(xùn)練及答案
- 新課標(biāo)高一英語(yǔ)閱讀理解60篇
- DB15-T 3585-2024 高標(biāo)準(zhǔn)農(nóng)田施工質(zhì)量評(píng)定規(guī)程
- 2024年新人教版七年級(jí)數(shù)學(xué)下冊(cè)期末考試數(shù)學(xué)試卷-含答案
- 電氣設(shè)備-核電行業(yè)研究框架:成長(zhǎng)性與穩(wěn)定性兼?zhèn)淇春煤穗娭虚L(zhǎng)期價(jià)值
評(píng)論
0/150
提交評(píng)論