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

2021-08-03 15:14:14 字數 1566 閱讀 8798

連線查詢:將多張表進行記錄的連線(按照某個指定條件進行資料拼接)

意義:在使用者檢視資料的時候,需要顯示的資料來自多張表;

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可以省略不寫。從左表取出記錄後,去匹配右表中的記錄,如果滿足條件則記錄保留,否則捨棄。語法 左表...