MySQL連線查詢

2021-08-28 09:12:26 字數 1571 閱讀 6364

將兩張表的資料與另外一張表彼此交叉

1、從第一張表依次取出每一條記錄

2、取出每一條記錄之後,與另外一張表的全部記錄挨個匹配

3、沒有任何匹配條件,所有的結果都會保留

4、記錄數  = 第一張表記錄數 * 第二張表記錄數

字段數 = 第一張表字段數 + 第二張表字段數 (笛卡爾積)

表1 cross join 表2;

笛卡爾積無實際應用。

從一張表中取出所有的記錄去另外一張表中匹配,利用匹配條件進行匹配,成功則保留,失敗則放棄

1、從一張表中取出一條記錄,然後去另外一張表中進行匹配

2、利用匹配條件進行匹配

2.1、匹配成功:保留,向下繼續匹配

2.2、匹配失敗:向下繼續匹配,如果全表匹配失敗,結束

表1 [inner] join 表2 on 匹配條件;

1、如果內連線沒有條件,那麼結果為笛卡爾積

2、因為表的設計通常容易產生同名字段,尤其是id,所以為了避免重名出現錯誤,通常使用 表名.欄位名 來確保唯一性

select * from my_student inner join my_class on my_student.class_id = my_class.id
3、如果條件中使用到對應的表名,而表名通常比較長,所以可以通過表別名來簡化

select * from my_student as s inner join my_class c on s.class_id = c.id
4、內連線匹配的時候,必須保證能匹配到才能儲存

5、內連線因為步強制必須使用匹配條件(on),因此可以在資料匹配完成之後,使用where條件來限制,效果和on一樣(推薦使用on)

通常是在對資料有精確要求的地方使用:必須保證兩張表中都能進行資料匹配

按照某乙個表作為主表(表中所有記錄在最後都會保留),根據條件去連線另外一張表,從而得到目標資料

外連線分為兩種:左外連線(left join)、右外連線(right join)

左連線:左表是主表

右連線:右表是主表

1、確定連線主表:左連線就是left join 左邊的表為主表,right join 就是右邊為主表

2、拿主表的每一條記錄,去匹配另一張表(從表)的每一條記錄

3、如果滿足匹配條件,保留;不滿足則不保留

4、如果主表記錄某資料在從表中一條都沒有匹配成功,那麼也要保留該記錄,從表對應的字段值都為null

左連線:主表 left join 從表 on 連線條件;

右連線:從表 right join 主表 on 連線條件;

左連線對應的主表資料在左邊,右連線對應的主表資料在右邊

在連線查詢中用來代替on關鍵字,進行條件匹配

1、在連線查詢時,使用on的地方用using代替

2、使用using的前提是對應的兩張表連線的字段是同名(類似自然連線自動匹配)

3、如果使用using關鍵字,那麼對應的同名字段,最終在結果中只會保留乙個

表一 [inner left right] join 表2 using (同名字段列表); //連線字段

mysql連線查詢例項 MySQL連線查詢例項詳解

建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...

mysql連線查詢例項 MySQL連線查詢例項詳解

建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...

mysql連線查詢on MySQL連線查詢例項詳解

建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...