数据库数据增删改查练习题(1)——学生选课数据库
基本数据表
S(SNO,SNAME,AGE,SEX)学生
C(CNO,CNAME,TEACHER)课程
SC(SNO,CNO,GRADE)选课
练习题
试用SQL表达式实现下列查询:
1)查询“程军”老师所授课程的课程号(CNO)和课程名(CNAME)。
2)查询年龄在23-25之间,王姓女学生的姓名(SNAME)及年龄(AGE)
3)查询“李强”同学选修的成绩在85分以上的课程号(CNO)及成绩(GRADE)。
4)查询选修课程号为’k1’的学生姓名(SNAME)及授课教师姓名(TEACHER)。
5)查询由全部学生选修的课程的课程名及授课教师。
6)统计每门课的选课人数,结果显示(课程名,人数)–注意汉字
7)查询平均成绩不及格的学生的学号、姓名,以及不及格的课程门数。
8)将学号为“s1”的学生,选修了“k3”号课程,成绩为80的信息增加到数据库;
9)删除数据库中“张三”老师所有的课程信息。
10)将选修了“数据库”课程的所有学生的成绩提高10分。
实现SQL语句
// 查询“程军”老师所授课程的课程号(CNO)和课程名(CNAME)。
(1)select CNO,CNAME from C where TEACHER='程军';
// 查询年龄在23-25之间,王姓女学生的姓名(SNAME)及年龄(AGE)
(2)select SNAME,AGE from S where AGE between 23 and 25 and SNAME like '王' and SEX='女';
// 查询“李强”同学选修的成绩在85分以上的课程号(CNO)及成绩(GRADE)。
(3)select CNO,GRADE from SCwhere GRADE>85 and SNO in(select SNO from S where SNAME='李强');//方法一:嵌套查询
select CNO,GRADE from S,SC where S.SNO=SC.SNO and grade>85 and SNAME='李强';//方法二:连接查询
// 查询选修课程号为’k1’的学生姓名(SNAME)及授课教师姓名(TEACHER)。
(4)select SNAME,TEACHER from S,C,SC where S.SNO=SC.SNO and SC.CNO=C.CNO and C.CNO='k1' ;
// 查询由全部学生选修的课程的课程名及授课教师。
(5)select CNAME,TEACHER from C where not exists (select * from S where not exists (select * from SC where SNO=SC.SNO and CNO=C.CNO));
// 统计每门课的选课人数,结果显示(课程名,人数)--注意汉字
(6)select CNAME 课程名,COUNT(SNO) 人数 frmo SC,C where SC.CNO=C.CNO group by C.CNO;
// 查询平均成绩不及格的学生的学号、姓名,以及不及格的课程门数。
(7)select S.SNO,S.SNAME,COUNT(CNO) from S,SC where S.SNO=SC.SNO group by SC.SNO HAVING AVG(GRADE)<60;
//将学号为“s1”的学生,选修了“k3”号课程,成绩为80的信息增加到数据库;
(8)insert into SC values('s1','k3','80');
// 删除数据库中“张三”老师所有的课程信息。
(9)delete from C where TEACHER='张三';//删除课程表记录
delete from SC where CNO in (select CNO from C where TEACHER='张三');//删除选课表记录
// 将选修了“数据库”课程的所有学生的成绩提高10分。
(10)update SC set GRADE=GRADE+10 where CNO in (select CNO from C where CNAME='数据库');