(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