1_count(1),count(*),count(列名)的区别和联系?
2_DROP、TRUNCATE、DELETE的区别?
3_内连接和外连接的区别?
4_SQL编码题:
4.1 查询学号1003-1010的学生信息(通过BETWEEN关键字实施)
4.2 查询邮箱为空的学员信息.(通过<=>关键字实施)
4.3 根据学号得到所有学生平均分后,过滤掉80分以下的学生后,对成绩进行降序排列,取前三名
1.
区别:
1 count(*)包含了所有列,相当于所有行,在统计结果时不忽略NUll
2 COUNT(1)包含了忽略所有列,用1表示代码行,在统计结果时不忽略NUll
3 COUNT(列名)只包含列名那一列,在统计结果时忽略NULL
联系:
count(1)和count(*)基本上没有差别
2.
区别
drop: 删除数据和表结构,删除速度是最快的
truncate: 删除所有数据,保留表结构,不可以回滚,一次全部删除所有数据,速度相对很快
delete:删除数据,保留表结构,可以回滚,如果数据量大会变得很慢
3.
区别:
内连接 本质上来说和等值无区别,但是内连接会释放WHERE关键字,使表与表之间的连接语法更加清晰
外连接 选择了外连关键字指向的表的所有数据+关联数据
4.1
select *
from student
where student.StudentNo between 1003 and 1010;
4.2
select *
from student
where email is null;
4.3
select result.StudentNo, avg(result.StudentResult)
from result
GROUP BY (result.StudentNo)
having avg(result.StudentResult)>=80
ORDER BY(AVG(result.StudentResult)) DESC
LIMIT 0,3;