更新时间:2025-09-11 GMT+08:00
连接查询
连接查询也可称为跨表查询,需要关联多个表进行查询。
-- 建表并插入数据。
m_db=# CREATE TABLE emp(
id int, --员工编号
name varchar(20), --员工姓名
deptno int --所属部门编号
);
m_db=# CREATE TABLE dept(
deptno int, --部门编号
depname varchar(20) --部门名
);
m_db=# INSERT INTO emp VALUES (1, 'Joe', 10), (2, 'Scott', 20), (3, 'Ben', 999); --Ben还没有确认是哪一个部门所以部门编号是999
m_db=# INSERT INTO dept VALUES (10, 'hr'), (20, 'it'), (30, 'sal'); --sal部门没有员工
- 内连接(INNER JOIN)
m_db=# SELECT t1.id,t1.name,t2.depname FROM emp t1 JOIN dept t2 ON t1.deptno = t2.deptno; id | name | depname ----+-------+--------- 1 | Joe | hr 2 | Scott | it (2 rows)
- 左连接(LEFT JOIN)
m_db=# SELECT t1.id,t1.name,t2.depname FROM emp t1 LEFT JOIN dept t2 ON t1.deptno = t2.deptno; id | name | depname ----+-------+--------- 1 | Joe | hr 2 | Scott | it 3 | Ben | (3 rows)
- 右连接(RIGHT JOIN)
m_db=# SELECT t1.id,t1.name,t2.depname FROM emp t1 RIGHT JOIN dept t2 ON t1.deptno = t2.deptno; id | name | depname ----+-------+--------- 1 | Joe | hr 2 | Scott | it | | sal (3 rows)
父主题: SELECT