首页 > 代码库 > SQL查询练习(一)

SQL查询练习(一)

新建学生信息表 students :sno , sname , ssex , birthday , province , class

新建学生选修信息表 cclasses :sno , cno , grade

一、单表查询练习

1、查询<学生信息表>,查询学生"张三"的全部基本信息

select * from students where sname=‘张三‘;

2、查询<学生信息表>,查询学生"张三"和”王四”的基本信息

select * form students where sname=‘张三‘ and sname=‘王四‘;

3、查询<学生信息表>,查询姓"张"学生的基本信息

select * form students where sname like ‘张%‘;

4、查询<学生信息表>,查询姓名中含有"四"字的学生的基本信息

select * form students where sname like ‘%四%‘;

5、查询<学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部信息

select * form students where sname like ‘李_强‘;

6、查询<学生信息表>,查询姓"张"或者姓”李”的学生的基本信息

select * form students where sname like ‘张%‘ or sname like ‘李%‘;

7、查询<学生信息表>,查询姓"张"并且"所属省份"是"北京"的学生信息

select * form students where sname like ‘张%‘ and province = ‘北京‘;

8、查询<学生信息表>,查询"所属省份"是"北京"、”新疆”、”山东”或者"上海"的学生的信息

select * form students where province in (‘北京‘,‘新疆‘,‘山东‘,‘上海‘);

9、查询<学生信息表>,查询姓"张",但是"所属省份"不是"北京"的学生信息

select * form students where sname like ‘张%‘ and province not in (‘北京‘);

10、查询<学生信息表>,查询全部学生信息,并按照“性别”排序,性别相同的情况下按照“所属省份”排序,所属省份相同的情况下再按照“班级”排序

select * form students order by ssex , province , class;

11、查询<学生信息表>,查询现有学生都来自于哪些不同的省份

select distinct province form students;

12、查询<学生选修信息表>,查询没有填写成绩的学生的学号、课程号

select sno, cno form classes where grade is null; 

13、查询<学生选修信息表>,查询全部填写了成绩的学生的选修信息,并按照“成绩”从高到低进行排序

select * form classes where grade is not null order by grade desc;

二、聚合函数练习

1、统计<学生信息表>,统计共有多少个学生

select count(*) as 学生总数 form students;

2、统计<学生信息表>,统计年龄大于20岁的学生有多少个

select count(*) as 学生数 form students where borthday < 1997;

3、统计<学生信息表>,统计出生时间在1980年至1982年的学生人数

select count(*) as 学生数 form students where birthday between 1980 and 1982;

4、统计<学生选修信息表>,统计学号为"S001"的学生的平均成绩

select avg(grade) form classes where sno=s001;

5、统计<学生选修信息表>,统计学号为"S001"的学生的总成绩

select sum(grade) form classes where sno=s001;

6、统计<学生选修信息表>,查询课程号为”C001”的课程的最高成绩

select max(garde) form classes where cno=c001;

7、统计<学生信息表>,查询所有学生中的最大年龄是多少

select min(birthday) form students;

三、分组查询练习

1、统计<学生选修信息表>,统计每个课程的选修人数

 select cno , count(*) form classes group by cno;

2、统计<学生选修信息表>,统计每个同学的总成绩

 select sno , sum(grade) form classes group by sno;

3、统计<学生信息表>,统计每个班级中每种性别的学生人数,并按照班级排序

 select class , ssex , count(*) form students group by ssex order by class;

4、统计<学生选修信息表>,统计每门课程的平均成绩,并按照成绩降序排序

 select cno , avg(grade) form classes group by cno order by avg(grade) desc;

5、统计<学生选修信息表>,显示有两门以上课程不及格的学生的学号,成绩

 select sno , grade form classes where grade < 60 group by sno having count(*)>2;

6、统计<学生信息表>,统计每个班级中的最大年龄是多少

 select class , min(birthday) form students group by class;

SQL查询练习(一)