MySQL連線查詢 內連線和外連線的區別

2021-07-29 23:52:35 字數 2146 閱讀 1700

1.使用連線查詢的場景

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

進行資料的拼接(兩張表的內容顯示在乙個結果表中 使用連線查詢)

最終的結果是:記錄數有可能變化,字段數一定會增加(至少兩張表的合併)

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

連線查詢的分類 4類

內部有聯絡,使用內連線

格式: [inner] join ----inner可省

結果:從左表中取出每一條記錄,去右表中與所有的記錄進行匹配;

匹配必須是某個條件是左表中與右表中相同,才會保留結果,否則不保留;

基本語法:

左表 [inner] join 右表

on左表.欄位 = 右表.欄位;

注意事項:

1、on

表示連線條件;條件字段代表相同的業務含義

(如 stu.cid 和 cla.id)

學生stu表中的班級cid 和 班級cla表中的id

2、內連線可以沒有連線條件,沒有on

之後的內容,

這時候系統會保留所有結果(笛卡爾集)

3、內連線可以使用where 代替 on

通常不用where,因為where沒有on

效率高 on

指匹配到第一條成功的就結束,其他不匹配;

若沒有,不進行匹配

而where會一直匹配,進行判斷

4、通常使用字段別名 表別名

在查詢資料的時候,不同表有同名字段,

這時候需要加上表名才能區分,

而若表名太長,使用表別名

若不想使用預設的欄位名 可以通過[as] 設定字段別名

外連線 【掌握】--以某一張表為基表 進行相關查詢

outer join 以某張表為主,取出裡面的所有記錄,

然後每條與另外一張表進行連線,

不管能不能匹配上條件,最終都會保留,

能匹配,正確保留;

不能匹配其他表的字段都置空null

分類:分為兩種 左連線,右連線

left

join 左外連線---左連線,以左表為主

right

join 右外連線---右連線,以右表為主

基本語法:

左表 left/right

join 右表

on 左表.欄位 = 右表.欄位;------條件必須有

交叉連線【幾乎不用】

基本不用這個連線查詢

cross join:從一張表中迴圈取出每一條記錄,

每條記錄都會去另一張表中進行匹配;

匹配結果一定保留(無條件匹配)------笛卡爾集;

而連線就會增加(保留),形成的結果就是笛卡爾集;

基本語法:

左表 cross join 右表;

等價於 from 左表,右表;------沒有條件

笛卡爾集沒有意義,應該盡量避免(交叉連線沒用)

存在的價值:

保證連線的結構的完整性

自然連線【很少用】

natural join 自然連線 就是系統自動匹配連線條件

系統以欄位名字作為匹配模式(同名字段作為字段,多個同名字段都作為條件)

自然連線:可以分為 自然內連線 和 自然外連線

內連線 natural left join 自然左外連線

其實:內連線和外連線都可以模擬自然連線,使用同名字段,合併字段

左表 left/ right inner join 右表 on using(欄位名)

-----使用同名字段,合併字段

--自然內連線

select * from stu natural

join cla;

--自然左外連線

select * from stu natural

left

join cla;

--外連線模擬自然左外連線

select * from stu left

join cla using(id);

Mysql連表查詢(內連線 外連線)

建立兩張 並分別插入資料 create table ifnot exists left table id int auto increment,age int,name varchar 20 primary key id engine innodb default charset utf8 auto...

mysql 內連線和外連線查詢

一 內連線查詢 笛卡兒積 內聯接查詢inner join,mysql可以簡寫為join 二 外連線查詢 左外聯接查詢left outer join,mysql可以簡寫為left join 右外聯接查詢right outer join,mysql可以簡寫為right join 舉個栗子 建立兩張表t1...

連表查詢(內連線,左外連線,右外連線)

用兩個表 a table b table 關聯欄位a table.a id和b table.b id來演示一下mysql的內連線 外連線 左 外 連線 右 外 連線 全 外 連線 mysql版本 server version 5.6.31 mysql community server gpl 資料庫...