欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
你真的會(huì )玩SQL 嗎?之內連接、外連接

(點(diǎn)擊上方藍字,快速關(guān)注我們)


作者:歡醉

網(wǎng)址:http://www.cnblogs.com/zhangs1986/p/4915039.html


大多數人一般寫(xiě)多表查詢(xún)會(huì )這樣寫(xiě)select * from tbA ,tbB 沒(méi)有用到JOIN關(guān)鍵字,太Low了,官網(wǎng)標準建議是用JOIN明確表間的關(guān)系,下面具體來(lái)講。

連接類(lèi)型:


  1. 交叉聯(lián)接 得到所連接表的所有組合 (笛卡兒集)cross join


  2. 內聯(lián)接得到連接表的滿(mǎn)足條件的記錄組合inner join on


  3. 外聯(lián)接(左、右)得到一個(gè)表的所有行,及其余表滿(mǎn) 足連接條件的行 full | left | right outer join on

 

交叉聯(lián)接

 

在這類(lèi)聯(lián)接的結果集內,兩個(gè)表中每?jì)蓚€(gè)可能成對的行占一行。

 

但是如果在交叉聯(lián)接中加入where 子句就相當與是內聯(lián)接

 

例:


SELECT title, pub_name       FROM titles Cross JOIN publishers       Where titles.pub_id = publishers.pub_id


這就相當于我們一最開(kāi)始的寫(xiě)法:SELECT title, pub_name FROM titles , publishers Where titles.pub_id = publishers.pub_id


執行過(guò)程:


 

內聯(lián)接


僅顯示兩個(gè)聯(lián)接表中的匹配行的聯(lián)接。(這是查詢(xún)設計器中的默認聯(lián)接類(lèi)型。)


例:


SELECT title, pub_name       FROM titles INNER JOIN publishers       ON titles.pub_id = publishers.pub_id

  

執行過(guò)程:

 

左向外聯(lián)接


包括第一個(gè)命名表('左'表,出現在 JOIN 子句的最左邊)中的所有行。不包括右表中的不匹配行。


例:


SELECT titles.title_id,titles.title,publishers.pub_name        FROM titles LEFT OUTER JOIN publishers        ON titles.pub_id = publishers.pub_id

右向外聯(lián)接


包括第二個(gè)命名表('右'表,出現在 JOIN 子句的最右邊)中的所有行。不包括左表中的不匹配行。


例:


SELECT titles.title_id, titles.title,publishers.pub_name  FROM titles RIGHT OUTER JOIN publishers        ON titles.pub_id = publishers.pub_id

執行過(guò)程:



完整外部聯(lián)接


包括所有聯(lián)接表中的所有行,不論它們是否匹配。


例:


SELECT titles.title_id, titles.title,  publishers.pub_name        FROM titles FULL OUTER JOIN publishers        ON titles.pub_id = publishers.pub_id

練習:


此后用到的用例數據庫是SQL2008里面的


用例數據庫文件:鏈接:http://pan.baidu.com/s/1qW1QxA0 密碼:dqxx


/*返回值2007年2月12日下過(guò)訂單的客戶(hù),以及他們的訂單。同時(shí)也返回在2007年2月12日沒(méi)有下過(guò)訂單的客戶(hù)。涉及到表:Sales.Customers表和Sales.Orders表。期望的輸出(按簡(jiǎn)略格式顯示):*/custid      companyname     orderid     orderdate----------- --------------- ----------- -----------------------72          Customer AHPOP  NULL        NULL58          Customer AHXHT  NULL        NULL25          Customer AZJED  NULL        NULL18          Customer BSVAR  NULL        NULL91          Customer CCFIZ  NULL        NULL...33          Customer FVXPQ  NULL        NULL53          Customer GCJSG  NULL        NULL39          Customer GLLAG  NULL        NULL16          Customer GYBBY  NULL        NULL4           Customer HFBZG  NULL        NULL5           Customer HGVLZ  10444       2007-02-12 00:00:00.00042          Customer IAIJK  NULL        NULL34          Customer IBVRG  NULL        NULL63          Customer IRRVL  NULL        NULL73          Customer JMIKW  NULL        NULL15          Customer JUWXK  NULL        NULL...21          Customer KIDPX  NULL        NULL30          Customer KSLQF  NULL        NULL55          Customer KZQZT  NULL        NULL71          Customer LCOUJ  NULL        NULL77          Customer LCYBZ  NULL        NULL66          Customer LHANT  10443       2007-02-12 00:00:00.00038          Customer LJUCA  NULL        NULL59          Customer LOLJO  NULL        NULL36          Customer LVJSO  NULL        NULL64          Customer LWGMD  NULL        NULL29          Customer MDLWA  NULL        NULL...


參考SQL:


--answer:select c.custid,c.companyname,o.orderid,o.orderdatefrom Sales.Customers as cleft join Sales.Orders as oon c.custid=o.custid and o.orderdate='2007-2-12'/*1.將表Sales.Customers別名為c和表Sales.Orders別名為o應用ON篩選器以custid和o.orderdate='2007-2-12'為條件左外連接,生成虛擬表VT1,2.添加外部行,外部行中非保留表中的屬性被賦值為NULL,生成虛擬表VT23.處理select列表,從虛擬表VT2中查找出c.custid,c.companyname,o.orderid,o.orderdate生成虛擬表VT3*/注意and o.orderdate='2007-2-12' 改成 where  o.orderdate='2007-2-12',請注意這個(gè)結果又是什么呢?


/*返回沒(méi)有下過(guò)訂單的客戶(hù)。涉及的表:Sales.Customers表和Sales.Orders表。期望的輸出:*/custid      companyname----------- ---------------22          Customer DTDMN57          Customer WVAXS


參考SQL:


--answer:select c.custid,c.companynamefrom Sales.Customers as cleft join Sales.Orders as oon c.custid=o.custid where o.orderid is null/*1.將表Sales.Customers別名為c和表Sales.Orders別名為o應用ON篩選器以custid為條件左外連接,生成虛擬表VT1,2.添加外部行,外部行中非保留表中的屬性被賦值為NULL,生成虛擬表VT23.應用where篩選器選出o.orderid 為 null的數據生成虛擬表VT34.處理select列表,查找出c.custid,c.companyname生成虛擬表VT4*/



本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
NULL值
詳解DataTable用法
SQL點(diǎn)滴之性能優(yōu)化其實(shí)沒(méi)有那么神秘(上4)
T-SQL語(yǔ)言基礎 單表查詢(xún)摘記
SQL中exists的使用方法
Sql養成一個(gè)好習慣是一筆財富 - MR
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久