Mysql筆記(四)多表連線查詢

2021-09-03 08:23:09 字數 2973 閱讀 9986

資料庫的建立參考我的另一篇部落格 

#多表連線查詢

交叉連線:交叉連線又叫笛卡爾積,它是指不使用任何條件,直接將乙個表的所有記錄和另乙個表中的所有記錄一一匹配。取兩個表並集。

內連線則是只有條件的交叉連線,根據某個條件篩選出符合條件的記錄,不符合條件的記錄不會出現在結果集中,即內連線只連線匹配的行。取兩個表交集。

外連線左外連線、右外連線、全外鏈結

左外連線,也稱左連線,左表為主表,左表中的所有記錄都會出現在結果集中,對於那些在右表中並沒有匹配的記錄,仍然要顯示,右邊對應的那些字段值以null來填充。

右外連線,也稱右連線,右表為主表,左連線和右連線可以互換。

mysql目前還不支援全外連線。可以用左連線union右連線實現。

自連線只有乙個表的查詢

#join

#相當於我們平時用的where,就是把兩張表中同時滿足a.id=b.id的資料找出來;

select *from tb_depta join tb_emp b on a.s_id=b.s_id;
#1、交叉連線/迪卡爾交集

select *from tb_dept,tb_emp;
#標準

select 

*from

tb_dept

cross join

tb_emp;

#2、內連線,條件:主外來鍵關聯

select

*from

tb_dept

inner joint b_emp

where

tb_dept.deptno=tb_emp.dept_id;

#3、外連線

#左連線:以左表為主表,取兩表交集,加上左表剩下的將被查詢

select

*from

tb_deptd

left join tb_empe

ond.deptno=e.dept_id;

#右連線

select

*from

tb_dept d

right join tb_empe

on d.deptno=e.dept_id;

#4、自連線:只涉及到乙個表

select

*from

tb_empe1,tb_empe2

where

e1.dept_id=e2.dept_id;

#5、外連線:outerjoin(mysql不支援outerjoin,)

#外連線就是求兩個集合的並集。從笛卡爾積的角度講就是從笛卡爾積中挑出on子句條件成立的記錄,然後加上左表中剩餘的記錄,最後加上右表中剩餘的記錄。

#另外mysql不支援outerjoin,但是我們可以對左連線和右連線的結果做union操作來實現。

select

*from

tb_deptd

left join tb_empe

on d.deptno=e.dept_id

union

select

*from

tb_deptd

right join tb_empe

on d.deptno=e.dept_id;

#using子句

#功能相當於on,區別在於using指定乙個屬性名用於連線兩個表,而on指定乙個條件。

#deptno與dept_id不同名,無法用using,這裡用id代替下。

select

*from

tb_deptd

left join tb_empe

using(id);

#子查詢

#查詢工資比smith高的員工資訊

select

*from

tb_emp

where

sal>(

select

salfrom

tb_emp

where

ename='smith'

);

#查詢月工資最高的員工姓名

select

ename

from

tb_emp

where

sal=(select max(sal) from tb_emp);

#any與子查詢返回的任意值比較,大於最小,小於最大

#查詢工資比開發工程師工資高的員工資訊

select

*from

tb_emp

where

sal>any(

select

salfrom

tb_emp

where

job='開發工程師'

);

#all,大於最大,小於最小

#查詢工資比開發工程師工資低的員工資訊

select

*from

tb_emp

where

salselect

salfrom

tb_emp

where

job='開發工程師'

mysql多表連線查詢

查詢姓名 部門名 地點 select emp.ename dept.dname,dept.loc from emp,dept where emp.deptno emp.deptno 簡化select ename dname,loc,emp.deptno from emp,dept where emp...

MySQL 連線查詢(多表查詢)

mysql 連線查詢 多表查詢 連線就是指兩個或2個以上的表 資料來源 連線起來成為乙個資料來源 實際上,兩個表的完全的連線是這樣的乙個過程 左邊的表的每一行,跟右邊的表的每一行,兩兩互相 橫向對接 後所得到的所有資料行的結果。注意 連線之後,並非形成了乙個新的資料表,而只是一種 記憶體形態 fro...

mysql多表連線查詢過程 mysql多表連線查詢

二 內連線 join 或 inner join sql語句 select from student inner join course on student.id course.id 執行結果 inner join 是比較運算子,只返回符合條件的行。此時相當於 select from student...