ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL之多表查询

2021-09-17 17:02:38  阅读:158  来源: 互联网

标签:JOIN name employees 查询 MySQL department 之多表 id SELECT


简单介绍

  • 本质
    将两个表的数据依据一定条件横向连接起来
  • 内连接
    取出两张表中匹配到的数据,匹配不到的不保留
  • 外连接
    取出两张表中匹配到的数据,匹配不到的也会保留,其值为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')

标签:JOIN,name,employees,查询,MySQL,department,之多表,id,SELECT
来源: https://blog.csdn.net/weixin_51800059/article/details/120352184

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有