Mysql 外連線和內連線分析

2021-09-13 19:48:21 字數 2129 閱讀 6907

表1:test_user

表2:

一:left join

2、select * from test_user a left join test_order b on a.name=b.namewhere a.name='張三'

3、select * from test_user a left join test_order b on a.name=b.nameand a.name='張三'

4、select * from test_user a left join test_order b on a.name=b.namewhere b.book='热血传奇'

5、select * from test_user a left join test_order b on a.name=b.nameand b.book='热血传奇'

結論:以上的結果可以得出,條件寫在where 和 on 中的區別在於,左連線查詢的特性,不管右邊是否存在匹配資料,左邊的資料全部查出來。

二:right join

結論:和left join差不多,右連線是不管左邊是否存在匹配資料,右邊的資料全部查出來。

三、inner join

1、select * from test_user a inner join test_order b on a.name=b.namewhere b.book='热血传奇'

2、select * from test_user a inner join test_order b on a.name=b.nameand b.book='热血传奇'

3、等價於:select * from test_user a , test_order b where a.name=b.nameand b.book='热血传奇'

結論:從上面測試可以看出在內連線中條件寫在where 和 on 中 結果沒有差別,但是效率在理論上寫在on 中要比寫在where 中效率高,因為寫在on中是先篩選再連線,效率上比先連線再篩選要高。

效率:1、inner join比left join快

2、inner join 條件寫在on中比寫在where中快

mysql內連線和外連線

testa表 idname class1張三 a2李四b 3王五ctestb表 class ageb10c 20d30內連線實際上就是交集,顯示符合匹配條件的資料 select testa.testb.from testa inner join testb on test.class testb.c...

Mysql表連線,內連線和外連線

當需要同時顯示多個表中的字段時,就可以用表連線來實現這樣的功能,從大類上來分,連線分為內連線和外連線 內連線僅選出需要連線表中相互匹配的記錄 外連線會選出連線表中不匹配的記錄 外連線分為左連線和右連線 左連線 包含所有左表中的記錄,甚至是右表中沒有和它匹配的記錄 右連線 包含所有右表中的記錄,甚至是...

MySQL 外連線和內連線小結

為了便於通過例子理解外連線和內連線,我們先建立兩個表 user info 和 address 表,再分別向其中新增幾條資料 user info表 create table user info id int 2 primary key,user name varchar 12 unique,passw...