MySQL的多表查询(2):多表查询的分类

对多表查询进行分类,
根据连接条件中是否出现等式,可分为等值连接和非等值连接。
根据连接条件是否自我引用了,可分为自连接和非自连接。
根据连接结果,可分为内连接和外连接。

等值连接和非等值连接

等值连接

查询员工的employee_id,last_name,department_id,department_name,location_id,city。

# 等值连接
SELECT e.employee_id,e.last_name,e.department_id,d.department_name,l.location_id,l.city
FROM employees e,departments d,locations l
WHERE e.department_id = d.department_id
AND d.location_id = l.location_id;  -- 返回106条记录

非等值连接

查询员工的工资,工资等级。

SELECT e.employee_id,e.last_name,e.salary,j.grade_level
FROM employees e,job_grades j
WHERE e.salary BETWEEN j.lowest_sal AND j.highest_sal;

SELECT e.employee_id,e.last_name,e.salary,j.grade_level
FROM employees e,job_grades j
WHERE e.salary >= j.lowest_sal AND e.salary <= j.highest_sal;

自连接和非自连接

自连接

# 查询员工id、姓名及其管理者的id和姓名
SELECT e1.employee_id,e1.last_name,e2.employee_id,e2.last_name
FROM employees e1,employees e2
WHERE e1.manager_id = e2.employee_id; -- 返回106条记录

非自连接

以上的等值连接和非等值连接的示例都属于非自连接。

内连接和外连接

内连接

# 查询员工id及其所在部门
SELECT e.employee_id,d.department_name
FROM employees e,departments d
WHERE e.department_id = d.department_id;

在这里插入图片描述

外连接

外连接,又分为左外连接、右外连接和满外连接。

  • 左外连接。两个表在连接过程中除了返回满足连接条件的行以外,还返回左表中不满足条件的行。
  • 右外连接。两个表在连接过程中除了返回满足连接条件的行以外,还返回了右表中不满足条件的行。
  • 满外连接或全外连接。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qzw752890913/article/details/126125818