数据库练习题

写在前面

        这篇文章是一些关于数据库的练习题,所用的数据库为学生课程数据库,其中有三张表分别为学生表(student)、课程表(course)、成绩表(sc)。学生表有6列,分别为学号(sno)、姓名(sname)、性别(ssex)、年龄(sage)、所在系(sdept)、高考分数(gkfs)。课程表有5列,分别为课程号(cno)、课程名(cname)、先行课的课程号(cpno)、学分(credit)、授课教师(teacher)。成绩表有3列,分别为学号(sno)、课程号(cno)、成绩(grade)。

答案仅供参考,如有错误请指出


1.查询全体学生的学号、性别。

select sno,ssex
from student

2.查询女性学生的学号、姓名和所在系。

select sno,sname,sdept
from student
where ssex like '女';

3.查询选修了课程的学生学号,并且学号不重复。

select distinct sno
from sc;
或
select sno
from sc
group by sno;

4.查询选修了1001号课程成绩在70分以上,或者选修了1003号课程的学生的学号和成绩。

select sno,grade
from sc
where (cno like '1001' and grade >= 70) or (cno = 1003);

5.查询1002 号课程的成绩表,按学号升序排列。

select sno,grade
from sc
where cno = 1002
order by sno ASC;

6.查询年龄在19岁以上学生的学号、姓名、性别和年龄。

select sno,sname,ssex,sage
from student
where sage >= 19;

7. 查询学生选修课程成绩在60分及以上的学生的学号和成绩。

select sno,grade
from sc
where grade >= 60;

8.查询市场营销系全部学生的学号和姓名。

9. 查询全体学生的学号、姓名、年龄(起别名:age)。

select sno,sname,sage age
from student;

10. 查询‘计算机科学’系和‘信息管理’系学生的学号、姓名和性别。

select sno,sname,ssex
from student
where sdept in ('计算机科学','信息管理');

11. 查询年龄不在18~20岁之间的学生的姓名、年龄和系名。

select sname,sage,sdept
from student
where sage not between 18 and 20;

12. 查询选修课程超过 1 门的学生学号及选课门数(别名quantity)。

select sno,count(cno) quantity
from sc
group by sno
having count(*) > 1;

13. 查询信息管理系年龄在18岁以上的学生的姓名和性别。

select sname,ssex
from student
where sdept like '信息管理' and sage >= 18;

14. 查询名字中含有‘军’的学生的学号、姓名和性别。

select sno,sname,ssex
from student
where sname like '%军%';

15. 查询全体课程的课程号。

select cno
from course
group by cno;

16.查询所有学生的sname、cname、grade列。

select sname,cname,grade
from student,course,sc
where student.sno = sc.sno and sc.cno = course.cno;

17.按分数降序排序,输出信息系学生中选修了“数据库”课程的学生的姓名和分数。

select sname,grade
from student,sc
where student.sno = sc.sno and sdept like '信息' and sc.cno = 1001
order by grade DESC;

18.检索学号为2008036406号学生所学课程的课程名与任课教师。

select cname,teacher
from sc,course
where sc.sno like '2008036406' and sc.cno = course.cno;

19.查询其它系中比信息系某一学生年龄大的学生姓名和年龄。

select sname,sage
from student
where sage > any(
select sage
from student
where sdept = '信息') and sdept <> '信息';

20.查询每个学生的情况(包括学号、姓名、性别、系别)和他选修的课程名和成绩。

select student.sno,sname,ssex,sdept,cname,grade
from student,course,sc
where student.sno = sc.sno and sc.cno = course.cno;

21.求选修1001号课程且成绩为90分以上的学生的学号、姓名及成绩。

select student.sno,sname,grade
from student,sc
where student.sno = sc.sno and sc.cno = '1001' and sc.grade >= 90;

22.查询每一门课的间接先修课。

select first.cname,second.cname cpname
from course first,course second
where first.cpno = second.cno;

23.求选修了高等数学课(课程号为1002)的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。

select sno,grade
from sc
where cno = '1002'
order by grade DESC,sno ASC;

24.求选修高等数学课其且成绩在80-90之间的学生学号和成绩,并将成绩乘以系数0.8输出(起别名Grade)。

select sno,grade*0.8 Grade
from sc
where cno = '1002' and grade between 80 and 90;

25.求学生的学号、姓名、选修的课程名及成绩。

select student.sno,sname,cname,grade
from student,sc,course
where student.sno = sc.sno and sc.cno = course.cno;

26.查询选修1003号课程且成绩在85分以上的所有学生的姓名。

select sname
from student,sc
where student.sno = sc.sno and cno = '1003' and grade >= 85;

27.查询先行课的学分为4的课程号和课程名。

select first.cno,first.cname
from course first,course second
where first.cpno = second.cno and second.credit = 4;

28.查询选修 1001 号课程的男同学的学号、姓名和成绩。

select student.sno,sname,grade
from student,sc
where student.sno = sc.sno and sc.cno = 1001 and ssex = '男';
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可乐喽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值