主关键字是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(NO,NAME,CLASS) VALUES(30,“郑和”,“95031”) ③UPDATE R SET NAME=“王华”WHERE NO=10
④UPDATE R SET CLASS=“95091”WHERE CLASS=“95101” ⑤DELETE FROM R WHERE NO=20
⑥DELETE FROMR WHERE NAME LIKE“王%”
第3章书面作业
1、设学生课程数据库中有三个关系:
学生关系S(S#,SNAME,AGE,SEX) 学习关系SC(S#,C#,GRADE) 课程关系C(C#,CNAME)
其中S#、C#、SNAME、AGE、SEX、GRADE、CNAME分别表示学号、课程号、姓名、年龄、性别、成绩和课程名。 用SQL语句表达下列操作
(1)检索选修课程名称为“MATHS”的学生的学号与姓名 (2)检索至少学习了课程号为“C1”和“C2”的学生的学号
(3)检索年龄在18到20之间(含18和20)的女生的学号、姓名和年龄 (4)检索平均成绩超过80分的学生学号和平均成绩 (5)检索选修了全部课程的学生姓名 (6)检索选修了三门课以上的学生的姓名
答案:(1)SELECT 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 IN( SELECT S#
FROM SC WHERE CNO=’C2’)
(3)SELECT S#,SNAME,AGE FROM S
WHERE AGE BETWEEN 18 AND 20 (4) SELECT S# ,AVG(GRADE) ‘平均成绩’ FROM SC GROUP BY S#
HAVING AVG(GRADE)>80 (5) SELECT SNAME
FROM S
2、设学生-课程数据库中包括三个表:
学生表:Student (Sno,Sname,Sex,Sage,Sdept) 课程表:Course(Cno,Cname,Ccredit) 学生选课表:SC(Sno,Cno,Grade)
CNO=’C1’
AND
S#
WHERE NOT EXISTS
(SELECT * FROM C
WHERE NOT EXISTS (SELECT * FROM SC
WHERE S#=S.S# AND C#=C.C#
)
)
(6) SELECT SNAME FROM S,SC WHERE S.S#=SC.S# GROUP BY SNAME
HAVING COUNT(*)>3
其中Sno、Sname、Sex、Sage、Sdept、 Cno、Cname、Ccredit 、Grade分别表示学号、姓名、性别、年龄、所在系名、课程号、课程名、学分和成绩。 试用SQL语言完成下列项操作:
(1)查询选修课程包括“1042”号学生所学的课程的学生学号
(2)创建一个计科系学生信息视图S_CS_VIEW,包括Sno学号、Sname姓名、Sex性别; (3)通过上面第2题创建的视图修改数据,把王平的名字改为王慧平
(4)创建一选修数据库课程信息的视图,视图名称为datascore_view,包含学号、姓名、成绩。 答案:(1) SELECT DISTINCT SNO FROM SC SCX WHERE NOT EXISTS (SELECT * FROM SC SCY
WHERE SCY.SNO = ' 1042'
AND
NOT EXISTS (SELECT * FROM SC SCZ WHERE
SCZ.SNO=SCX.SNO AND
SCZ.CNO=SCY.CNO));
(2) CREATE VIEW S_CS_VIEW AS
SELECT SNO,SNAME,SEX FROM STUDENT WHERE Sdept=’CS’ (3)UPDATE S_CS_VIEW SET SNAME=’ 王慧平’ WHERE SNAME=’ 王平’
(4) CREATE VIEW datascore_view AS
SELECT SNO 学号、SNAME 姓名、
GRADE 成绩
FROM STUDENT,SC,COURSE WHERE STUDENT.SNO=SC.SNO AND COURSE.CNO=SC.CNO AND CNAME=’ 数据库’
第4章数据库的安全性
一、选择题
1、下面哪个不是数据库系统必须提供的数据控制功能 。
A.安全性
B.可移植性
C.完整性
D.并发控制 答案:B
2、保护数据库,防止未经授权的或不合法的使用造成的数据泄漏、更改破坏。这是指数据的 。
A.安全性
B.完整性
C.并发控制
D.恢复 答案:A
3、数据库的 完整性 是指数据的正确性和相容性。
A.安全性
B.完整性
C.并发控制
D.恢复 答案:B
4、在数据系统中,对存取权限的定义称为 。
A.命令
B.授权
C.定义
D.审计 答案:B
5、数据库管理系统通常提供授权功能来控制不同用户访问数据的权限,这主要是为了实现数据库的 。
A.可靠性
B.一致性
C.完整性
D.安全性 答案:D
6、下列SQL语句中,能够实现“收回用户ZHAO对学生表(STUD)中学号(XH)的修改权”这一功
能的是
A.REVOKE UPDATE(XH) ON TABLE FROM ZHAO B.REVOKE UPDATE(XH) ON TABLE FROM PUBLIC
C.REVOKE UPDATE(XH) ON STUD FROM ZHAO D.REVOKE UPDATE(XH) ON STUD FROM PUBLIC
答案:C
7、把对关系SC的属性GRADE的修改权授予用户ZHAO的SQL语句是 A)GRANT GRADE ON SC TO ZHAO B)GRANT UPDATE ON SC TO ZHAO C)GRANT UPDATE (GRADE) ON SC TO ZHAO D)GRANT UPDATE ON SC (GRADE) TO ZHAO 答案:C
8、在SQL Server 中删除触发器用( )。
A.ROLLBACK B. DROP C.DELALLOCATE D. DELETE 答案:B 二、填空题
1、保护数据安全性的一般方法是 设置用户标识和存取权限控制 。 答案:设置用户标识和存取权限控制
2、安全性控制的一般方法有①、②、③、④和视图的保护五级安全措施。答案:①用户标识鉴定 ②存取控制 ③审计 ④数据加密
3、存取权限包括两方面的内容,一个是 ① ,另一个是 ②。 答案:①要存取的数据对象 对此数据对象进行操作的类型
4、在数据库系统中对存取权限的定义称为授权 。 答案:授权
5、在SQL语言中,为了数据库的安全性,设置了对数据的存取进行控制的语句,对用户授权使用 ① 语句,收回所授的权限使用 ② 语句。 答案:①GRANT ②REVOKE
6、DBMS存取控制机制主要包括两部分:自主存取控制,_强制存取控制_______________。 答案:强制存取控制
7、 当对某一表进行诸如( )、 ( )、 ( ) 这些操作时,SQL Server 就会自动执行触发器所定义的SQL 语句。
答案:INSERT,DELETE,UPDATE
第5章数据库完整性
一、选择题:
1、在数据库系统中,保证数据及语义正确和有效的功能是 ( )
A.并发控制 B.存取控制 C.安全控制 D.完整性控制 答案:D
2、关于主键约束以下说法错误的是( )
A. 一个表中只能设置一个主键约束 B.允许空值的字段上不能定义主键约束
C.允许空值的字段上可以定义主键约束 D.、可以将包含多个字段的字段组合设置为主键 答案:C
3、在表或视图上执行除了( )以外的语句都可以激活触发器。 A.Insert 案:D
4、数据库的____是指数据的正确性和相容性。
A.安全性 B.完整性 C.并发控制 D.恢复 答案:B
B. Delete
C. Update
D. Create 答
②
5、在数据库的表定义中,限制成绩属性列的取值在0到100的范围内,属于数据的________约束。 A、实体完整性B、参照完整性C、用户自定义D、用户操作 答案:C 二、填空题
1.数据库的完整性是指数据的 ① . ②__和 ③ 。答案:①实体完整性 ②参照完整性 ③用户定义完整性
2、实体完整性是指在基本表中,主属性不能取空值 。 答案:主属性不能取空值 3、参照完整性是指在基本表中, 。 答案:外码可以是空值或者另一个关系主码的有效值
4、为了保护数据库的实体完整性,当用户程序对主码进行更新使主码值不惟一时,DBMS就 。答案:拒绝此操作
三、设计题
在学生课程管理数据库中创建一触发器,当向学生选课表插入记录时,检查该记录的学号在学生表中是否存在,检查该记录的课程号在课程表中是否存在,及选课成绩是否在0到100范围,若有一项为否,则不允许插入。
答案:
create trigger stu_ins_tri on sc for insert as begin
declare @s# char(6),@c# char(5),@grade int select @s#=sno,@c#=cno,@grade=score from inserted
if (@s# not in(select sno from student)) or (@c# not in (select cno from course) )or (@grade not between 0 and 100)
rollback transaction else
print '成功插入' end
第6章关系数据理论
一、选择题