数据库实验--表和表数据的操作等 下载本文

金陵科技学院实验报告

CNO char(4) not null, Scorce Numeric (4,1), primary key(SNO,CNo)) USE MyDB GO

EXEC sp_addtype courseNo,'char(4)','NOT NULL'; GO

五、修改表结构

alter table Student add Department Char(12)

六、插入数据

insert into student values('19920101','王军','男','CS01','下关#','1976.12.21',1.76,10);

insert into student values('19920102','李杰','男','CS01','江边路#','1974.5.24',1.72,9);

insert into student values('19920306','王彤','女','MT04','中央路#','1977.3.18',1.65,9);

insert into student values('19940106','吴杪','女','PH08','莲化小区#','1979.4.8',1.60,4) delete from student

insert into Class values('CS01','计算机一班','王宁','计算机应用'); insert into Class values('MT04','数学四班','陈晨','数学'); insert into Class values('PH081','物理八班','葛格','物理'); insert into Course values('0001','数学',Null,6)

insert into Course values('0003','计算机基础','0001',3) insert into Course values('0007','物理','0001',4) insert into Grade values('19920101','0001',90,6) insert into Grade values('19920101','0007',86,4) insert into Grade values('19920102','0001',87,6) insert into Grade values('19920102','0003',76,3) insert into Grade values('19920306','0001',87,6) insert into Grade values('19920306','0003',93,3) insert into Grade values('19940106','0007',85,4)

六、实验体会和收获

实验项目名称: 约束、默认和规则 实验学时: 同组学生姓名:

实验地点:

实验日期: 实验成绩: 批改教师: 批改时间:

实验3 约束、默认和规则

一、实验目的和要求

1、理解数据库中的实体完整性约束,掌握PRIMARY KEY、UNIQUE、NOT NULL 等约束的创建方法。

2、理解参照完整性约束的概念,掌握FORENGN KEY 创建方法。

12

金陵科技学院实验报告

3、理解域完整性的概念,掌握CHECK及规则的创建方法。 4、理解默认值的概念,掌握默认值和默认对象的创建方法。

二、实验设备、环境

设备:奔腾Ⅳ或奔腾Ⅳ以上计算机

环境:WINDOWS 2000 SERVER或WINDOWS 2003 SERVER、SQL Server2005中文版。

三、实验步骤

1、根据题目要求熟悉SQL Server2005的各种管理工具。 2、分析题意,重点分析题目要求并给出解决方法。

3、按题目要求完成实际操作任务,并将相关文档资料保存在以自己学号命名的文件夹中。 4、提交完成的实验结果。

四、实验内容

1、约束在数据库中的应用

(1)用系统存储过程sp_helpconstraint查看student表的约束。

(2)在新建查询中输入插入一个学生信息的命令:

insert into student(SNO,Sname,Sex,ClsNO,StuAddr,Brithday,Height,TotalCredit) values(‘19920101’,’王军’,1976.12.21’,1.76,10),观察其结果。

’,’CS01’,’

40#’,’

修改SNO的值,将其值修改为’19000001’,其他的值保持不变再插入一次观察其结果。 (3)修改studeng表,使用Check约束,使性别列只能接受“男”或“女”,以强制执行域数据完整性。重做(1),观察其结果。

(4)禁止student表中的sex列上的约束:alter table student nocheck constraint ck_student

(5)删除约束:alter table student drop constraint ck_xsqk。重做(1)。 (6)利用关系图,建立student表与course表与grade表的主外键约束。 2、默认的应用

(1)创建默认对象:default_birthday,默认值为’1982-1-1’。

CREATE DEFAULT default_birthday AS ‘1982-01-01’

(2)利用系统存储过程sp_bindefault将default_birthday绑定到student表的Birthday列上。

(3)利用系统存储过程sp_unbindefault解除student表的Birthday列上的默认值绑定。 (4)删除默认值:DROP DEFAULT default_birthday

(5)定义一个默认值为4的Default_Value,并将它绑定到course表的Credit列上,绑定后给course插入数据行,观察默认值的设置情况,使用完毕后,解除并删除绑定。实现过程要求使用SQL语句完成。

3、规则的应用

(1)利用企业管理器创建规则:规则名为:rule_credit_range,文本为:@range>=1 and @range<=8

(2)绑定规则:将rule_credit_range 绑定到Class表的course列上。

(3)解除(2)中设置的规则绑定,删除规则rule_ credit _range。

(4)定义一个规则rule_Specialty,这个规则限制Class表中的Specialty列只能取以下的值:计算机应用、信息管理、数学、物理。将该规则绑定到Class表后,向Class表插入

13

金陵科技学院实验报告

数据行,观察规则的设置情况,使用完毕后,解除并删除该规则。

五、问题解答及实验结果

1、(1)exec sp_helpconstraint student

(2)insert into

student(SNO,Sname,Sex,ClsNO,StuAddr,Birthday,Height,TotalCredit) values('19920101','王军','男','CS01','下关#','1976.12.21',1.76,10) /* 消息2627,级别14,状态1,第1 行

违反了PRIMARY KEY 约束'PK_Student_1'。不能在对象'dbo.student' 中插入重复键。语句已终止。*/ insert into

student(SNO,Sname,Sex,ClsNO,StuAddr,Birthday,Height,TotalCredit) values('19000001','王军','男','CS01','下关#','1976.12.21',1.76,10) /*(1 行受影响)*/ (3)alter table Student

add constraint c_stusex check(Sex in('男','女')) (4)alter table student nocheck constraint c_stusex (5)alter table student drop constraint c_stusex

(6)利用关系图,建立student表与course表与grade表的主外键约束。 2、默认的应用

(1)创建默认对象:default_birthday,默认值为’-1-1’。 CREATE DEFAULT default_birthday AS '1982-01-01'

(2)exec sp_bindefault 'default_birthday','Student.Birthday' insert into student(SNO) values ('1') (3)exec sp_unbindefault 'Student.Birthday' (4)DROP DEFAULT default_birthday (5)CREATE DEFAULT default_value AS 4

exec sp_bindefault 'default_value','Course.Credit' insert into Course(CNO) values('1000') exec sp_unbindefault 'Course.Credit' DROP DEFAULT default_value 3、(1)CREATE RULE rule_credit_range AS

@range>=1 and @range<=8

(2)exec sp_bindrule 'rule_credit_range','Course.Credit' (3) exec sp_unbindrule 'Course.Credit' drop rule rule_credit_range (4) CREATE RULE rule_Specialty AS

@specialty in ( '计算机应用','信息管理','数学','物理') exec sp_bindrule 'rule_Specialty','Class.Specialty' insert into Class values('PH081','物理八班','葛格','物理'); exec sp_unbindrule 'Class.Specialty'

14

金陵科技学院实验报告

drop rule rule_Specialty

六、实验体会和收获

这次实验的主要目的是理解数据库中的实体完整性约束,掌握PRIMARY KEY、UNIQUE、NOT NULL 等约束的创建方法,理解参照完整性约束的概念,掌握FORENGN KEY 创建方法,理解域完整性的概念,掌握CHECK及规则的创建方法,理解默认值的概念,掌握默认值和默认对象的创建方法。

约束是强制实现数据完整性的主要途径,我认识到很多东西都要在实践中学习才会学到更多。

实验项目名称: 关系、索引和视图 实验学时: 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

实验4 关系、索引和视图

一、实验目的和要求

1、理解关系图的含义及用途,掌握关系图的创建方法。

15