一
对于教学数据库的三个基本表
学生S(S#,SNAME,AGE,SEX)
学习SC(S#,C#,GRADE)
课程(C#,CNAME,TEACHER)
(1)试用关系代数表达式和SQL语句表示:检索WANG同学不学的课程号
select C# from C where C# not in(select C# from SCwhere S# in(select S# from Swhere SNAME='WANG'));
(2)试用SQL语句完成:在基本表S中检索每一门成绩都大于80分的学生学号、姓名和性别,并把检索到的值送往一个已存在的基本表STUDENT(S#,SNAME,SEX)
insert into STUDENT(S#,SNAME,SEX)select S#,SNAME,SEX from Swhere not exists(select * from SC whereGRADE < 80 and S.S#=SC.S#);
(3)试用SQL语句完成:检索选修课程包含LIU老师所授课的学生学号
select distinct from scwhere C# in(select C# from Cwhere TEACHER = 'LIU');
(4)将关系代数表达式意思表达出来
检索全部学生都选修的课程的课程号与课程名
二
现有数据库关系如下:
学生(学号,姓名,性别,专业)
课程(课程号,课程名,学分)
学习(学号,课程号,分数)
分别用关系代数表达式和SQL语句实现下列1-5题
1.检索所有选修了课程号为“C112”的课程的学生的学号和分数
select 学号,分数 from 学习where 课程号 = 'C112';
2.检索“英语”专业学生所学课程的信息,包括学号、姓名、课程号和分数
多表查询
select 学生.学号,姓名,课程.课程名,分数 from 学习,学生,课程 where 学生.学号=学习.学号 and 学习.课程号=课程.课程号 and 专业='英语';
3.检索“数据库原理”课程高于90分的所有学生的学号、姓名、专业和分数
多表查询
select 学生.学号,姓名,专业,分数 from 学生,学习,学号 where 学生.学号=学习.学号 and 学习.课程号=课程.课程号 and 分数>90 and 课程名='数据库原理';
4.检索没学课程号为C135课程的学生信息,包括学号,姓名和专业
嵌套
select 学号,姓名,专业 from 学生 where 学号 not in (select 学号 from 学习 where 课程号='C 135');
5.检索至少学过课程号为C135和C219的课程的学生的信息,包括学号、姓名和专业
别名
select 学号,姓名,专业 from 学生 where 学号 in (select x1.学号 from 学习 x1,学习x2 where x1.学号=x2.学号 and x1.课程号='C135' and x2.课程号='C219' );