SQL 连接
一、SQL?連接(JOIN)
| ? | |
| ? | ? |
- INNER JOIN:如果表中有至少一個匹配,則返回行
- LEFT JOIN:即使右表中沒有匹配,也從左表返回所有的行
- RIGHT JOIN:即使左表中沒有匹配,也從右表返回所有的行
- FULL JOIN:只要其中一個表中存在匹配,則返回行
?
?
二、SQL?INNER JOIN?關鍵字(內連接)
2.1 等值連接:在連接條件中使用等于號(=)運算符比較被連接列的列值,其查詢結果中列出被連接表中的所有列,包括其中的重復列。
2.2.不等值連接:在連接條件使用除等于運算符以外的其它比較運算符比較被連接的列的列值。這些運算符包括>、>=、<=、<、!>、!<和<>。
2.3.自然連接:在連接條件中使用等于(=)運算符比較被連接列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,并刪除連接表中的重復列。
內連接:內連接查詢操作列出與連接條件匹配的數據行,它使用比較運算符比較被連接列的列值。
?
?
2.2 SQL INNER JOIN 語法
SELECT?column_name(s)列名
FROM?table1表名
INNER JOIN?table2
ON?table1.column_name=table2.column_name主鍵;
?
例子:
.
select?*?from?book as?a inner?join?stu as?b on?a.sutid =?b.stuid
?
?
?
?
?
?
- 外連接:
3.1左聯接:是以左表為基準,將a.stuid = b.stuid的數據進行連接,然后將左表沒有的對應項顯示,右表的列為NULL
?
select?*?from?book as?a left?join?stu as?b on?a.sutid =?b.stuid
?
3.2 右連接:是以右表為基準,將a.stuid = b.stuid的數據進行連接,然以將右表沒有的對應項顯示,左表的列為NULL
?
select?*?from?book as?a right?join?stu as?b on?a.sutid =?b.stuid
?
?
3.3 全連接:完整外部聯接返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的數據值。
?
select?*?from?book as?a full?outer?join?stu as?b on?a.sutid =?b.stuid
?
?
3.4 交叉連接:交叉聯接返回左表中的所有行,左表中的每一行與右表中的所有行組合。交叉聯接也稱作笛卡爾積。
select?*?from?book as?a cross?join?stu as?b order?by?a.id
?
?
總結
- 上一篇: 为什么说苏宁必买万达百货
- 下一篇: PHP 密码生成器 计算生成时间