实验六 数据完整性
一、学时:2学时 二、实验目的
熟悉和掌握使用SQL查询分析器用PRIMARY KEY、CHECK、FOREIGN KEY……REFERENCES、NOT NULL、UNIQUE等关键字验证SQL SERVER 2000的实体完整性、参照完整性及用户定义完整性。 三、实验准备
1、熟悉SQL SERVER 工作环境;
2、复习有关建表操作的SQL语言命令; 四、实验容
1、利用SQL查询分析器用PRIMARY KEY子句保证实体完整性 在查询分析器窗体下键入如下命令:
CREATE TABLE Student1(Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(8), Ssex CHAR(1), Sage INT,
Sdept CHAR(20),
CONSTRAINT PK_Student PRIMARY KEY(sno))
运行后插入、更改数据并观察结果;
2、利用SQL查询分析器用FOREIGN KEY……REFERENCES子句保证参照完整性 在查询分析器窗体下键入如下命令:
CREATE TABLE SC(sno CHAR(5) NOT NULL UNIQUE,
cno CHAR(5) NOT NULL UNIQUE, grade INT,
CONSTRAINT FK-SC FOREIGN KEY(sno,cno)
REFERENCES ( Student(sno),Course(cno)) ON DELETE CASCADE); 运行后插入、更改数据并观察结果;
3、利用SQL查询分析器用短语NOT NULL、UNIQUE、CHECK保证用户定义完整性
CREATE TABLE Student(sno CHAR(5) ,
sname CHAR(8) CONSTRAINT U1 UNIQUE, ssex CHAR(1) ,
sage INT CONSTRAINT U2 CHECK FOR sage<=28, sdept CHAR(20),
CONSTRAINT PK-Student PRIMARY KEY(sno))
运行后插入、更改数据并观察结果;
实验七 存储过程的使用
一、学时:2学时 二、实验目的
熟练掌握使用SQL SERVER 2000创建和执行存储过程的方法。 熟练掌握存储过程的删除操作。 三、实验准备
1.熟悉SQL SERVER 2000设计环境; 2.熟悉存过过程的创建方法、步骤 四、实验容
1、利用企业管理器或查询分析器创建proc_s存储过程。在查询分析器中建立存储过程的命令如下:
create procedure proc_s as
select * from s
2、使用EXECUTE语句执行存储过程并观察结果。命令如下:
exec proc_s
3、利用企业管理器或查询分析器创建proc_goods存储过程。在查询分析器中建立存储过程的命令如下:
create procedure proc_goods toyname varchar(20) as
select * from s where sname=toyname
4、使用EXECUTE语句执行存储过程并观察结果。命令如下:
exec proc_goods
5、在查询分析器中使用drop procedure删除上面建立的存储过程。
实验八 事务的使用
一、学时:2学时 二、实验目的 熟练掌握事务的概念; 掌握使用事务的方法。 三、实验准备 1.熟悉SQL SERVER 2000设计环境; 2.熟悉事务的概念及创建和结束的方法 四、 实验容 有一个账户表,如表三所示,请用企业管理器或查询分析器创建它,并输入表四所示的数据。 表三 账户表的结构(account) 字段名称 账号 金额 表四 账户表的数据 账号 A B 金额 7000 5000 数据类型 int money 长度 4 主键 Y 使用事务,完成由A账户向B账户转4000元。 实验操作: 1. 打开查询分析器,输入如下代码: BEGIN TRANSACTION UPDATE 账户表 SET 金额=金额-4000 WHERE 账号='A' UPDATE 账户表 SET 金额=金额+4000 WHERE 账号='B' COMMIT TRANSACTION 单击工具栏中的运行按钮,运行命令,完成转账。 2. 设置事务的隔离级别 打开一个查询分析器,输入如下代码: SET TRANSACTION ISOLATION LEVEL READ COMMITTED BEGIN TRANSACTION UPDATE 账户表 SET 金额=金额-4000 WHERE 账号='A' UPDATE 账户表 SET 金额=金额+4000 WHERE 账号='B' 单击工具栏中的运行按钮,启动一个转账的事务,但并未提交事务。 再打开一个查询分析器,输入如下代码:
BEGIN TRANSACTION SELECT * FROM 表
单击工具栏中的运行按钮,看看有何反映?
在不同事务的隔离级别下,应有不同的结果,在默认事务隔离级别下(READ COMMITTED),应等待另一个事务的完成。切换到第一个查询分析器窗口,输入“Commit”或“Rollback”,看看第二个查询分析器窗口的反映。 反复更改隔离级别,看看结果的变化。

