1、sql 语句练习题 1数据库有如下四个表格:student(sno,sname,sage,ssex,sdpt) 学生表系表(dptno,dname)course(cno,cname, gradet, tno) 课程表sc(sno,cno,score) 成绩表teacher(tno,tname) 教师表 要求:完成以下操作1. 查询姓“欧阳“且全名为三个汉字的学生的姓名。select sname from student where sname like “欧阳_;2. 查询名字中第 2 个字为“阳“字的学生的姓名和学号。select sname,sno from student where s
2、name like _阳%;3. 查询所有不姓刘的学生姓名。select sname,sno,ssex from student where sname not like “刘%”;4. 查询 db_design 课程的课程号和学分。select cno,ccredit from course where cname like db_design 5. 查询以“db_“开头,且倒数第 3 个字符为 i 的课程的详细情况。select * from course where cname like db%i_ _;6. 某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的
3、学生的学号和相应的课程号。select sno,cno from sc where grade is null;7. 查所有有成绩的学生学号和课程号。select sno,cno from sc where grade is not null;8. 查询计算机系年龄在 20 岁以下的学生姓名。select sname from student where sdept= cs and sage3; 16. 查询每个学生及其选修课程的情况。select student.*,sc.*, course.* from student,sc , course where student.sno=sc.sn
4、o and o=o;17. 查询每个学生及其选修课程的情况包括没有选修课程的学生18. 查询选修 2 号课程且成绩在 90 分以上的所有学生的学号、姓名select student.sno, student.snamefrom student,scwhere student.sno=sc.sno and o=”2and sc.grade90;19. 查询每个学生的学号、姓名、选修的课程名及成绩。select student.sno,sname,ssex,sage,sdept,cno,gradefrom student left outjoin sco on(student.sno=sc.sno
5、);20. 查询与“刘晨”在同一个系学习的学生。selectsno,sname,sdeptfrom studentwhere sdept in(select sdept from student where sname=”刘晨);21. 查询选修了课程名为“信息系统”的学生学号和姓名select sno,sname from student where sno in(select sno from sc where cno in(select cno from course where cname=”信息系统);22. 找出每个学生超过他选修课程平均成绩的课程号。select sno,cno
6、from sc x where grade=(select avg(grade) from sc y where y.sno=x.sno);23. 将一个新学生记录(学号:200215128;姓名:陈冬;性别:男;所在系:is;年龄:18 岁)插入到 student 表中。insert into student values (200215128,陈冬,男,is,18);24. 将学生 200215121 的年龄改为 22 岁。update student setsage=22 where sno=200215121;25. 将所有学生的年龄增加 1 岁。update student sets
7、age=sage+1;26. 将计算机科学系全体学生的成绩置零。update sc set grade=0 where exits(selete * from student where student.sno=sc.sno and sdept=” 计算机科学系”);27. 删除学号为 20021528 的学生记录delete from student where sno=”200215128;28. 删除所有的学生选课记录。delete from sc;29. 删除 2 号课程的所有选课记录。delete from sc where cno=2;30. 删除计算机科学系所有学生的选课记录。d
8、elete from sc where sno in(selete sno from student where sdept=” 计算机科学系”);31. 建立信息系学生的视图。create view is_student asselect sno,sname,sage from student where sdept=is;sql 语句练习题 2设教学数据库 education,有三个关系:学生关系 s(sno,sname,age,sex,sdept) ;学习关系 sc(sno,cno,grade) ;课程关系 c(cno,cname,cdept,tname)查询问题:1:查所有年龄在 20
9、 岁以下的学生姓名及年龄。select sname,sagefrom swhere sage=20);2:查考试成绩有不及格的学生的学号 select distinct snofrom scwhere grade3;22:求基本表 s 中男同学的每一年龄组(超过 50 人)有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列。select sage,count(sno)from swhere ssex=mgroup by sagehaving count(*)50order by 2,sage desc;23:查询每个学生及其选修课程的情况。select s.sno, sname, s
10、age, ssex, sdept, cno, gradefrom s, scwhere s.sno=sc.sno;24:查询选修了 c2 课程且成绩在 90 分以上的所有学生。select s.sno,snamefrom s,scwhere s.sno=sc.snoand o=c2 and sc.grade90;25:查询每个学生选修的课程名及其成绩。select s.sno,sname,cname,sc.gradefrom s,sc,cwhere s.sno=sc.sno and o=o26:统计每一年龄选修课程的学生人数。select sage,count(distinct s.sno)from s,scwhere s.sno=sc.snogroup by sage;27:查询选修了 c2 课程的学生姓名。select sname from s where sno in(