您好,欢迎来到百家汽车网。
搜索
您的当前位置:首页实验10 SQL Server 2000数据完整性

实验10 SQL Server 2000数据完整性

来源:百家汽车网
实验10 SQL Server 2000数据完整性

20102805013 陈尧

一、 实验目的

1. 了解约束的应用对数据完整性控制的作用。

2. 掌握应用企业管理器设置、修改和删除常见约束的方法。 3. 掌握应用T-SQL设置、修改和删除常见约束的方法。

二、 实验要求

1. 在样例数据库中管理相关约束。 2. 保存并上交实验结果。

三、 实验步骤

1. 使用不带约束(参考附录D)的脚本创建eshop数据库。(T-SQL)

2. 使用修改表命令将members表的m_address设置为非空,添加如下记录,体会NOT

NULL约束的

使用。

‘wenh’,‘翁红’,‘男’,‘1970-04-20’,NULL,5500.0,‘888888’

首先,在查询分析器中输入更新数据表members的SQL代码:

再按F5或点击工具栏上的运行按钮“入记录到数据

表members的SQL代码:

USE eshop

”,运行更新数据表的SQL代码,然后输入插

INSERT INTO members

VALUES('wenh','翁红','男','1970-04-20',NULL,5500.0,'888888')

执行此段SQL插入记录代码后,将在结果框中显示以下消息,表示执行插入操作失败:

服务器: 消息 515,级别 16,状态 2,行 1

无法将 NULL 值插入列 'm_address',表 'eshop.dbo.members';该列不允许空值。INSERT 失败。 语句已终止。

3. 在members表中,将m_account设置为主键,并查看对应的索引(?),添加如下

记录,体会PRIMARY KEY约束的作用。 ‘liuzc518’,‘翁红’,‘男’,‘1970-04-20’,‘湖南株洲’,5500.0,‘123456’ 首先,在查询分析器中输入更新数据表members的SQL代码: USE eshop

ALTER TABLE members

ADD CONSTRAINT pk_members PRIMARY KEY(m_account)

再按F5或点击工具栏上的运行按钮“”,运行更新数据表的SQL代码,然后输入插入记录到数据

表members的SQL代码:

USE eshop

INSERT INTO members

VALUES('liuzc518','翁红','男','1970-04-20', '湖南株洲',5500.0,'123456')

执行此段SQL插入记录代码后,将在结果框中显示以下消息,表示执行插入操作失败: 服务器: 消息 2627,级别 14,状态 1,行 1 违反了 PRIMARY KEY 约束 'pk_members'。不能在对象 'members' 中插入重复键。 语句已终止。

4. 在members表中,为m_name增加UNIQUEL约束,添加如下记录再输入一条会

员姓名为“津津

有味”的记录,体会UNIQUE约束的作用。

‘jjyw’,‘津津有味’,‘男’,‘1970-04-20’,‘湖南株洲’,5500.0,‘jjyw’ 首先,在查询分析器中输入更新数据表members的SQL代码: USE eshop

ALTER TABLE members

ADD CONSTRAINT un_name UNIQUE(m_name)

再按F5或点击工具栏上的运行按钮“”,运行更新数据表的SQL代码,然后输入插入记录到数据

表members的SQL代码:

USE eshop

INSERT INTO members

VALUES('jjyw ','津津有味','男','1970-04-20', '湖南株洲',5500.0,'jjyw ')

执行此段SQL插入记录代码后,将在结果框中显示以下消息,表示执行插入操作失败: 服务器: 消息 2627,级别 14,状态 2,行 1

违反了 UNIQUE KEY 约束 'un_name'。不能在对象 'members' 中插入重复键。 语句已终止。

5. 在members表中,为会员增加CHECK约束为:

(1) 性别只能为男或女

(2) 年龄在15到60岁之间。

再分别添加如下两条记录,体会CHECK的约束的作用。(T-SQL) ‘liuzh’,‘刘忠怀’,‘工’,‘1960-04-20’,‘湖南株洲’,3000.0,‘liuzh’ ‘liujj’,‘刘津津’,‘女’,‘1997-04-14’,‘湖南株洲’,4400.0,‘liujj’ 首先,在查询分析器中依次输入两条更新数据表members的SQL代码: USE eshop

ALTER TABLE members

ADD CONSTRAINT ck_sex CHECK(m_sex IN('男', '女'))

USE eshop

ALTER TABLE members

ADD CONSTRAINT ck_age CHECK( (YEAR(GETDATE())-YEAR(m_birth)) BETWEEN 15 AND 60)

再按F5或点击工具栏上的运行按钮“”,运行更新数据表的SQL代码,然后输入第一条插入记录

到数据表members的SQL代码:

USE eshop

INSERT INTO members

VALUES('liuzh','刘忠怀','男','1960-04-20', '湖南株洲',3000.0,'liuzh ') 执行此段SQL插入记录代码后,将在结果框中显示以下消息,表示执行插入操作失败: 服务器: 消息 2627,级别 14,状态 1,行 1 违反了 PRIMARY KEY 约束 'pk_members'。不能在对象 'members' 中插入重复键。 语句已终止。

再按F5或点击工具栏上的运行按钮“”,运行更新数据表的SQL代码,然后输入第二条插入记录

到数据表members的SQL代码:

USE eshop

INSERT INTO members

VALUES('liujj','刘津津','女','1999-04-14', '湖南株洲',4400.0,'liujj ')

执行此段SQL插入记录代码后,将在结果框中显示以下消息,表示执行插入操作失败: 服务器: 消息 547,级别 16,状态 1,行 1

INSERT 语句与 COLUMN CHECK 约束 'ck_age' 冲突。该冲突发生于数据库 'eshop',表 'members', column 'm_birth'。 语句已终止。

注:由于今年为2012年,所以将记录改成1999-04-14可以出现以下效果。

6. 在members表和orders表之间创建关系,并将orders表的m_accout设置为外键,

体会FOREIGN

KEY约束的作用。

USE eshop

ALTER TABLE orders

ADD CONSTRAINT fk_account FOREIGN KEY(m_account) REFERENCES members(m_account)

7. 为members表中的“性别”设置默认值为“女”,然后添加两条记录,体会DEFAULT

约束的作用。(T-SQL)

USE eshop

insert into members

values('mjj','模家具',' ','1991-11-15','广州番禺',9999.0,'121222')

8. 依次删除以上约束。(T-SQL)

ALTER TABLE members

DROP CONSTRAINT pk_members

ALTER TABLE members

DROP CONSTRAINT un_name

ALTER TABLE members DROP CONSTRAINT ck_sex

ALTER TABLE members DROP CONSTRAINT ck_age

ALTER TABLE orders

DROP CONSTRAINT fk_account

9. 将步骤1-8命令脚本(CHECK01.SQL)保存上交以备教师检查。

四、 注意事项

1. 列约束与表约束的区别。

2. 各类约束实现数据完整性的方法。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baijiahaobaidu.com 版权所有 湘ICP备2023023988号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务