數(shù)據(jù)庫(kù)基礎(chǔ)

- 需求:查詢員工及其所在部門(顯示員工姓名,部門名稱)

-- 多表查詢規(guī)則:1)確定查詢哪些表? 2)確定哪些哪些字段? 3)表與表之間連接條件 (規(guī)律:連接條件數(shù)量是表數(shù)量-1)

2.2 內(nèi)連接查詢:只有滿足條件的結(jié)果才會(huì)顯示(使用最頻繁)

SELECT empName,deptName? ? ? -- 2)確定哪些哪些字段

FROM employee,dept? ? -- 1)確定查詢哪些表

WHERE employee.deptId=dept.id? -- 3)表與表之間連接條件

-- 內(nèi)連接的另一種語(yǔ)法

SELECT empName,deptName

FROM employee

INNER JOIN dept(innder join 內(nèi)連接)

ON employee.deptId=dept.id;(on 連接條件)

-- 使用別名(別名as可以省略)

SELECT e.empName,d.deptName

FROM employee as e

INNER JOIN dept as d

ON e.deptId=d.id;

注意:內(nèi)連接出來的結(jié)果是:只有滿足條件才會(huì)顯示。那不滿足條件的怎么辦呢?比如下面?


-- 需求: 查詢每個(gè)部門的員工(以部門為主)

-- 預(yù)期結(jié)果:

--? 軟件開發(fā)部? 張三

--? 軟件開發(fā)部? 李四

--? 應(yīng)用維護(hù)部? 王五

--? 秘書部? ? ? 陳六

--? 總經(jīng)辦? ? ? null

-- 2.2 左[外]連接查詢使用左邊表的數(shù)據(jù)去匹配右邊表的數(shù)據(jù),如果符合連接條件的結(jié)果則顯示,如果不符合連接條件則顯示null

-- (注意: 左外連接:左表的數(shù)據(jù)一定會(huì)完成顯示!)(left outer join outer可以省略)

SELECT d.deptName,e.empName

FROM dept d ? ? ? ? ? ?先寫左表,因?yàn)橛貌块T去匹配,去連接哪個(gè)表,去連接員工表

LEFT OUTER JOIN employee e

ON d.id=e.deptId; ? ? ? ? on 連接條件

2.3 右[外]連接查詢: 使用右邊表的數(shù)據(jù)去匹配左邊表的數(shù)據(jù),如果符合連接條件的結(jié)果則顯示,如果不符合連接條件則顯示null

-- (注意: 右外連接:右表的數(shù)據(jù)一定會(huì)完成顯示!

SELECT d.deptName,e.empName

FROM employee e

RIGHT OUTER JOIN dept d

ON d.id=e.deptId;

2.4 自連接查詢(一張表)

- 需求:查詢員工及其上司

-- 預(yù)期結(jié)果:

-- 張三? ? null

-- 李四? ? 張三

-- 王五? ? 李四

-- 陳六? ? 王五

SELECT e.empName,b.empName

from employee e

left outer join employee b

on e.bossid=b.id

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容