前言:
文中以兩個表簡單為例,講述內外連線的含義,兩個表的建表語句,及資料為:
create table `a_table` (
`a_id` int(11) default null,
`a_name` varchar(10) default null,
`a_part` varchar(10) default null
) engine=innodb default charset=utf8;
insert into `a_table`(`a_id`,`a_name`,`a_part`) values (19001,'小紅','總裁辦'),(19002,'小明','研發一部'),(19003,'小張','研發二部'),(19004,'小美','秘書處'),(19005,'小黃','辦公室');
create table `b_table` (
`b_id` int(11) default null,
`b_salary` varchar(10) default null
) engine=innodb default charset=utf8;
insert into `b_table`(`b_id`,`b_salary`) values (19001,'20000'),(19002,'10000'),(19004,'15000'),(19009,'8000');
如下:
表a,儲存人員部門編號資訊;
表b儲存人員薪資;
一、內連線:
關鍵字:inner join
含義:將乙個表中的行與其他表中的行根據條件進行匹配,並允許從兩個表中查詢包含列的行記錄
範圍:只連線匹配的行
場景:
從表中可以看到,表b_table中並沒與完全儲存表a_table所有人員的薪資,如果想要查詢,所有可以查詢到薪資的人員薪資情況,這是我們可以使用內連線查詢。
所有查詢的結果都能夠在連線的表中有記錄。
以id匹配,返回兩個表中id相同的行,拼接結果返回。
根據結果返回,查詢結果根據id匹配a_table和b_table,只返回匹配的行。
select * from a_table a inner join b_table b on a.a_id = b.b_id
關鍵字:left join on / left outer join on含義: 以左邊的表為基準,去匹配右邊的表的資料,匹配不到的顯示為null範圍: 包含左邊全部的行場景:我們需要查詢所有人員的薪資範圍,薪資表中沒有人員薪資記錄的返回null。
select * from a_table a left join b_table b on a.a_id = b.b_id
結果:
根據結果可以看到,本次查詢以a_table 為基準,根據id去匹配b_table中的資料,匹配不到的返回null。
三、右外連線:
關鍵字:right join on / right outer join on
含義:以右邊的表的資料為基準,去匹配左邊所有的行
範圍:包含右邊所有的行
場景:
我們想要根據薪資表盡可能全的了解員工工資情況,所以以薪資表為基準,查詢薪資表記錄的所有人員的薪資情況,查詢不到的人員為null。
select * from a_table a right join b_table b on a.a_id = b.b_id
結果:
根據結果可以看到,本次查詢以b_table為基準,根據id去匹配a_table中的資料,匹配不到的返回null。
Mysql中的關聯查詢 內連線,外連線,自連線
在使用資料庫查詢語句時,單錶的查詢有時候不能滿足專案的業務需求,在專案開發過程中,有很多需求都是要涉及到多表的連線查詢,總結一下mysql中的多表關聯查詢 是指所有查詢出的結果都是能夠在連線的表中有對應記錄的。以t employee 員工表 和t dept 部門表 為例 t employee表中的記...
mysql 內連線和外連線查詢
一 內連線查詢 笛卡兒積 內聯接查詢inner join,mysql可以簡寫為join 二 外連線查詢 左外聯接查詢left outer join,mysql可以簡寫為left join 右外聯接查詢right outer join,mysql可以簡寫為right join 舉個栗子 建立兩張表t1...
MySQL內連線 外連線(左連線 右連線)查詢
mysql多表查詢在實際應用中是非常重要的,現在這裡用兩張表讓你徹底搞懂mysql內連線和外連線查詢。其中comment表中的user id為user表中的id。準備工作 建立使用者資訊user表 create table user id int 11 not null auto increment...