登录
首页 >  数据库 >  MySQL

MySQL学习笔记08__多表查询(下)

来源:SegmentFault

时间:2023-02-17 21:30:03 258浏览 收藏

在数据库实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《MySQL学习笔记08__多表查询(下)》,聊聊MySQL,希望可以帮助到正在努力赚钱的你。

细枝末节

SELECT 查询列表
FROM 表1 别名 [连接类型]
JOIN 表2 别名
ON 连接条件
[WHERE 筛选条件]
[GROUP BY 分组]
[HAVING 筛选条件]
[ORDER BY 排序列表]

连接类型:

SELECT 查询列表
FROM 表1 别名
INNER JOIN 表2 别名
ON 连接条件

分类

/* 查询员工名,部门名 */
SELECT e.name, d.name
FROM emp e
INNER JOIN dept d
ON e.dept_id = d.id

/* 查询名字中包含e的员工名和工种名 */
SELECT e.name, j.name
FROM emp e
INNER JOIN job j
ON e.job_id = j.id
WHERE e.name LIKE '%e%';

/* 查询部门个数>3的城市名和部门个数 */
SELECT city, COUNT(*)
FROM location l
INNER JOIN dept d
ON d.loc_id = l.id
GROUP BY city
HAVING COUNT(*)>3

/* 查询员工名,部门名,工种名,并按部门降序 */
SELECT e.name, d.name, j.name
FROM emp e
INNER JOIN dept d ON e.dept_id = d.id
INNER JOIN job j ON e.job_id = j.id
ORDER BY d.name DESC;
非等值连接
示例

/* 查询员工的工资级别 */
SELECT salry, grade
FROM emp e
INNER JOIN salary_grade g
ON e.salary BETWEEN g.lowwest_sal AND g.highest_sal;
自连接
示例

/* 查询姓名中包含k的员工姓名及其上司姓名 */
SELECT e.name, m.name
FROM emp e
INNER JOIN emp m
ON e.mng_id = m.id
WHERE e.name LIKE '%k%';

外连接

示例

/* 查询男朋友不在男生表的女生名 */

/* 第一种方式:左外连接 */
SELECT w.name, m.*
FROM womwn w
LEFT OUTER JOIN man m
ON w.cp_id = m.id
WHERE m.name IS NULL;

/* 第二种方式:右外连接 */
SELECT w.name m.*
FROM man m
RIGHT OUTER JOIN woman w
ON w.cp_id = m.id
WHERE m.nae IS NULL;

到这里,我们也就讲完了《MySQL学习笔记08__多表查询(下)》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于mysql的知识点!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表