MySQL之表連接(內外連接和重命名的使用)


#要多練練

 

1.連接查詢根據連接方式分為

內連接

   等值連接

   非等值連接

   自連接

外連接

    左外連接(左連接)

   右外連接(右連接)

 

當多張表進行連接查詢,若沒有任何條件進行限制,會

發生什么現象?

會出現笛卡爾積,即兩張表的記錄的條數的乘積

 

##哪里用as?為什么這里不能用as?

 

#sql92:內連接中的等值連接

select e.ename,d.dname 

from emp e,dept d

where e.deptno=d.deptno;

 

#SQL99:內連接中的等值連接,優點:對表連接不滿意的話,

#可以再追加where進行過濾。

select e.ename,d.dname 

from emp e join dept d

on e.deptno=d.deptno;

 

#SQL99:內連接中的非等值連接?

#eg:顯示薪水等級、部門名、薪水等

select e.ename,e.sal,s.grade

from emp e join salgrade s

on e.sal

between s.losal and s.hisal;

 

#找出每個員工的上級領導的名稱,說明領導也從屬於員工表,所以要

#把一張表看成兩張表(a、b兩張表)。

select a.ename empname,b.ename

leadrname from emp a inner join

emp b on a.mgr=b.empno;

select a.ename empname,b.ename 

leadername from emp a join emp b

on a.mgr=b.empno;

 

#找出每個員工對應的部門名稱,要求顯示全部

#部門名全部顯示

select e.ename,d.dname 

from emp e 

right join dept d 

on d.deptno=d.deptno;

 

#什么時候用外連接?什么時候用內連接?

#內連接的記錄條數小於等於外連接,內連接

#是會顯示相匹配的信息,對於不完整的信息不會顯示

#而外連接(無條件的全部顯示)是會對全部進行顯示的

#左連接是將左邊全部顯示出來,而右連接是將右邊全部

#顯示出來,若無記錄則用null來匹配

 

#案例:找出每個員工對應的領導名,要求顯示
#所有的員工

select a.ename empname,b.ename leadername
from emp a
left join emp b
on a.mgr=b.empno;


#把一張表看成a、b兩張表

#案例:找出每一個員工對應的部門名稱,以及
#該員工對應的工資等級。要求顯示員工名、部門
#名、工資等級


#多張表進行連接的語法格式:
select
XXX
from
a
join
b
on
條件
join
c
on
條件;
原理:a和b連接,再用a和c連接。

select
e.ename,d.dname,s.grade
from
emp e
join
dept d
on
e.deptno=d.deptno;
join
salgrade s
on
e.sal between s.losal and s.hisal;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM