插入數(shù)據(jù):
INSERT INTO dept VALUES(4,'軟件開發(fā)部');
INSERT INTO dept VALUES(5,'軟件維護部');
INSERT INTO dept VALUES(6,'秘書部');
INSERT INTO employee(NAME,deptId) VALUES('張三',4);
INSERT INTO employee(NAME,deptId) VALUES('李四',5);
INSERT INTO employee(NAME,deptId) VALUES('王五',4);
INSERT INTO employee(NAME,deptId) VALUES('陳六',5);
***多表查詢的步驟: ***
1)確定查詢哪些表
2)確定查詢哪些字段
3)確定連接條件(規(guī)則: 表數(shù)量-1)
內(nèi)連接查詢(使用最多):
-- 內(nèi)連接效果:只有滿足連接條件的數(shù)據(jù)才會顯示出來
SELECT e.name,d.name
FROM employee e,dept d
WHERE e.deptId=d.id;
-- 另一種語法
SELECT e.name,d.name
FROM employee e
INNER JOIN dept d
ON e.deptId=d.id;

Paste_Image.png
因為沒有秘書部的人,所以這個部門也沒有顯示
左/右外連接查詢(其次):
-- 需求: 查詢部門及其部門的員工(部門全部顯示)
-- 左外連接查詢效果: 左表(部門表)的數(shù)據(jù)全部顯示,右表(員工)的數(shù)據(jù)當滿足連接條件的時候,
-- 就顯示滿足條件的的數(shù)據(jù),但是如果不滿足連接條件,則顯示null
-- 預期結(jié)果:
-- 軟件開發(fā)部 張三
-- 軟件開發(fā)部 王五
-- 軟件維護部 李四
-- 軟件維護部 陳六
-- 秘書部 null
SELECT d.name,e.name
FROM dept d
LEFT OUTER JOIN employee e
ON d.id=e.deptId;
-- 可以理解為,dept在 employee表的左邊
-- 1.4 右外連接查詢
-- 右外連接查詢效果: 右表(部門表)的數(shù)據(jù)全部顯示,左表(員工)的數(shù)據(jù)當滿足連接條件的時候,
-- 就顯示滿足條件的數(shù)據(jù),但是如果不滿足連接條件,則顯示null
SELECT d.name,e.name
FROM employee e
RIGHT OUTER JOIN dept d
ON d.id=e.deptId;
-- 可以理解為,employee在dept表的右邊

Paste_Image.png
以左邊的部門為主顯示,然后找到對應(yīng)的右邊的員工,沒有顯示null
自連接查詢:
-- 需求: 查詢員工姓名及其上司姓名(沒有上司的員工也顯示)
-- 預期結(jié)果:
員工 上司
-- 張三 null
-- 李四 張三
-- 王五 李四
-- 陳六 王五
SELECT e.name AS '員工',b.name AS '上司'
FROM employee e
LEFT OUTER JOIN employee b
ON e.bossId=b.id;

Paste_Image.png

Paste_Image.png