MySQL學習筆記(8) 連線查詢

2021-10-02 11:15:09 字數 2858 閱讀 7117

將多張表連在一起查詢(會導致記錄數行和字段數列發生改變)

意義:在關係型資料庫設計過程中,實體與實體之間是存在很多聯絡的。

在關係型資料庫表的設計過程中,遵循著關係來設計:一對一,一對多,多對多。通常在實際操作中,需要利用這層關係來保證資料的完整性。

將兩張表的資料與另外一張表彼此交叉(笛卡爾積)

表1

cross

join 表2

--例項

select

*from my_student cross

join my_teacher;

笛卡爾積沒有意義,應該盡量避免,存在的意義是保證這種結構的完整性。

[inner] join,從左表中取出每一條記錄,去右表中與所有的記錄進行匹配:匹配必須是某個條件在左表中與右表中相同最終才會保留結果,否則不保留。

表1

[inner

]join 表2

on 匹配條件

--例項

select

*from my_student inner

join my_class;

--不給定條件結果仍然是笛卡爾積

select

*from my_student inner

join my_class on class_id = id;

在查詢資料的時候,不同表可能會有同名字段,這個時候需要加上表名才能區分

select

*from my_student inner

join my_class on my_student.class_id = my_class.id;

而表名太長時,通常可以使用別名。

select

*from my_student [

as] s inner

join my_class [

as] t on s.class_id = c.id;

注:

內連線連線匹配的時候必須匹配到才會儲存(不匹配的記錄直接丟掉)

內連線還可以使用where代替on關鍵字(where是在交叉連線之後再篩選,所以建議用on)

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

outer join,按照某一張表作為主表(表中所有記錄在最後都被被保留),取出裡面的所有記錄,然後每條與另外一張表(從表)進行連線:不管能不能匹配上條件,最終都會保留:能匹配,正確保留;不能匹配,從表的字段都置空null。

外連線分為兩種:

left join:左外連線(左連線),以左表為主表

right join:右外連線(右連線),以右表為主表

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

左連線:主表 left

join 從表 on 連線條件

右連線:從表 right

join 主表 on 連線條件

--例項

select

*from my_student s left

join my_class t on s.class_id = t.id;

--class 表裡只有1班和2班

注:非常常用的一種獲取資料的方式,作為資料獲取對應主表以及其他關聯資料

自然連線:natural join,自然連線,就是自動匹配連線條件:系統以欄位名字作為匹配模式(同名字段就作為條件,多個同名字段都作為條件)。

1.自然內連線

表1

natural

join 表2

--例項

2.自然外連線

左表 natural

left

/right

join 右表

--例項

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

原理:在使用連線查詢時使用on的地方用using代替

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

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

表1

[inner

,left

,right

]join 表2

using

(同名字段列表)

--例項

select

*from my_student left

join my_class using

(id)

--結果同上

通常不會用到因為設計表的時候不會出現同名字段

MySQL8 連線查詢

連線查詢 連線是關係型資料庫模型的主要特點。連線查詢是關係型資料庫中最主要的查詢,主要包括內連線 外連線等通過聯結運算子可以實現多個表查詢。在關係型資料庫管理系統中,表建立時各種資料之間的關係不必確定,常把乙個實體的所有資訊存放在乙個表中,當查詢資料時通過連線操作查詢出存放在多個表中的不同實體資訊,...

Mysql學習歷程(12) 連線查詢

連線查詢 將多張表進行記錄的連線 按照某個指定條件進行資料拼接 意義 在使用者檢視資料的時候,需要顯示的資料來自多張表 sql中連線查詢分為四類 內連線,外連線,自然連線,交叉連線 語法 左表 join 右表 一.交叉連線 cross join 語法 左表 cross join 右表 交叉連線是笛卡...

08 1連線查詢 外連線 MySQL

外連線 應用場景 用於查詢乙個表中有,另乙個表中沒有的記錄 特點 1 外連線的查詢結果為主表中的所有記錄 如果從表中有和主表匹配的,則顯示匹配的值 如果從表中沒有和主表匹配的,則顯示null 外連線查詢的結果 內鏈結結果 主表中有而從表中沒有的記錄 2 左外連線 left join 左邊的是主表 右...