08_MySQL DQL(SQL99标准)_多表连接查询中的内连接
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了08_MySQL DQL(SQL99标准)_多表连接查询中的内连接,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2858字,纯文字阅读大概需要5分钟。
内容图文
# sql99语法
/*
语法:
select 查询列表
from 表1 别名 【连接类型】
join 表2 别名
on 连接条件
【where 筛选条件】
【group by 分组】
【having 分组后筛选】
【order by 排序列表】
分类
内连接(重点): inner
外连接
左外(重点): left 【outer】
右外(类似左外) right 【outer】
全外: full 【outer】
交叉连接:cross
*/
# 一、内连接(就是把两个表的字段全部连接,表间没有顺序)
/*
select 查询列表
from 表1 别名
inner join 表2 别名 on 连接条件
inner join 表3 别名 on 连接条件
【where 筛选条件】
【group by 分组】
【having 分组后筛选】
【order by 排序列表】
分类:等值,非等值,自连接
*/
#1 等值连接
#案例1:查询员工名,部门名 【等值内连】
SELECT last_name,department_name
FROM employees AS e
INNER JOIN departments AS d
ON e.`department_id` = d.`department_id`;
#案例2:查询名字中包含e的员工名和工种名【等值内连 + 筛选】
SELECT last_name, job_title
FROM employees AS e
INNER JOIN jobs AS j
ON e.`job_id` = j.`job_id`
WHERE last_name LIKE ‘%e%‘;
#案例3:查询部门个数>3的城市名和部门个数【等值内连+分组+分组后筛选】
SELECT city,COUNT(*) AS "部门个数"
FROM departments AS d
INNER JOIN locations AS l
ON d.`location_id` = l.`location_id`
GROUP BY l.`city`
HAVING 部门个数>3;
#案例4:查询部门员工数>3的部门名称和员工个数,并降序排序
#【等值连接+分组+分组后筛选+ 排序】
SELECT department_name, COUNT(*) AS "员工个数"
FROM departments AS d
INNER JOIN employees AS e
ON d.`department_id` = e.`department_id`
GROUP BY e.`department_id`
HAVING 员工个数 > 3
ORDER BY 员工个数 DESC;
#案例5:查询员工名,部门名,工种名,并按部门名排序
#【多表等值连接+排序】
SELECT last_name, department_name, job_title
FROM employees AS e
INNER JOIN departments d ON e.`department_id` = d.`department_id`
INNER JOIN jobs AS j ON e.`job_id` = j.`job_id`
ORDER BY department_name DESC;
#2 非等值连接
#案例1:查询员工的工资级别
SELECT salary,grade_level
FROM employees AS e
INNER JOIN job_grades AS j
ON e.salary BETWEEN j.`lowest_sal` AND j.`highest_sal`;
#案例2:查询每个工资级别下员工个数》2的工资级别,并降序排列
SELECT COUNT(*), grade_level
FROM employees AS e
INNER JOIN job_grades AS j
ON e.`salary` BETWEEN j.`lowest_sal` AND j.`highest_sal`
GROUP BY grade_level
HAVING COUNT(*) > 20
ORDER BY COUNT(*) DESC;
#3 内连接中的自连接
#案例1:查询员工的名字,及其上级的名字
SELECT e.last_name, m.last_name
FROM employees AS e
INNER JOIN employees AS m
ON e.`manager_id` = m.`employee_id`
ORDER BY e.`last_name` ASC;
#案例2:查询名字中包含字符k的员工名,及其上级的名字
SELECT e.last_name, m.last_name
FROM employees AS e
INNER JOIN employees AS m
ON e.`manager_id` = m.`employee_id`
WHERE e.`last_name` LIKE ‘%k%‘
ORDER BY e.`last_name` ASC;
08_MySQL DQL(SQL99标准)_多表连接查询中的内连接
标签:条件 location mys rom 等值连接 连接查询 oca having and
本文系统来源:http://www.cnblogs.com/shay-zhangjin/p/7906611.html
内容总结
以上是互联网集市为您收集整理的08_MySQL DQL(SQL99标准)_多表连接查询中的内连接全部内容,希望文章能够帮你解决08_MySQL DQL(SQL99标准)_多表连接查询中的内连接所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。