多表查询

第4章 多表查询

1. 显示所有员工的姓名 ename,部门号 deptno 和部门名称 dname

1
SELECT ename, deptno, dname FROM emp NATURAL JOIN dept;

2. 查询 20 号部门员工的 job 和 20 号部门的 loc

1
SELECT job, loc FROM emp NATURAL JOIN dept WHERE deptno = 20;

3. 选择所有有奖金 comm 的员工的 enamednameloc

1
SELECT ename, dname, loc FROM emp NATURAL JOIN dept WHERE comm IS NOT NULL;

4. 选择在工作地点 DALLAS 工作的员工的 enamejobdeptnodname

1
SELECT ename, job, deptno, dname FROM emp NATURAL JOIN dept WHERE loc = 'DALLAS';

5. 选择所有员工的姓名 ename,员工号 empno,以及他的管理者 mgr 的姓名 ename 和员工号 empno,结果类似于下面的格式:

employees Emp# manager Mgr#
SMITH 7369 FORD 7902
1
2
3
SELECT e.ename AS employees, e.empno AS "Emp#", m.ename AS manager, m.empno AS "Mgr#"
FROM emp e, emp m
WHERE e.mgr = m.empno;

6. 查询各部门员工姓名和他们所在位置,结果类似于下面的格式:

Deptno Ename Loc
20 SMITH DALLAS
1
SELECT deptno, ename, loc FROM emp NATURAL JOIN dept;

7. 显示:员工编号,员工名称,员工所在部门编号,员工所在部门名称。

1
SELECT empno, ename, deptno, dname FROM emp NATURAL JOIN dept;

8. 显示:员工编号,员工名称,经理编号,经理名称。

1
2
3
SELECT e.empno, e.ename, m.empno AS 经理编号, m.ename AS 经理名称
FROM emp e, emp m
WHERE e.mgr = m.empno;

9. 显示:员工编号,员工名称,经理编号,经理名称,员工所在部门编号,员工所在部门名称。

1
2
3
SELECT e.empno, e.ename, e.deptno, d.dname, m.empno AS 经理编号, m.ename AS 经理名称
FROM emp e, emp m, dept d
WHERE e.mgr = m.empno AND e.deptno = d.deptno;

10. 显示:员工编号,员工名称,经理编号,经理名称,员工所在部门编号,员工所在部门名称,经理所在部门编号,经理所在部门名称。

1
2
3
SELECT e.empno, e.ename, e.deptno, d.dname, m.empno AS 经理编号, m.ename AS 经理名称, m.deptno AS 经理部门编号, p.dname AS 经理部门名称
FROM emp e, emp m, dept d, dept p
WHERE e.mgr = m.empno AND e.deptno = d.deptno AND m.deptno = p.deptno;

11. 查询名字是 S 开头的员工姓名,员工号,部门号,部门地理位置。

1
SELECT ename, empno, deptno, loc FROM emp NATURAL JOIN dept WHERE ename LIKE 'S%';

12. 查询员工姓名,部门名称,工资,工资等级。

1
2
3
SELECT ename, dname, sal, s.grade
FROM emp NATURAL JOIN dept, salgrade s
WHERE sal BETWEEN s.losal AND s.hisal;

13. 查询工作在 New York 的所有员工。

1
SELECT * FROM emp NATURAL JOIN dept WHERE loc = 'NEW YORK';

14. 什么是等值连接、左连接、右连接、内连接、全连接、自连接,及各连接的区别?

  • 等值连接(Equi Join):通过相等条件连接两个表,例如 ON emp.deptno = dept.deptno
  • 左连接(Left Join):返回左表的所有记录,即使右表中没有匹配的记录。
  • 右连接(Right Join):返回右表的所有记录,即使左表中没有匹配的记录。
  • 内连接(Inner Join):只返回两个表中匹配的记录。
  • 全连接(Full Join):返回两个表中所有记录,无论是否匹配。
  • 自连接(Self Join):表与自身连接,通常用于查询层级关系,例如员工和经理的关系。

多表查询
https://blog.pangcy.cn/2018/10/04/数据库相关/Oracle/SQL 练习/多表查询/
作者
子洋
发布于
2018年10月4日
许可协议