资源描述:
《实验4-数据完整性》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验4SQLServer2000数据完整性一、实验目的1.理解完整性的概念、类型及作用2.使用约束、默认值等方法实现数据完整性3.掌握应用企业管理器设置、修改和删除常见完整性控制的方法。4.掌握应用T-SQL设置、修改和删除常见约束的方法。二、实验要求1.在“电子工厂”数据库eshop中创建和使用约束、默认值。2.分别用T-SQL和企业管理器两种方法创建和使用约束、默认值。三、实验步骤1.打开企业管理器,附加“电子工厂”数据库eshop。2.使用修改表命令将职工表的“家庭住址”列设置为非空,体会NOTNULL约束的使用。先用系统存储过程sp_help显示职工表
2、的结构。在查询分析器中输入以下T-SQL代码:USEeshopGOsp_help职工表按F5或点击工具栏上的运行按钮“”,查看结果。在查询分析器窗口应看到如下所示的信息:在查询分析器中输入更新职工表的SQL代码:ALTERTABLE职工表ALTERCOLUMN家庭住址VARCHAR(30)NOTNULL再按F5或点击工具栏上的运行按钮“”,运行以上更新数据表的SQL代码。然后输入插入记录到职工表的SQL代码:INSERTINTO职工表VALUES('000888','翁红','男','汉族','1970-04-20','党员',NULL,'67758111',
3、5500.0,NULL,NULL)执行此段SQL插入记录代码后,将在结果框中显示以下消息:服务器:消息515,级别16,状态2,行1无法将NULL值插入列'家庭住址',表'eshop.dbo.职工表';该列不允许空值。INSERT失败。语句已终止。表示执行插入操作失败。1.在职工表中,将“工号”设置为主键,体会PRIMARYKEY约束的作用。首先,在查询分析器中输入更新职工表的SQL代码:ALTERTABLE职工表ALTERCOLUMN工号CHAR(6)NOTNULLGOALTERTABLE职工表ADDCONSTRAINTpk_membersPRIMARYKE
4、Y(工号)GO按F5或点击工具栏上的运行按钮“”,运行更新数据表的SQL代码。然后输入插入记录到职工表的SQL代码:INSERTINTO职工表VALUES('000066','翁红','男','汉族','1970-04-20','党员','郑州','67758111',5500.0,NULL,NULL)执行此段SQL插入记录代码后,将在结果框中显示以下消息:服务器:消息2627,级别14,状态1,行1违反了PRIMARYKEY约束'pk_members'。不能在对象'职工表'中插入重复键。语句已终止。表示执行插入操作失败。2.在职工表中,为“姓名”列增加UNI
5、QUE约束,体会UNIQUE约束的作用。首先,在查询分析器中输入更新数据职工表的SQL代码:ALTERTABLE职工表ADDCONSTRAINTun_nameUNIQUE(姓名)再按F5或点击工具栏上的运行按钮“”,运行更新数据表的SQL代码后,将在结果框中显示以下消息:服务器:消息1505,级别16,状态1,行1CREATEUNIQUEINDEX终止,因为发现了索引ID7的重复键。最重要的主键为'张磊00'。服务器:消息1750,级别16,状态1,行1未能创建约束。请参阅前面的错误信息。语句已终止。表示由于有两个姓名为“张磊”的职工,故不能创建UNIQUE约
6、束。将工号为000039的姓名(张磊)改为“张小磊”:select*from职工表goUPDATE职工表SET姓名='张小磊'WHERE工号='000039'goselect*from职工表where工号='000039'go然后再运行SQL代码:ALTERTABLE职工表ADDCONSTRAINTun_nameUNIQUE(姓名)这样便可成功地为职工表的姓名字段添加唯一性约束。然后输入插入记录到职工表的SQL代码:INSERTINTO职工表VALUES('000120','乔瑞','男','汉族','1970-04-20','党员','郑州','677581
7、11',5500.0,NULL,NULL)执行此段SQL插入记录代码后,将在结果框中显示以下消息:服务器:消息2627,级别14,状态2,行1违反了UNIQUEKEY约束'un_name'。不能在对象'职工表'中插入重复键。语句已终止。表示执行插入操作失败。1.在职工表中,增加三个CHECK约束,并体会CHECK的约束的作用。(1)性别只能为“男”或“女”;(2)年龄在15~60岁之间;(3)基本工资在1000到9999元之间。首先,在查询分析器中依次输入三条更新职工表的SQL代码:ALTERTABLE职工表ADDCONSTRAINTck_sexCHECK(性
8、别IN('男','女'))ALTERT