数据库系统概论复习资料:
第一章
假设教学管理规定:
①一个学生可选修多门课,一门课有若干学生选修;
②一个教师可讲授多门课,一门课只有一个教师讲授;
③一个学生选修一门课,仅有一个成绩。
学生的属性有学号、学生姓名;教师的属性有教师编号,教师姓名;课程的属性有课程号、课程名。
要求:根据上述语义画出ER图,要求在图中画出实体的属性并注明联系的类型;
解答:
2章关系数据库
1、设有如下所示的关系S(S#,SNAME,AGE,SEX)C(C#,CNAME,TEACHER)SC(S#,C#,GRADE),试用关系代数表达式表示下列查询语句:
(1)检索“程军”老师所授课程的课程号(C#)和课程名(CNAME)
    (2)检索年龄大于21的男学生学号(S#)和姓名(SNAME)
    (3)检索至少选修“程军”老师所授全部课程的学生姓名(SNAME)
    (4)检索”李强”同学不学课程的课程号(C#)
    (5)检索至少选修两门课程的学生学号(S#)
    (6)检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)
    (7)检索选修课程包含“程军”老师所授课程之一的学生学号(S#)
    (8)检索选修课程号为k1k5的学生学号(S#)
    (9)检索选修全部课程的学生姓名(SNAME)
    (10)检索选修课程包含学号为2的学生所修课程的学生学号(S#)
    (11)检索选修课程名为“C语言”的学生学号(S#)和姓名(SNAME)
    解:本题各个查询语句对应的关系代数表达式表示如下:
(1). C#,CNAME(σTEACHER=‘程军’(C))
    (2). S#,SNAME(σAGE>21SEX=”男”(S))
    (3). SNAME{s [S#,C#sc)÷∏C#(σTEACHER=‘程军(C))]}
    (4). C#(C)- C#(σSNAME=‘李强’(S) SC)
    (5). S#(σ[1]=[4][2][5] (SC × SC))
(6). C#,CNAME(C (S#,C#(sc)÷∏S#(S)))
    (7). S#(SCC#(σTEACHER=‘程军’(C)))
    (8). S#,C#sc)÷∏C#(σC#=k1’∨ C#=k5(C))
    (9). SNAME{s [S#,C#sc)÷∏C#(C)]}
    (10). S#,C#sc)÷∏C#(σS#=2(SC))
(11). S#,SNAME{s [S#(SCσCNAME=C语言’(C))]}
2、关系RS如下图所示,试计算R÷S
          R
A
B
C
D
a
b
c
d
a
b
e
f
a
b
h
k
b
d
e
f
b
d
d
l
c
k
c
d
c
k
e
f
    S
C
D
c
d
e
f
3已知关系rsw,如下图所示,计算T=( (r s)÷w) S
        r关系                                s关系                          w关系
A
B
C
1
b
2
2
a
3
1
b
1
3
a
2
sql统计每个系的学生人数
A
B
C
2
b
1
3
b
1
3
a
1
3
a
2
B
C
a
2
b
1
答:步骤1:计算出新关系R1=r s                                       
R1=
A
B
C
1
b
2
2
a
3
1
b
1
3
a
2
2
b
1
3
b
1
3
a
1
步骤2:计算出新关系R2=R1÷w                                       
R2=
A
3
步骤3计算出新关系R3=R2 s                                   
R3=
A
B
C
3
b
1
3
b
2
3
a
2
          T= R3=(r s)÷w) s
4、设有一个SPJ数据库,包括SPJSPJ四个关系模式(具体见教材74页第5)
1)求供应工程J1零件的供应商号码SNO
πSno(σJno=J1’(SPJ)
2)求供应工程J1零件P1的供应商号码SNO
πSno(σJno=J1’∧Pno=P1(SPJ))
3)求供应工程J1零件为红的供应商号码SNO
πSno(σPno=P1 (σCOLOR=’红‘ P)∞SPJ)
4)求没有使用天津供应商生产的红零件的工程号JNO
πJno(SPJ)- πJNO(σcity=‘天津Color=‘红‘ SSPJP
5)求至少用了供应商S1所供应的全部零件的工程号JNO
πJnoPno(SPJ)÷ πPno(σSno=S1 SPJ))
3章关系数据库标准语言SQL
1、设有如下关系表R
    R(NoNAMESEXAGECLASS)
    主关键字是NO
其中NO为学号,NAME为姓名,SEX为性别,AGE为年龄,CLASS为班号。
写出实现下列功能的SQL语句。
    ①插入一个记录(25,“李明”,“男”,21,“95031)
    ②插入“95031”班学号为30、姓名为“郑和”的学生记录;
    ③将学号为10的学生姓名改为“王华”;
④将所有“95101”班号改为“95091”;
⑤删除学号为20的学生记录;
    ⑥删除姓“王”的学生记录;
答:①INSERT INTO R VALUES(25,“李明”,“男”,21,“95031)
    INSERT INTO R(NONAMECLASS)  VALUES(30,“郑和”,“95031)
    UPDATE R SET NAME=“王华”WHERE  NO10
    UPDATE R SET CLASS=“95091WHERE CLASS=“95101
    DELETE FROM R WHERE NO=20
DELETE FROMR WHERE NAME LIKE“王%”
2、设学生课程数据库中有三个关系:
学生关系SS#SNAMEAGESEX
学习关系SCS#C#GRADE
课程关系CC#CNAME
其中S#C#SNAMEAGESEXGRADECNAME分别表示学号、课程号、姓名、年龄、性别、成绩和课程名。
SQL语句表达下列操作
1)检索选修课程名称为“MATHS”的学生的学号与姓名
2)检索至少学习了课程号为“C1”和“C2”的学生的学号
3)检索年龄在1820之间(含1820)的女生的学号、姓名和年龄
4将一个新学生元组(学号:200215128;姓名:王丽;年龄:19;性别:女)插入到S表中
5将选修课程号为“C1”的同学成绩加5
6出每个学生超过他选修课程平均成绩的课程号
7查询查询选修“C2”号课程且成绩在90分以上的所有学生。
8查询所有姓刘的学生的姓名、学号和性别
9)检索平均成绩超过80分的学生学号和平均成绩
10)检索选修了全部课程的学生姓名
11)检索选修了三门课以上的学生的姓名
12创建视图stu_info,包括选修“C1”号课程所有学生的学号、姓名、性别、年龄、选修课程号、课程名、成绩
答案:
1SELECT SNAME,AGE
          FROM S,SC,C
          WHERE S.S#=SC.S#
          AND C.C#=SC.C#
          AND CNAME=’ MATHS’
(2) SELECT S#
      FROM SC
      WHERE CNO=’C1’ AND S# IN( SELECT S#
                            FROM SC
                            WHERE CNO=’C2’)
(3)SELECT S#,SNAME,AGE
      FROM S
      WHERE AGE BETWEEN 18 AND 20
(4) INSERT INTO  S(S#,SNAME,AGE,SEX)
VALUES(“200215128”,”王丽”,19,””)
(5) update sc
    Set grade = grade+5
    Where  c#=C1;