介紹
可以將兩個Table組合在一起。
JOIN語法種類
- inner join
- outer join
- left join
- right join
- full join
範例
-- 建立資料夾
CREATE TABLE teams (
id SERIAL PRIMARY KEY,
name VARCHAR(20)
);
CREATE TABLE users(
id SERIAL PRIMARY KEY,
name VARCHAR(50),
salary INTEGER,
team_id INTEGER,
FOREIGN KEY(team_id) REFERENCES teams(id)
);
-- 新增資料
INSERT INTO teams(name) VALUES
('開發部'),
('人事部'),
('行銷部'),
('設計部');
INSERT INTO users(name, salary, team_id) VALUES
('張曉明', 46000, 1),
('王大陸', 47000, 1),
('李小月', 53000, 2),
('陳淑芬', 56000, 2),
('林小豪', 46000, 1),
('陳余華', 41000, NULL),
('王小美', 40000, NULL);
--
inner join
查詢有部門的員工資料
八成都使用inner join方法
SQL處理順序
先進行JOIN,然後再SELECT階段選取所需欄位
left join
顯示未分配部門的員工資料
SQL處理順序
先進行JOIN,然後再SELECT階段選取所需欄位
right join
查詢空部門的資料
查詢部門完全沒有員工的情況下。
SQL處理順序
- 先進行JOIN,然後再SELECT階段選取所需欄位
- 再搭配where篩選空部門
搭配where篩選空部門
SELECT
users.name as user_name,
teams.name as team_name
FROM users
RIGHT JOIN teams ON users.team_id = teams.id
WHERE users.name IS NULL;
full join
部門配置與新進人員總覽
SQL處理順序
先進行JOIN,然後再SELECT階段選取所需欄位
欄位提供給資料庫做顯示null可能會引發錯誤。所以會儘量搭配COALESCE避免。