SqlServer2012——多表連接查詢


1、基本連接

select A.姓名,A.性別,B.班級名,B.家庭住址
From 學生信息 A,班級信息 B
where A.所屬班級=B.班級編號
--把A表與B表連接起來

2、內連接

--內連接語法格式
select select_list
From table1 INNER join table2 [on join_conditions]
where search_conditions
order by order_expression
--INNER可以省略,使用join就把兩個表連接起來

例子:
select A。班級名,A.班級人數,B.姓名,B.聯系方式
From 班級信息 A inner join 輔導員信息 B
on A.輔導員=B.輔導員編號

select A。班級名,A.班級人數,B.姓名,B.聯系方式
From 班級信息 A inner join 輔導員信息 B
on A.輔導員=B.輔導員編號 AND B.性別=''
--注意:B.性別=''為限制條件,等價於下例
select A。班級名,A.班級人數,B.姓名,B.聯系方式
From 班級信息 A inner join 輔導員信息 B
on A.輔導員=B.輔導員編號 
where B.性別=''

3、外連接包含(左外連接,右外連接,全連接)

外連接有主從表之分。以主表的每行數據匹配i從表中的數據,如果符合條件則直接而返回到查詢結果中,如果主表的行在從表中沒有找到匹配的行,則主表數據仍保留,並返回到查詢結果中,相應的從表中的行被填上空值后也返回到查詢結果中。

左外連接(左表時主表)

select A.班級名,A.班級人數,B.姓名,B.聯系方式
From 班級信息 A LEFT OUTER join 輔導員信息 B
on A.輔導員=B.輔導員編號
--OUTER可以省略,但是查詢條件放到ON中跟放到where中相差比較大

例子:
select A.班級名,A.班級人數,B.姓名,B.聯系方式
From 班級信息 A LEFT OUTER join 輔導員信息 B
on A.輔導員=B.輔導員編號 AND A.班級人數>20

select A.班級名,A.班級人數,B.姓名,B.聯系方式
From 班級信息 A LEFT OUTER join 輔導員信息 B
on A.輔導員=B.輔導員編號 
where A.班級人數>20

右外連接(右表是主表)

select A.班級名,A.班級人數,B.姓名,B.聯系方式
From 班級信息 A RIGHT OUTER join 輔導員信息 B
on A.輔導員=B.輔導員編號

全連接(會顯示兩個表信息,不匹配的填空值)

select A.班級名,A.班級人數,B.姓名,B.聯系方式
From 班級信息 A FULL OUTER join 輔導員信息 B
on A.輔導員=B.輔導員編號

4、交叉連接

他返回被連接的兩個表所有數據的笛卡爾積,返回到結果集合中的數據行數等於第一個表中符合查詢條件的數據行乘以第二個表中符合查詢條件的數據行數。

--語法格式
select select_list
From table1 Cross Join table2
where search_conditions
order by conditions

例子:
select A.班級名稱,A.班級人數,B.姓名
From 班級信息 A Cross Join 輔導員信息 B

5、自連接

select A.班級名,A。班級人數,B.班級名
From 班級信息 A,班級信息 B
where A.班級人數=B.班級人數
--注意A和B是同一個表

select A.班級名,A。班級人數,B.班級名
From 班級信息 A,班級信息 B
where A.班級人數=B.班級人數 AND a.班級編號<>B.班級編號
--注意A和B是同一個表
上個例子中會有重復的數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM