SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接
作者:初行 – 博客園
SQL連接可以分為內連接、外連接、交叉連接。
數據庫數據:
book表:???????????????????????????????????????? stu表:
??????????????????????????
1.內連接
1.1.等值連接:在連接條件中使用等于號(=)運算符比較被連接列的列值,其查詢結果中列出被連接表中的所有列,包括其中的重復列。
1.2.不等值連接:在連接條件使用除等于運算符以外的其它比較運算符比較被連接的列的列值。這些運算符包括>、>=、<=、<、!>、!<和<>。
1.3.自然連接:在連接條件中使用等于(=)運算符比較被連接列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,并刪除連接表中的重復列。
內連接:內連接查詢操作列出與連接條件匹配的數據行,它使用比較運算符比較被連接列的列值。
1、select * from book as a,stu as b where a.sutid = b.stuid
2、select * from book as a inner join stu as b on a.sutid = b.stuid
?
內連接可以使用上面兩種方式,其中第二種方式的inner可以省略。
其連接結果如下圖,是按照a.stuid = b.stuid進行連接。
2.外連接
2.1.左聯接:是以左表為基準,將a.stuid = b.stuid的數據進行連接,然后將左表沒有的對應項顯示,右表的列為NULL
| 1 | select * from book as a left join stu as b on a.sutid = b.stuid |
?
2.2.右連接:是以右表為基準,將a.stuid = b.stuid的數據進行連接,然以將右表沒有的對應項顯示,左表的列為NULL
| 1 | select * from book as a right join stu as b on a.sutid = b.stuid |
?
2.3.全連接:完整外部聯接返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的數據值。
| 1 | select * from book as a full outer join stu as b on a.sutid = b.stuid |
?
?
3.交叉連接
交叉連接:交叉聯接返回左表中的所有行,左表中的每一行與右表中的所有行組合。交叉聯接也稱作笛卡爾積。
| 1 | select * from book as a cross join stu as b order by a.id |
?
文章出處:http://www.cnblogs.com/zxlovenet/p/4005256.html
from:?http://dataunion.org/11954.html
總結
以上是生活随笔為你收集整理的SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 表连接方式(内连接/外连接
- 下一篇: 你真的会玩SQL吗?内连接、外连接