数据库实验1-6参考答案

(3)在选课表SC中插入95211班学生选修C04的选课信息。

提示:插入的数据的Sno从Student表中查询而来,插入的Cno为“C04” insert into SC(sno,Cno)

select sno,'c04' from Student where sno like '95211%'

(4)查询高等数学的成绩,包括学号,成绩,并按学号升序排序。将查询的结果输出到一个名为gs_cj的表中。 select sno,grade into gs_cj

from sc join course on sc.cno=course.cno and cname='高等数学' order by sno

(5)将SC表中“C05”课程的选课记录输出至一个新表中,表名为Gs01。 select * into Gs01

from sc where cno='c05'

2、修改数据

(1) 将所有学生的年龄增加1岁。 update student set sage=sage+1

(2)修改“9512101”学生的“C01”课程成绩为85。 update sc set grade=85

where sno='9512101' and cno='c01'

(3)修改“9531102”学生的“C01”课程成绩为70。 update sc set grade=70

where sno='9531102' and cno='c01'

(4)将所有平均分为75分以上的学生的各门课成绩在原来基础上增加1%。 update sc set grade=grade*1.01 where sno in

(select sno from sc group by sno having avg(grade)>=75)

3、删除数据

(1)删除“9531102”学生“C05”课程的成绩记录 delete from sc where sno='9531102' and cno='c05'

(2)删除所有课程为“C05”的选课记录 delete from sc where cno='c05'

16

4、数据的导出

(1)将数据库中的S,P,J,SPJ表导出为一个ACCESS数据库,名为DB_SPJ。

(2)Student表中数据导出到一个文本文件,用,作为数据项的分隔符。

(3)将Course表中数据导出到一个Excel文件中。

5、批量增加数据

(1)利用查询,将其他表中的数据增加到需要的数据表中。 将Gs01表中的数据添加到SC表中。(用Insert 语句实现) insert into sc select * from Gs01

(2)从外部其他数据源导入数据(选做)

? 从文本文件中导入 ? 从ACCESS中导入数据 ? 从EXECEL中导入数据

四、实验小结

五、评阅成绩

实验预习20% 实验过程20% 实验结果30% 实验报告30% 总成绩

17

实验五 数据控制

一、实验目的

1、掌握数据库完整性约束条件的设置 2、掌握触发器的基本使用

3、掌握SQL Server2000的安全性控制方法

二、实验预习

1、关系数据库的完整性约束有哪些?

2、什么是触发器?其作用是什么?SQL Server2000中的触发器主要有哪些?

三、实验内容和要求

1、实体完整性约束

(1)为供应商表SPJ建立完整性约束,约束列为SNO,PNO,JNO。 方法1:在表设计器中建立,请写出建立的步骤:

方法2:写出创建表的同时定义完整性约束的SQL语句。

create table spj (

sno char(6) foreign key references s(sno), pno char(6) foreign key references p(pno), jno char(6) foreign key references j(jno), qty smallint default 100,

18

primary key(sno,pno,jno) )

(2)根据实验2中的内容,输入数据下面的数据,能否成功?为什么? S1 P1 J1 200

(3)输入下面的数据能否成功,为什么? S1 NULL J1 200

(4)根据上面实验的结果,请说明实体完整性约束的含义。

2、参照完整性约束

(1)修改Student表中记录,将学号9512101改为9512103,更改是否成功?若不成功请说出原因。

update student set sno='9512103' where sno='9512101'

(2)修改SC表中记录,将学号为9512101的记录均改为学号9512109,是否更改成功?若不成功请说出原因。

update sc set sno='9512109' where sno='9512101'

(3)设置SC表的参照完整性为更新和删除时均为级联。 方法1:在表设计器中设置,请写出设置的步骤:

19

方法2:在创建表时同时设置参照完整性约束,并设置规则为级联。请写出SQL语句。

CREATE TABLE SC( Sno char(10) , Cno char(10), Grade numeric(6,2), PRIMARY KEY (Sno,Cno),

FOREIGN KEY (Cno) REFERENCES Course(Cno) on delete cascade on update cascade,

FOREIGN KEY (Sno) REFERENCES Student(Sno) on delete cascade on update cascade )

(4)修改Student表学号9512101为9512109,观察SC表中相应记录是否更新?

update student set sno='9512109' where sno='9512101' (5)在Course表中删除课程代号为C01的记录,观察SC表中选课C01的记录是否删除?

delete from course where cno='C01'

3、用户自定义完整性 (1)设置Student表的Sno输入长度必须为7个字符的约束。请将CHECK约束子句写在下面:

alter table student add check(sno like '_______') (2)设置student表的Sdept只能为“计算机系”,“数学系”,“信息系”,“物理系”。请将CHECK约束子句写在下面:

20

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4