資料庫的建立參考我的另一篇部落格
#多表連線查詢自連線只有乙個表的查詢交叉連線:交叉連線又叫笛卡爾積,它是指不使用任何條件,直接將乙個表的所有記錄和另乙個表中的所有記錄一一匹配。取兩個表並集。
內連線則是只有條件的交叉連線,根據某個條件篩選出符合條件的記錄,不符合條件的記錄不會出現在結果集中,即內連線只連線匹配的行。取兩個表交集。
外連線左外連線、右外連線、全外鏈結
左外連線,也稱左連線,左表為主表,左表中的所有記錄都會出現在結果集中,對於那些在右表中並沒有匹配的記錄,仍然要顯示,右邊對應的那些字段值以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...