日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL的各种连接(cross join、inner join、full join)的用法理解

發布時間:2024/1/17 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL的各种连接(cross join、inner join、full join)的用法理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SQL中的連接可以分為內連接,外連接,以及交叉連接 。

1. 交叉連接CROSS JOIN

如果不帶WHERE條件子句,它將會返回被連接的兩個表的笛卡爾積,返回結果的行數等于兩個表行數的乘積;

舉例,下列A、B、C 執行結果相同,但是效率不一樣:

A:SELECT * FROM table1 CROSS JOIN table2

B:SELECT * FROM table1,table2

?

C:select * from table1 a inner join table2 b

A:select a.*,b.* from table1 a,table2 b where a.id=b.id

B:select * from table1 a cross join table2 b where a.id=b.id (注:cross join后加條件只能用where,不能用on)

C:select * from table1 a inner join table2 b on a.id=b.id

一般不建議使用方法A和B,因為如果有WHERE子句的話,往往會先生成兩個表行數乘積的行的數據表然后才根據WHERE條件從中選擇。?

因此,如果兩個需要求交際的表太大,將會非常非常慢,不建議使用。

2.?內連接INNER JOIN

兩邊表同時符合條件的組合

如果僅僅使用

SELECT * FROM table1 INNER JOIN table2

內連接如果沒有指定連接條件的話,和笛卡爾積的交叉連接結果一樣,但是不同于笛卡爾積的地方是,沒有笛卡爾積那么復雜要先生成行數乘積的數據表,內連接的效率要高于笛卡爾積的交叉連接。

但是通常情況下,使用INNER JOIN需要指定連接條件。

?

***************關于等值連接和自然連接

等值連接(=號應用于連接條件, 不會去除重復的列)

自然連接(會去除重復的列)

數據庫的連接運算都是自然連接,因為不允許有重復的行(元組)存在。

例如:

SELECT * FROM table1 AS a INNER JOIN table2 AS b on a.column=b.column

3.?外連接OUTER JOIN

指定條件的內連接,僅僅返回符合連接條件的條目。

外連接則不同,返回的結果不僅包含符合連接條件的行,而且包括左表(左外連接時), 右表(右連接時)或者兩邊連接(全外連接時)的所有數據行。

1)左外連接LEFT [OUTER] JOIN

顯示符合條件的數據行,同時顯示左邊數據表不符合條件的數據行,右邊沒有對應的條目顯示NULL

例如

SELECT * FROM table1 AS a LEFT [OUTER] JOIN ON a.column=b.column

2)右外連接RIGHT [OUTER] JOIN

顯示符合條件的數據行,同時顯示右邊數據表不符合條件的數據行,左邊沒有對應的條目顯示NULL

例如

SELECT * FROM table1 AS a RIGHT [OUTER] JOIN ON a.column=b.column

3)全外連接full [outer] join

顯示符合條件的數據行,同時顯示左右不符合條件的數據行,相應的左右兩邊顯示NULL,即顯示左連接、右連接和內連接的并集

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的SQL的各种连接(cross join、inner join、full join)的用法理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。