教学思路SQL之入门习题《学生成绩》 二、基础单表查询
根据查询要求,写出SQL脚本:
1、 查询学生信息表,查找学生的姓名,性别,并将查询结果按姓名进行排序。
2、查询学生信息表,查找地区在大连的学生,显示其姓名,联系电话,地区。
3、 查询学生信息表,查找性别为女,并且地区不在大连的学生,显示其姓名,年龄及联系电话,地区。
4、 练习通过as对字段进行重命名,实现两列合并显示,如外国人名中姓+名的正常显示。
5、 查询学生信息表,查找地区为空的学生的姓名,性别,联系电话。
6、 查询成绩表,查找课程编号为2的成绩最好的2名学生的编号。
7、 查询学生信息表,查找学生来自于哪些地区,显示地区时不重复。
8、 查询学生信息表,查找姓李的学生的姓名,性别,联系电话,地区。
9、 查询学生信息表,查找学生姓名中,第二个字符为“大”的学生的姓名,性别,联系电话,地区。
10、查询学生信息表,查找地区为空的学生的姓名,性别,联系电话,地区。
11、 查询成绩表,查找课程编号为2的课程,显示此门课程成绩在60――70分之间的学生编号。
12、查询学生信息表,地区中包含0-4的值的字段。
13、查询学生信息表,查找地区在大连、鞍山的学生姓名,联系电话。
14、 查询学生信息表,查找学生姓名中,第二个字符不为“大”的学生的姓名,性别,联系电话,地区。
15、 查询成绩表,查找课程编号为1的课程的平均成绩。
16、查询成绩表,显示课程编号为2的课程的最高分,最低分。
17、查询成绩表,利用count函数查找课程编号为2的课程及格的人数。
18、 查询成绩表,显示每门课程的平均成绩。
19、查询成绩表,显示每个人的总成绩。
20、查询成绩表,利用group by及having,显示总成绩超过100分的学生的编号。
21、 查询学生的注册日期,要求只显示年月日即可,无需时间。
22、 将编号为2的成绩乘与%5后再加10分做为加权分数列升序输出。
23、 查询成绩表,按照成绩及学号进行升序排序,成绩比学号的排列优先级要高。
1、 查询学生信息表,查找学生的姓名,性别,并将查询结果按姓名进行排序。
select name,sex from student order by name desc
2、 查询学生信息表,查找地区在大连的学生,显示其姓名,联系电话,地区。
select name,lianxidianhua,diqu from student where diqu='大连'
3、 查询学生信息表,查找性别为女,并且地区不在大连的学生,显示其姓名,年龄及联系电话,地区。
select name,diqu from student where sex=' 女' and diqu <>'大连'
4、 练习通过as对字段进行重命名,实现两列合并显示,如外国人名中姓+名的正常显示。
select name+diqu as 姓名和地区from student
5、 查询学生信息表,查找地区为空的学生的姓名,性别,联系电话。
select xingming,sex from student where diqu=NULL
6、 查询成绩表,查找课程编号为2的成绩最好的2名学生的编号。
select top 2 number from chengji where scorenumber=2 order by score desc
7、 查询学生信息表,查找学生来自于哪些地区,显示地区时不重复。
select DISTINCT diqu from student
8、 查询学生信息表,查找姓李的学生的姓名,性别,联系电话,地区。
select name,sex,lianxidianhua,diqu from student where name like '李%'
9、 查询学生信息表,查找学生姓名中,第二个字符为“大”的学生的姓名,性别,联系电话,地区。
select name,sex,lianxidianhua,diqu from student where name like '_大%'
10、 查询学生信息表,查找地区为空的学生的姓名,性别,联系电话,地区。体会is null与长度为0的字符串’ ’ 之间的区别。
select name,sex,lianxidianhua,diqu from student where diqu is null
11、 查询成绩表,查找课程编号为2的课程,显示此门课程成绩在60――70分之间的学生编号。
select number from chengji where score between 60 and 70 and scorenumber=2
12、 查询学生信息表,地区中包含0-4的值的字段。
select diqu from student where diqu like '%[0-4]%'
13、 查询学生信息表,查找地区在大连、鞍山的学生姓名,联系电话。
select name,lianxidianhua from student where diqu ='大连' or diqu='鞍山'
select name,lianxidianhua from student where diqu in('大连','鞍山')
14、 查询学生信息表,查找学生姓名中,第二个字符不为“大”的学生的姓名,性别,联系电话,地区。
select name,sex,lianxidianhua,diqu from student where diqu like '_[^大]%'
15、 查询成绩表,查找课程编号为1的课程的平均成绩。
select AVG(score) as 平均成绩from chengji where scorenumber=1
16、 查询成绩表,显示课程编号为2的课程的最高分,最低分。
select Max(score) as 最高分,min(score) as 最低分from chengji where scorenumber=1
17、 查询成绩表,利用count函数查找课程编号为2的课程及格的人数。
select count(*) as 及格人数from chengji where scorenumber=2 and score>=60
18、 查询成绩表,显示每门课程的平均成绩。
select avg(score) as 平均分,scorenumber from chengji group by scorenumber
19、 查询成绩表,显示每个人的总成绩。
select sum(score) as 总分,number from chengji group by number
20、 查询成绩表,利用group by及having,显示总成绩超过100分的学生的编号。
select number from chengji group by number having sum(score)>100
21、 查询出所有参加考试的学生的平均分,显示要求:如58分。
select number,convert(char(4),avg( score))+'分' from chengji group by number,scorenumber
cast (avg(score) as char(4))
22、 查询学生的注册日期,要求只显示年月日即可,无需时间。
Select number,name,sex,age,convert(char(10),datetime,120)
,diqu,lianxidianhua from student
23、 将编号为2的成绩乘与%5后再加10分做为加权分数列升序输出。
SELECT number As 学员编号,(Score*0.9+10) As 加权成绩 FROM chengji where scorenumber=2 ORDER BY Score(默认省略asc升序)
24、 查询成绩表,按照成绩及学号进行升序排序,成绩比学号的排列优先级要高。
select scorenumber as 科目,number as 学号,SUM(score) as 总分 from chengji group by number,scorenumber order by sum(score) desc ,number desc