兩張表 部門表(dept)和員工表(usert)中全部的數據數據庫
1.--左鏈接 usert(員工表) dept(部門表)
--顯示員工信息時,有的員工可能尚未分配到某個具體的部門(新進員工),其所屬部門一項就沒有數據,可是員工仍然須要顯示,即員工表數據須要所有顯示
select u.name,d.deptname from usert u left join dept d on u.deptid=d.deptid order by u.idspa
2.--右鏈接
--新部門尚未員工,顯示時也須要把部門顯示出來
select u.name,d.deptname from usert u right join dept d on u.deptid=d.deptid order by u.id;設計
2.1.--其實右鏈接和把表換位置後的左鏈接是同樣的
select u.name,d.deptname from dept d left join usert u on u.deptid=d.deptid order by u.id;select
3.--內鏈接 顯示查詢出來條件對應的
select u.name,d.deptname from usert u join dept d on u.deptid=d.deptid;im
3.1 可是通常寫成這樣的數據
select u.name,d.deptname from usert u,dept d where u.deptid=d.deptid;查詢
4.--全外鏈接
--可能有時候須要把整個公司的員工和部門信息作一個總覽,能夠對員工表和部門表
select u.name,d.deptname from usert u full join dept d on u.deptid=d.deptid;img
5.--自鏈接
--簡單地說就是本身和本身進行鏈接,鏈接的條件就是本表的主鍵。一般認爲在數據庫中存在父子關係
--時,應該設計成兩張表。但若是父子都是同一實體,就能夠簡化設計成一張表。好比,查看員工及直接
--上級的名字: (上級也是員工,上級的數據也是員工數據,也應該存儲在員工表中。)
--當成兩張表查便可(mgr 字段爲上級id)
select yg.name,sj.name from usert sj,usert yg where yg.mgr=sj.idco
6.--交叉鏈接
--適合每一個員工對全部部門評價
select u.name,d.deptname,null from usert u cross join dept djoin
通常也寫成
select u.name,d.deptname,null from usert u,dept d
--內鏈接和where相同
inner join
--左向外鏈接,返回左邊表全部符合條件的
left join
--右向外鏈接,返回右邊表全部符合條件的
right join
--完整外部鏈接,左向外鏈接和右向外鏈接的合集
full join
--交叉鏈接,也稱笛卡兒積。返回左表中的每一行與右表中全部行的組合
cross join