数据库完整性——简单教程

  • Post author:
  • Post category:其他



一、实验目的


1、理解数据库完整性约束机制;

2、掌握创建、修改和删除完整性约束的方法;

3、掌握创建和删除触发器的方法。


二、实验内容


(一)附加上次实验所创建的数据库“db_Library”。

(二)约束的创建和管理

1、使用SQL语句创建图书表(tb_booknew),要求为各字段选择合适的数据类型及名称,其中“图书编号”字段为主码;“类别编号”字段为外码,删除图书类别信息表中记录时级联的删除图书表中对应的记录;书名不允许空值;库存数限制在25到100之间。

2、使用SQL语句创建借阅表(tb_borrownew),要求为各字段选择合适的数据类型及名称,其中“图书编号”、“读者编号”和“借阅日期”的组合值为主码。

3、使用SQL语句为图书表(tb_booknew)中书名字段增加唯一性约束。

4、使用SQL语句将第1题的库存数限制修改为30到80之间。

5、使用SQL语句删除第3题增加的约束。

(三)触发器的创建和管理

1、使用SQL语句创建一个名为“借阅信息插入修改_TRIG”的触发器,要求在“借阅信息表”中插入或修改记录时触发该触发器,检查“归还日期”字段修改是否超过3个月,如果超过给出相应提示(“图书借阅期限最长为3个月”),不超过给出相应提示(“插入记录成功”或“修改记录成功”)。对“借阅信息表”进行插入或修改操作,验证触发器的执行情况。

2、使用SQL语句创建一个插入、更新类型的触发器“图书信息_TRIG”,当“图书信息表”中插入或修改记录时,触发该触发器,检查库存册数是否大于0,若不大于0,则撤销插入和修改操作。在“图书信息表”中插入或修改一条记录,给定的库存册数值为-1,验证触发器的执行情况。(选做)

3、使用SQL语言删除“借阅信息插入修改_TRIG”触发器。


三、实验步骤


约束的创建和管理:

1、使用SQL语句创建图书表(tb_booknew),要求为各字段选择合适的数据类型及名称,其中“图书编号”字段为主码;“类别编号”字段为外码,删除图书类别信息表中记录时级联的删除图书表中对应的记录;书名不允许空值;库存数限制在25到100之间。

create table tb_booknew
(	Bno char(5) PRIMARY KEY,		--图书编号
	Cno char(1),		--类别编号
	Bname char(20) NOT NULL,		--书名
	Author char(10),	--作者
	Press char(20),		--出版社
	Price float,		--定价
	Sq int,				--库存数量
	FOREIGN KEY(Cno) REFERENCES tb_booktype(Cno) ON DELETE CASCADE,
	CHECK (Sq>=25 AND Sq<=100)

2、使用SQL语句创建借阅表(tb_borrownew),要求为各字段选择合适的数据类型及名称,其中“图书编号”、“读者编号”和“借阅日期”的组合值为主码。

create table tb_borrownew
(	Bno char(5),		--图书编号
	Rno char(6),		--读者编号
	Bodate date,	--借阅日期
	Rdate date,		--归还日期
	Primary KEY(Bno,Rno,Bodate)
);

3、使用SQL语句为图书表(tb_booknew)中书名字段增加唯一性约束。

ALTER TABLE tb_booknew ADD Constraint C1 UNIQUE (Bname)

4、使用SQL语句将第1题的库存数限制修改为30到80之间。

ALTER TABLE tb_booknew ADD CONSTRAINT Sq CHECK(Sq>=30 AND Sq<=100)

5、使用SQL语句删除第3题增加的约束。

ALTER TABLE tb_booknew DROP Constraint C1


触发器的创建和管理:

1、使用SQL语句创建一个名为“借阅信息插入修改_TRIG”的触发器,要求在“借阅信息表”中插入或修改记录时触发该触发器,检查“归还日期”字段修改是否超过3个月,如果超过给出相应提示(“图书借阅期限最长为3个月”),不超过给出相应提示(“插入记录成功”或“修改记录成功”)。对“借阅信息表”进行插入或修改操作,验证触发器的执行情况。

CREATE TRIGGER 借阅信息插入修改_TRIG ON tb_borow instead of INSERT,UPDATE
AS
begin
declare @newrdate date,@newbdate date,@month int
select @newrdate = Rdate from inserted
select @newbdate = Bodate from inserted
select @month = DATEDIFF(m,@newbdate,@newrdate)
if (@month>3) print('图书借阅期限最长为3个月')
else if exists(select * from deleted)
print('修改记录成功')
else print('插入记录成功')
end 
insert into tb_borow values ('1','2','2222-2-2','3333-3-3')

2、使用SQL语句创建一个插入、更新类型的触发器“图书信息_TRIG”,当“图书信息表”中插入或修改记录时,触发该触发器,检查库存册数是否大于0,若不大于0,则撤销插入和修改操作。在“图书信息表”中插入或修改一条记录,给定的库存册数值为-1,验证触发器的执行情况。(选做)

3、使用SQL语言删除“借阅信息插入修改_TRIG”触发器。

DROP TRIGGER 借阅信息插入修改_TRIG


本实验是学习中的记录,不足之出,望指出!!!



版权声明:本文为qq_47122804原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。