連線查詢:將多張表進行記錄的連線(按照某個指定條件進行資料拼接)
意義:在使用者檢視資料的時候,需要顯示的資料來自多張表;
sql中連線查詢分為四類:內連線,外連線,自然連線,交叉連線
語法: 左表 join 右表
一.交叉連線
cross join 語法 左表 cross join 右表
交叉連線是笛卡爾集連線,等價於 from 左表,右表
二.內連線 [inner ] join ,從左表中取出一條記錄,去與右表中所有的記錄進行匹配:匹配必須滿足某個條件在左表中與右表中相同,最終才會保留結果,否則不保留;
左表 [inner ] join 右表 on 左表.欄位=右表.欄位;
on表示連線條件,條件字段就是代表相同的業務含義,如my_student.c_id和my_class.id;
字段別名和表別名的使用:在查詢資料的時候,不同表有同名字段,這時候需要加上表名才能區分,而表名太長,
通常可以使用別名;
select s.*,c.name,c.room
from my_student as s join my_class c
on s.c_id=c.id;
內連線可以沒有連線條件,沒有on之後內容,這時候系統會保留所有結果(交叉連線);
內連線還可以使用where代替關鍵字on 不過where沒有on效率高
三.外連線
outer join 以某張表為主,取出裡面的所有記錄,,然後每條與另外一張表進行連線,不管能不能匹配上條件,最終都會保留,能匹配則正確保留,不能匹配則其他表的字段設定為null
外連線分為左右連線
left join :左連線,以左表為主;
right join:右連線,以右表為主;
基本語法:左表 left/right join 右表 on 左表.欄位=右表.欄位;
左連線:
select s.*,c.number,c.room
from my_student_1 as s left join my_class c
on s.c_id=c.id;
右連線:
select s.*,c.number,c.room
from my_student_1 as s right join my_class c
on s.c_id=c.id;
左連線與右連線有差異,但是顯示的資料左表資料在左邊,右表資料在右邊;
四.自然連線
natural join 自動匹配連線條件,系統以欄位名字作為匹配模式(同名字段作為條件,多個同名字段都作為條件)
自然連線可以分為自然外連線和自然內連線;
自然內連線:左表 natural join 右表;
自然外連線:左表 natural left/right join 右表;
左表 left/right/inner join 右表 using(欄位名); -- 使用同名字段作為連線條件,自動合併條件
MySQL學習筆記(8) 連線查詢
將多張表連在一起查詢 會導致記錄數行和字段數列發生改變 意義 在關係型資料庫設計過程中,實體與實體之間是存在很多聯絡的。在關係型資料庫表的設計過程中,遵循著關係來設計 一對一,一對多,多對多。通常在實際操作中,需要利用這層關係來保證資料的完整性。將兩張表的資料與另外一張表彼此交叉 笛卡爾積 表1 c...
08 1連線查詢 外連線 MySQL
外連線 應用場景 用於查詢乙個表中有,另乙個表中沒有的記錄 特點 1 外連線的查詢結果為主表中的所有記錄 如果從表中有和主表匹配的,則顯示匹配的值 如果從表中沒有和主表匹配的,則顯示null 外連線查詢的結果 內鏈結結果 主表中有而從表中沒有的記錄 2 左外連線 left join 左邊的是主表 右...
MySQL5 連線查詢
連線查詢可以實現多個表的查詢,一次取出多個表中的資料。連線查詢可分為四種 內連線,外連線,交叉連線,自然連線。如果連線查詢的不同表有同名字段,必須加表名或表名的別名來區分。資料庫的預設查詢方式,inner可以省略不寫。從左表取出記錄後,去匹配右表中的記錄,如果滿足條件則記錄保留,否則捨棄。語法 左表...