实验10SQL Server 数据完整性.docx
《实验10SQL Server 数据完整性.docx》由会员分享,可在线阅读,更多相关《实验10SQL Server 数据完整性.docx(14页珍藏版)》请在冰豆网上搜索。
实验10SQLServer数据完整性
实验10SQLServer2000数据完整性
20102805013陈尧
一、实验目的
1.了解约束的应用对数据完整性控制的作用。
2.掌握应用企业管理器设置、修改和删除常见约束的方法。
3.掌握应用T-SQL设置、修改和删除常见约束的方法。
二、实验要求
1.在样例数据库中管理相关约束。
2.保存并上交实验结果。
三、实验步骤
1.使用不带约束(参考附录D)的脚本创建eshop数据库。
(T-SQL)
2.使用修改表命令将members表的m_address设置为非空,添加如下记录,体会NOTNULL约束的
使用。
‘wenh’,‘翁红’,‘男’,‘1970-04-20’,NULL,5500.0,‘888888’
首先,在查询分析器中输入更新数据表members的SQL代码:
再按F5或点击工具栏上的运行按钮“”,运行更新数据表的SQL代码,然后输入插入记录到数据
表members的SQL代码:
USEeshop
INSERTINTOmembers
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设置为主键,并查看对应的索引(?
),添加如下记录,体会PRIMARYKEY约束的作用。
‘liuzc518’,‘翁红’,‘男’,‘1970-04-20’,‘湖南株洲’,5500.0,‘123456’
首先,在查询分析器中输入更新数据表members的SQL代码:
USEeshop
ALTERTABLEmembers
ADDCONSTRAINTpk_membersPRIMARYKEY(m_account)
再按F5或点击工具栏上的运行按钮“”,运行更新数据表的SQL代码,然后输入插入记录到数据
表members的SQL代码:
USEeshop
INSERTINTOmembers
VALUES('liuzc518','翁红','男','1970-04-20','湖南株洲',5500.0,'123456')
执行此段SQL插入记录代码后,将在结果框中显示以下消息,表示执行插入操作失败:
服务器:
消息2627,级别14,状态1,行1
违反了PRIMARYKEY约束'pk_members'。
不能在对象'members'中插入重复键。
语句已终止。
4.在members表中,为m_name增加UNIQUEL约束,添加如下记录再输入一条会员姓名为“津津
有味”的记录,体会UNIQUE约束的作用。
‘jjyw’,‘津津有味’,‘男’,‘1970-04-20’,‘湖南株洲’,5500.0,‘jjyw’
首先,在查询分析器中输入更新数据表members的SQL代码:
USEeshop
ALTERTABLEmembers
ADDCONSTRAINTun_nameUNIQUE(m_name)
再按F5或点击工具栏上的运行按钮“”,运行更新数据表的SQL代码,然后输入插入记录到数据
表members的SQL代码:
USEeshop
INSERTINTOmembers
VALUES('jjyw','津津有味','男','1970-04-20','湖南株洲',5500.0,'jjyw')
执行此段SQL插入记录代码后,将在结果框中显示以下消息,表示执行插入操作失败:
服务器:
消息2627,级别14,状态2,行1
违反了UNIQUEKEY约束'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代码:
USEeshop
ALTERTABLEmembers
ADDCONSTRAINTck_sexCHECK(m_sexIN('男','女'))
USEeshop
ALTERTABLEmembers
ADDCONSTRAINTck_ageCHECK((YEAR(GETDATE())-YEAR(m_birth))BETWEEN15AND60)
再按F5或点击工具栏上的运行按钮“”,运行更新数据表的SQL代码,然后输入第一条插入记录
到数据表members的SQL代码:
USEeshop
INSERTINTOmembers
VALUES('liuzh','刘忠怀','男','1960-04-20','湖南株洲',3000.0,'liuzh')
执行此段SQL插入记录代码后,将在结果框中显示以下消息,表示执行插入操作失败:
服务器:
消息2627,级别14,状态1,行1
违反了PRIMARYKEY约束'pk_members'。
不能在对象'members'中插入重复键。
语句已终止。
再按F5或点击工具栏上的运行按钮“”,运行更新数据表的SQL代码,然后输入第二条插入记录
到数据表members的SQL代码:
USEeshop
INSERTINTOmembers
VALUES('liujj','刘津津','女','1999-04-14','湖南株洲',4400.0,'liujj')
执行此段SQL插入记录代码后,将在结果框中显示以下消息,表示执行插入操作失败:
服务器:
消息547,级别16,状态1,行1
INSERT语句与COLUMNCHECK约束'ck_age'冲突。
该冲突发生于数据库'eshop',表'members',column'm_birth'。
语句已终止。
注:
由于今年为2012年,所以将记录改成1999-04-14可以出现以下效果。
6.在members表和orders表之间创建关系,并将orders表的m_accout设置为外键,体会FOREIGN
KEY约束的作用。
USEeshop
ALTERTABLEorders
ADDCONSTRAINTfk_accountFOREIGNKEY(m_account)
REFERENCESmembers(m_account)
7.为members表中的“性别”设置默认值为“女”,然后添加两条记录,体会DEFAULT约束的作用。
(T-SQL)
USEeshop
insertintomembers
values('mjj','模家具','','1991-11-15','广州番禺',9999.0,'121222')
8.依次删除以上约束。
(T-SQL)
ALTERTABLEmembers
DROPCONSTRAINTpk_members
ALTERTABLEmembers
DROPCONSTRAINTun_name
ALTERTABLEmembers
DROPCONSTRAINTck_sex
ALTERTABLEmembers
DROPCONSTRAINTck_age
ALTERTABLEorders
DROPCONSTRAINTfk_account
9.将步骤1-8命令脚本(CHECK01.SQL)保存上交以备教师检查。
四、注意事项
1.列约束与表约束的区别。
2.各类约束实现数据完整性的方法。