基礎知識:笛卡爾積現象,在知識點中以寫。網址如下:
https://www.cnblogs.com/ukimiya/articles/15355326.html
一.連接查詢
1.單表查詢和連接查詢:
單表查詢:從一張表中單獨查詢,稱為單表查詢。
連接查詢:emp表和dept表聯合起來查詢數據,從emp表中取員工名字,從dept表中取部門名字。這種跨表查詢,多張表聯合起來查詢數據,被稱為連接查詢。
2.連接查詢的分類:
①按年代分類:
SQL92:1992年的時候出現的語法
SQL99:1999年的時候出現的語法,重點學習SQL99。
②按表連接方式分類:
內連接:A和B連接,2表沒有主次關系,平級。
等值連接
非等值連接
自連接
外連接:A和B連接,產生主次關系,join后是主表。
左外連接(左連接)
右外連接(右連接)
全連接(不講)。
二.內連接(等值、非等值、自)--inner join....on....
1.等值連接:
舉例:查詢員工的員工名(ename--emp表)和部門名(dname--dept表)
語句:
select e.ename,d.dname
from emp e
inner join dept d
on e.deptno = d.deptno;
2.非等值連接:
舉例:查詢每個員工的薪資等級(grade),顯示員工名(ename)、薪資(sal)、薪資等級(grade)
語句:
select e.ename, e.sal, s.grade
from emp e
inner join salgrade s
on e.sal between s.losal and s.hisal;
3.自連接:同表自連接
舉例:查詢員工的上級領導(mgr,empno,ename),要求顯示員工名(ename)和對應的領導名(ename)
語句:
select a.ename as '員工名', b.ename as '領導名'
from emp a //員工表
join emp b //領導表
on a.mgr = b.empno; //員工的領導編號 = 領導的員工編號
三.外連接(左外、右外)--left/right outer join ... on ...
1.左連接:left
2.右連接:right
3.left / right的意義:
將join關鍵字右邊的表A看成主表,將A表的數據全部查詢出來,捎帶着關聯查詢左邊的表B。
4.Q:外連接查詢結果條數一定是 >= 內連接的查詢結果條數?
A:是的。
四.多表連接
1.一條SQL中內連接+外連接混合:
五.查詢結果去重--distinct
1.格式:select distinct job from emp;
2.使用注意事項:
①distinct只能出現在所有字段的最前方;
×: select ename,distinct job from emp;
②distinct出現在job,deptno兩個字段之前,表示兩個字段聯合起來去重。
select distinct job,deptno from emp;
③舉例: