MySQL之多表查询
2021/9/17 19:05:38
本文主要是介绍MySQL之多表查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
简单介绍
- 本质
将两个表的数据依据一定条件横向连接起来 - 内连接
取出两张表中匹配到的数据,匹配不到的不保留 - 外连接
取出两张表中匹配到的数据,匹配不到的也会保留,其值为null
一般外连接用于查询“一个表中有,一个表中没有的数据”- 左外连接
- 左边的表是主表,右边的表是从表
- 主表出现全部的列,从表只出现能与主表匹配的列,不能匹配到的列的所有字段全部显示null
- 右外连接
- 与左外连接相反
- 左外连接
SQL92的写法
# 案例:查询有奖金的员工的员工名、部门名、城市 SELECT `last_name`, `department_name`, `city` FROM `locations` lo, `employees` e, `departments` d WHERE e.`commission_pct` IS NOT NULL AND e.`department_id` = d.`department_id` AND d.`location_id` = lo.`location_id`;
SQL99的语法
# 1. 内连接 ------ 等值连接 # 案例1:查询员工名、部门名 SELECT `last_name`, `department_name` FROM `employees` e INNER JOIN `departments` d ON e.`department_id` = d.`department_id`; # 案例2:查询名字中包含e的员工姓名和工种名称 SELECT `last_name`, `job_title` FROM `employees` e INNER JOIN `jobs` j ON e.`job_id` = j.`job_id` WHERE e.`last_name` LIKE '%e%'; # 2、内连接 ------ 非等值连接 # 案例:查询员工的工资级别 SELECT `grade_level`, `salary` FROM `employees` e INNER JOIN `job_grades` g ON e.`salary` BETWEEN g.`lowest_sal` AND g.`highest_sal` # 3、内连接 ------ 自连接 # 案例:查询员工姓名、领导姓名 SELECT e.`last_name`, m.`last_name` FROM `employees` e INNER JOIN `employees` m ON e.`manager_id` = m.`employee_id` # 4. 外连接 # 案例1:查询男朋友不在男神表的 女生姓名:女神是主表,拿 主表的参数 去 匹配副表 SELECT b.`name` FROM `beauty` b LEFT JOIN `boys` bo ON b.`boyfriend_id` = bo.`id` WHERE bo.`id` IS NULL; # 案例2:查询没有部门的城市 SELECT lo.`city` FROM `locations` lo LEFT JOIN `departments` d ON d.`location_id` = lo.`location_id` WHERE `department_id` IS NOT NULL; # 案例3:查询没有员工的部门 # 左外 SELECT d.* FROM departments d LEFT JOIN employees e ON d.department_id = e.department_id WHERE e.email IS NULL # 右外 SELECT d.* FROM employees e RIGHT JOIN departments d ON e.department_id = d.department_id WHERE e.email IS NULL; # 案例4:查询部门名为SAL或IT的员工信息 SELECT e.* FROM `employees` e LEFT JOIN `departments` d ON e.`department_id` = d.`department_id` WHERE d.`department_name` IN('SAL', 'IT')
这篇关于MySQL之多表查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南