mysql中的各種jion的記錄,以備用時查
1、等值連接和內連接,
a.內連接與等值連接效果是相同的,執行效率也相同,只是書寫方式不一樣,內連接是由SQL 1999規則定的書寫方式
比如:
select * from tableA a,tableB b where a.id=b.id
select * from tableA a inner join tableB b on a.id = b.id
b.自然連接是一種特殊的等值連接,他要求兩個關系表中進行比較的必須是相同的屬性列,無須添加連接條件,並且在結果中消除重復的屬性列。
2、非等值連接
比如:
select * from tableA a,tableB b where between a.lowlevel and a.highlevel
3、內連接
內連接只返回在連接過程中有連接匹配的記錄。根據連接條件,兩個表中都有對應的數據存在的記錄,才會返回。
自然連接 NATURE JOIN , 系統以字段名字作為匹配模式(同名字段作為字段,多個同名字段都作為條件),對重復的列去重
由於mysql默認是內連接,所以,join 等同於 inner join
4、左連接 即左外連接
從左表中取出每一條記錄,和右表中與所有的記錄進行匹配,匹配左表與右表符合相同條件的記錄
5、右連接 即右外連接
從右表中取出每一條記錄,和左表中與所有的記錄進行匹配,匹配左表與右表符合相同條件的記錄
6、全連接FULL JOIN 即全外連接
目前mysql不支持,可以使用 UNION 關鍵字來合並 LEFT JOIN 與 RIGHT JOIN,變通實現 FULL JOIN
7、交叉連接CROSS JOIN ,即笛卡爾積
即被連接的兩個數據表的乘積,即笛卡爾積。
在 MySQL 中 CROSS JOIN 與 INNER JOIN 的表現是一樣的,在不指定 ON 條件得到的結果都是笛卡爾積,反之取得兩個表完全匹配的結果。
備注:
1、內連接查詢操作列出與連接條件匹配的數據行,它使用比較運算符比較被連接列的列值。內連接也有如下分法分三種:
- 等值連接:在連接條件中使用等於號(=)運算符比較被連接列的列值,其查詢結果中列出被連接表中的所有列,包括其中的重復列。
- 不等連接: 在連接條件使用除等於運算符以外的其它比較運算符比較被連接的列的列值。這些運算符包括>、>=、<=、<、!>、!<和<>。
- 自然連接:在連接條件中使用等於(=)運算符比較被連接列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,並刪除連接表中的重復列。
2、自然連接:也有分為 自然內連接 和 自然外連接,感覺其實就是內連接和外連接都可以模擬自然連接,使用同名字段,合並字段
3、內連接和外連接
- 內連接:數據內部的連接,連接的多個數據必須存在才能連接
- 外連接:如果負責連接的一個或多個數據不真實存在,則稱之為外連接