教务系统中存储着学生信息,包括学号、姓名、专业;课程信息,包括课程号、课程名,
学分,学生的选课信息,包括,学号、课程号、成绩。
1)写出课程信息、选课信息的数据库模式;
学生 ( 学号 , 姓名 , 专业 ); 课程 ( 课程号 , 课程名 , 学分 ); 选课 ( 学号 , 课程号 , 成绩 ); |
2)写出创建课程信息的建表命令;
Create table 课程 ( 课程号 char(6), 课程名 varchar(30), 学分 decimal(2,1), Primary key ( 课程号 ) ); create table stu( sno char ( 12 ), name varchar ( 120 ) not null , major varchar ( 30 ) not null , Primary key (sno) );
Coment on table stu is ‘ 学生信息表 ’; Coment on column stu.sno is ‘ 学号 ’; ALTER TABLE stu COMMENT=' 学生信息表 '; ALTER TABLE stu MODIFY sno CHAR(6) COMMENT ' 学号 ';
Create table course( cno char(7), cname varchar(30) not null, credit decimal(2,1) not null, Primary key (cno) ); Create table sc( sno char(12), cno char(7), score decimal(4,1), Primary key (sno,cno) ); |
3)写出下面查询的关系代数表达式:
a)查询出成绩小于 60 分的学生的学号;
Select sno From sc Where score < 60; |
b)查询出成绩小于 60 分的学生的学号、姓名;
Select stu.sno, name From stu, sc Where stu.sno = sc.sno And score < 60 ; |
c)查询出从来没有选修课程的学生学号;
Select sno From stu Where sno not in ( Select sno From sc); |
d)查询出成绩最小的学生的学号;
Select sno From sc Where score = ( select min (score) from sc); |
e)查询出至少有 2 个学生选修的课程号;
Select distinct sc.cno From sc, sc s1 Where sc.cno = s1.cno and sc.sno <> s1.sno; |
f) 查询出选修了所有课程的学生学号
Select distinct sno From sc a Where not exists ( select * From course b Where not exists ( select * from sc where sno = a.sno and cno = b.cno)); |
R(X,Y)÷S(Y,Z)的运算用结构化语言 SQL 语句可表达为下列形式:
select distinct R.X from R R1
where not exists ( select S.Y
from S
where not exists ( select * from R R2
where R2.X = R1.X and R2.Y = S.Y));