自己的MySQL阅读笔记,持续更新,直到看书结束。
数据库技术可以有效帮助一个组织或者企业科学、有效的管理数据,也是现在很多企业招聘数据分析师的必备要求之一。
大家如果看过MySQL的书,也可以看我的知识导图做一个复习,因为是自己的读书笔记,所以有的地方也不是很详尽,但是十分欢迎私下交流共同进步。
SQL整理的目录今天有觉悟:专栏索引——个人的数据分析学习(持续更新)zhuanlan.zhihu.com
目录分组聚合查询
子查询带IN关键字的子查询
带比较运算符的子查询
带EXISTS关键字的子查询
1.分组聚合查询
实例
计算选修课程编号为“21001”的学生平均成绩
SELECT AVG(score) FROM tb_score
WHERE courseNo = '21001';
2.子查询
子查询也称为嵌套查询,是将一个查询语句嵌套在另一个查询语句的WHERE子句或HACING短语中,前者被称为内层查询或子查询,后者被称为外层查询或父查询,在整个SELECT查询语句中,先计算子查询,然后将子查询的结果作为副查询的过滤条件。
2.1 带IN关键字的子查询
用于判定一个值是否存在于子查询的结果集中
实例
在学生表tb_student中,将学号出现在成绩表tb_score中(表名该学生选修了课程)的学生姓名查询出来,使用子查询的SQL
SELECT studentName
FROM tb_student
WHERE tb_student.studentNo IN
(SELECT DISTINCT tb_score.studentNo FROM tb_score)
2.2 带比较运算符的子查询
实例1
查询男生中比某个女生出生年份晚的学生姓名和出生年份
SELECT studentName, YEAR(birthday) FROM tb_student
WHERE sex='男' AND YEAR(birthday) > ANY(
SELECT YEAR(birthday) FROM tb_student WHERE sex='女');
实例2
查询男生中比所有女生出生年份晚的学生姓名和出生年份
SELECT studentName, YEAR(birthday) FROM tb_student
WHERE sex='男' AND YEAR(birthday) > ALL(
SELECT YEAR(birthday) FROM tb_student WHERE sex='女');
2.3 带EXISTS关键字的子查询
实例
查询选修了课程号为“31002”的学生姓名
SELECT studentName FROM tb_student a
WHERE EXISTS
(SELECT * FROM tb_score b
SHERE a.studentNo = b.studentNo AND courseNo='31002')