資源描述:
《sql server 單表多表連接語句總結.》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、一:使用內部連接??????????????即將兩個表中的列進行比較將兩個表中滿足連接條件的行進行組合起來作為結果他是最長見的表連接形式?????????????在內部連接中表的地位是平等的?????????????內部連接的語法形式:??????????????1.select??選擇列表??from??表名1,表名2??where表名1.列名1=表名2.列名2???????????????????Eg:selectemplName,deptNamefrom??employeesemp,deptsdeptwhereemp.deptID=dep
2、t.deptID;??????????????2.select選擇列表from???表名1[inner]??jion??表名2on??表名1.列名1=表名2.列名2???????????????????Eg:select??emplName,deptNamefromemployeesempinnerjoindeptsdept??ondept.deptID=emp.deptID;二:使用外部連接?????????????會返回from子句中提到的至少一個表的所有行只要這些行符合任何where或having搜索條件?????????????參與連接
3、的表有主從之分以主表的每行數據去匹配從表的數據列符合連接條件的列將直接返回到結果集中對那些不符合連接條件的列將被添上null后返回到結果集中? 外部連接分為: 1.左外部鏈接(leftjoin)? ????左外部連接對連接條件中左表的表不加限制即結果表中保留左關系表的中所有元組 Eg:查看各個員工所在的部門要求顯示所有員工所在的部門沒有部門的員工也要顯示出來 selectemplName,emplAge,deptNamefromemployeesempleftjoindeptsd
4、eptondept.deptID=emp.deptID; 2.右外部連接(rightjoin)?? ??右外連接??對連接條件中右邊的表不加限制??即結果表中保留右關系表中的所有元組 Eg:查看在各個部門中有那些員工要求顯示部門中不所有員工沒有員工的部門也要顯示出來 selectemplName,emplAge,deptNamefromemployeesemprightjoindeptsdeptondept.deptID=emp.deptID; 3.全外連接(fulloute
5、rjoin)????????????? ?????????全外連接??對兩個表都不加限制??所有兩個表中的行都會包括在結果集中??????????????? ???Eg:也就是說將沒有部門的員工顯示出來沒有員工的部門顯示出來 selectemplName,emplAge,deptNamefromemployeesempfullouterjoindeptsdeptondept.deptID=emp.deptID;?????????????????三:使用交叉連接(crossjoin)?????????????交叉連接即非
6、限制連接她將兩個表不加任何限制的組合起來沒有where子句的交叉連接將產生連接所涉及的表的笛卡爾積??????????????Eg:selectemplName,emplAge,deptNamefromemployeesempcorssjiondeptsdept;????????????四:使用自連接????????????使用自連接可以看作是一個表的兩張副本在連接?????????????Eg:selectemp.emplName,emp.emplAgefromemployeesemp,employeesemp2???????????????
7、????????whereemp.emplAge=emp2.emplAgeandemp2.emplName='錢二';????????????五:多表連接? 一個簡單的例子:? ?--顧客買了什么產品??多少數量? ??--第一種方法 ?? ??--select選擇列表from選擇列表所在的表名where ??--表名1.列名1=表名2.列名2and表名3.列名3=表名2.列名2.2 ??--第二種方法?? ? ?--select選擇列表from表1innerjoin表2on表1.列名1=表2.
8、列名2? ?--innerjoin表3on表3.列名3=表2.列名2.2(表2為帶有2個主鍵和外鍵的表)? ?--所有的顧客買了什么產品多