1. 汇总分析

1.1

select count(教师姓名)

from teacher;

* Count 是把空值排除在外 计算列数的;

1.2

select count(*)

from teacher;星号代表所有的,这个时候会把空值所在行也算上;

练习1:查询课程编号为0002的总成绩

练习2: 查询选了课程的学生人数

2. 分组: group by

分析方法:数据分组 group by 性别

应用函数 count (*)

组合结果 select 性别, count (*)

提示/注意点:先运行Select之下的语句,按顺序执行,一步步narrow范围

最后运行select字句(应用函数,组合最终要展示的结果)

注意:日期、字符串必须要加上单引号,数字好像是可加可不加

练习一:查询各科成绩最高和最低的分

练习二:查询每门课程被选修的学生数

练习三:查询男生、女生人数

3. 对分组结果指定条件:having

where字句只能指定行的条件

having子句用于指定分组之后的条件,所以是出现在group by下面一行

练习一:查询平均成绩大于60分学生的学号

平均成绩需要把成绩分成每个人的成绩,然后再计算,所以需要分组。

练习二:查询至少选修两门课程的学生学号

练习三:查询同名同姓学生名单并统计同名人数

4. 用SQL解决业务问题先有业务问题

翻译成大白话

写出分析思路

写出对应的sql语句

思路:

select 应用函数、组合结果

from 哪张表

where 查询条件

group by 数据分组

having 对分组结果指定条件

练习:如何计算每门课程的平均粗嗯贵并且平均成绩大于等于80分

5. 对查询结果排序:order by / asc desc

5.1 指定多个序列排名:按照列名从左到右进行排列;

5.2 空值 (null) 的排序

Null是排在最前面的,用这个可以去看数据里面到底有多少空值;

5.3 从查询结果中取出指定行:limit

练习一:查询不及格的课程并按课程号从大到小排列

练习二:查询每门课程的平均成绩,结果按平均成绩升序排序,平均成绩相同,则按课程号降序排列

6. 如何看懂报错信息

常见错误:在group by/having子句中使用select里的别名

在where子句中不能使用汇总函数,只能加指定条件(运算符)

数字类型如果汇总出现错误,要首先检查是否设置成数字类型了

7. SQL ZOO

新知:

7.1 如果名字中间有单引号,那么在sql书写的时候打两次单引号,就可以引用了(此为转义序列):

7.2 subject IN ('Chemistry','Physics') 此为if判断句

这个可以用来帮助排序

在集合内的将返回1,不在集合内的将返回0

7.3 错题集:每次遇到模糊查找的都忘记用 ‘like’;

Where 和 Having 子句的使用,需要搞清楚该条件是要分组前作用在数据上,还是分组之后作用。