练习一:汇总函数
汇总函数包括:(如果汇总函数后面写的是列名,会排除空值,如果输入*,才包含空值)
- Count:求某列的行数
- Sum:对某列数据求和
- Avg:求某列数据的平均值
- Max:求某列数据最大值
- Min:求某列数据最小值
- count函数(得到除去null之后的数目)
SELECT

Count(*)可以计算包含空值的数目
SELECT

sum函数
SELECT

Avg函数
SELECT

max和min函数
SELECT

DISTINCT去除重复值
SELECT

查询课程编号为“0002”的总成绩
SELECT

查询选了课程的学生人数
SELECT

练习二: 分组
GROUP BY分组
SELECT

分组和指定查询组合
SELECT

查询各科成绩最高和最低的分
SELECT

查询每门课程被选修的学生人数
SELECT

查询男生、女生人数
SELECT

练习三:对分组结果指定条件
Where只能指定行的条件,having语句可以在分组之后指定条件。
只取男生组
SELECT

查询平均成绩大于60学生的学号和平均成绩
SELECT

查询至少选修两门课程的学生学号
SELECT

查询同名同姓学生名单并统计同名人数
SELECT

练习四:如何用SQL解决业务问题
- 将问题翻译成通俗易懂的大白话
- 写出分析思路
- 写出对应的SQL子句。先把SQL各个部分的关键字写出来,再把问题拆解之后的对应部分写到子句上。
计算每门课程的平均成绩
SELECT

计算每门课程的平均成绩,并且平均成绩大于等于80分
SELECT

练习五:对查询结果排序
关键字:order by 。降序(desc)、升序(asc)
计算每门课程的平均成绩,并对平均成绩大于等于80分的按成绩降序、升序排列
SELECT


指定多个列名排序:将成绩表先按成绩升序排,再按课程号降序排
SELECT

空值null的排序
SELECT

取出成绩表的前两行数据
SELECT

查询不及格的课程并按课程号从大到小排列(原数据里没有不及格的课程,这里查询小于90分的课程)
SELECT

查询每门课程的平均成绩,结果按平均成绩升序排列。平均成绩相同时,按课程号降序排列
SELECT

检索课程编号为“0002”且分数不超过90的学生学号,结果按分数降序排列
SELECT
或者
SELECT

统计每门课程的选修人数(超过2人的统计),查询结果按人数降序排序,若人数相同,按课程号升序排序
SELECT

查询两门以上小于90分的同学的学号及小于90分课程的平均成绩
SELECT

练习六:如何看懂报错信息
减少SQL报错信息的前提之一,就是深入理解SQL各个子句的含义及运行顺序。
截止目前所学习的SQL子句的类型和运行顺序如下:

另外也要注意为数据选择正确的数据类型(字符串、数字、日期)。
练习七:SQLzoo练习题
select

select

select

select

select

select

select

select

select
或者
select


select

select

select

select

select

