外連線與內連線,左連線與有連線區別

2021-10-23 20:48:29 字數 2211 閱讀 1313

從哪個表中查

查哪些字段

條件是什麼

​ 使用where語句消除無用資料

示例

select * from emp,dept where emp.dept_id=dept.id;
例題1:查詢所有員工資訊與對應的部門資訊

select * from emp,dept where emp.dept_id=dept.id;
例題2:查詢員工表的姓名 性別 部門表的名稱

select  t1.e_name,t1.gender, t2.dept_name from emp t1,dept t2 where t1.dept_id = t2.id;
語法

select 字段列表 from 表名1 [inner] join 表名2 on 條件
示例

1.完整寫法

select * from emp inner join dept on emp.dept_id = dept.id;

2.省略 inner

select * from emp join dept on emp.dept_id = dept.id;

語法

select 字段列表 from 表1 left [outer] join 表2 on 條件;

示例

1.完整格式

select * from emp left outer join dept on emp.dept_id = dept.id;

2.省略格式

select * from emp left join dept on emp.dept_id = dept.id;

​ 左外連線查詢的是:在左表有的基礎上,根據條件整合笛卡爾積的查詢

​ 如果我們想員工表中新增新的員工資訊,表示新來的員工,但是在部門表中並沒有給他新增部門資訊,如果我們使用內連線會產生怎樣的效果?

select * from emp ,dept where emp.dept_id = dept.id;
​ 我們會發現,並不會將新新增的員工資訊顯示出來,因此我們就要用到了外連線

select * from emp left join dept on emp.dept_id = dept.id;
​ 這個時候新新增的員工資訊就顯示出來了,但是如果我們使用右連線,發現又沒有員工資訊,這是因為使用右連線會以右表為基礎對左表進行查詢,求其交集,因為新新增的員工沒有部門資訊,因此也就沒有交集,也就查不到員工資訊。

select * from emp right join dept on emp.dept_id = dept.id;
語法

select 字段列表 from 表1 right [outer] join 表2 on 條件;

示例

1.完整格式

select * from emp right outer join dept on emp.dept_id = dept.id;

2.省略格式

select * from emp right join dept on emp.dept_id = dept.id;

​ 右外連線查詢的是:在右表有的基礎上,根據條件整合笛卡爾積的查詢

內連線,顯示兩個表中有聯絡的所有資料;

左鏈結,以左表為參照,顯示所有資料;

右鏈結,以右表為參照顯示資料;

左連線,外連線,內連線區別

left join 左聯接 返回包括左表中的所有記錄和右表中聯結字段相等的記錄 right join 右聯接 返回包括右表中的所有記錄和左表中聯結字段相等的記錄 inner join 等值連線 只返回兩個表中聯結字段相等的行 舉例如下 表a記錄如下 aid anum 1 a20050111 2 a2...

內連線 左外連線 右外連線區別

感覺這篇部落格寫的比較通俗易懂,就轉一下。有兩個表a和表b。表a結構如下 aid int 標識種子,主鍵,自增id aname varchar 資料情況,即用select from a出來的記錄情況如下圖1所示 圖1 a表資料 表b結構如下 bid int 標識種子,主鍵,自增id bnameid ...

左連線與右連線,外連線與內連線

左 left join select form tab1 left join tab2 on user id tab2.user id where tab1.user id 4 意思 就是讓tab1裡的user id為4的所有friend id當作tab2裡的user id,在tab2裡查詢符合的資...