查询练习:
1、查询student表的所有记录。
Select * from student;
2.查询student表中的记录的sname、ssex和class列。
select sname,ssex,class from student;
3.查询教师所有的单位即不重复的depart列。
select depart from teacher;(错误写法,结果如下)
select distinct depart from teacher;(正确,加入distinct排重)
4.查询score表中成绩在60到80之间的所有记录
select * from score where degree between 60 and 80;
Select * from score where degree > 60 and degree< 80;(直接使用运算符比较)
5.查询score表中成绩为85,86或88的记录。
相同字段内,表示‘或者’关系的查询,使用in关键字。
select * from score where degree in(85,86,88);
6.查询student表中的“95031”班或性别为“女”的同学记录。
两个或多字段内,表示‘或者’关系的查询,使用or关键字。
select* from student where class='95031’or ssex=‘女’;
7.以class降序查询student表的所有记录
升序asc,降序desc
select * from student order by class desc;
8.以cno升序、degree降序查询score表的所有记录。
select * from score order by cno asc,degree desc;
(首先是考虑cno升序,再考虑对degree降序,如下图所示)
9.查询“95031”班的学生人数。
统计 count
select count(*) from student where class=‘95031’;
10.查询score表中的最高分的学生学号和课程号。(子查询或者排序)
子查询方式:
select sno,cno from score where degree=(select max(degree) from score);
排序查询方式:
select sno,cno from score order by degree desc;
程序执行步骤:
1.找到最高分
select max(degree) from score;
2.找到最高分的sno和cno
select sno,cno from score where degree=(select max(degree) from score);
如何只显示排序后的第一条记录呢?如下图所示
select sno,cno,degree from score order by degree desc limit 0,1;
limi关键字作用:第一个数字表示从多少开始,第二个数字表示查多少条
注:存在一定的bug,比如只取第一条记录,但可能有两位最高分的同学