当前位置:文档之家› 数据库上机实验1

数据库上机实验1

实验七:数据完整性实验(SQL SERVER)实验目的:加深对数据完整性的理解。

实验内容:数据库的完整性设置。

实验步骤:1)可视化界面的操作方法:一、实体完整性1.将student表的“sno”字段设为主键:在表设计界面中,单击左边的行选定块,选定“sno”字段,单击工具按钮设置主键。

如图6-1所示:图6-11.将“sc”表的“sno”和“cno”设置为主键:在表设计界面中,单击并拖动左边的行选定块,选定sno和cno字段,单击工具按钮设置主键。

如图6-2所示:图6-2二、域完整性3. 将“ssex”字段设置为只能取“男”,“女”两值:在表设计界面,点击图4-3箭头所指按钮,出现属性(Property)对话框,选择新建(New)按钮,然后在约束表达式(Constraint expression)框中输入“ssex in ('男','女') ”。

如图6-3所示。

图6-3三、参照完整性4.利用数据库关系图来完成参照完整性见图6.4。

将要形成参照完整性的数据库加入将student表作为主键表,sc表作为外键表形成参照完整性,将鼠标参照完整性放在student 表的sno上,按左键不放,拖至sc表的sno放开修改下面中insert 和update 选项,对student 表和sc 表的sno 字段进行插入和修改操作,看有何区别同理,将course表作为主键表,sc表作为外键表形成参照完整性最后如下图2)命令方式操作方法:一、实体完整性1.将“student”表的“sno”字段设为主键:当“student”表已存在则执行:alter table student add constraint pk_sno primary key (sno)当“student”表不存在则执行:Create table student(sno CHAR(5) primary key ,sname CHAR(10),ssex CHAR(2),sage int,sdept CHAR(4))注:可用命令“drop table student”删除“student”表2. 添加一身份证号字段,设置其惟一性.(注: 操作前应删除表中的所有记录)Alter table student add id char(18) unique (id)3. 将“sc”表的“sno”和“cno”设置为主键:当“sc”表已存在则执行:alter table sc add constraint PK_SnoCno primary key (sno,cno) 当“sc”表不存在则执行:Create table sc(sno CHAR(5),cno CHAR(2),grade INT NULL,constraint PK_SnoCno primary key (sno,cno))二、域完整性4. 将“ssex”字段设置为只能取“男”,“女”两值:当“student”表已存在则执行:alter table student add constraint CK_Sex check (ssex in ('男' ,'女')) 当“student”表不存在则执行:Create table student(sno CHAR(5) primary key ,sname CHAR(10),ssex CHAR(2) check (ssex in ('男' ,'女')) ,sage int, sdept CHAR(4))5. 设置学号字段只能输入数字:alter table student add constraint CK_Sno_Format check (sno like'[0-9][0-9][0-9][0-9][0-9]')6. 设置身份证号的输入格式:alter table student add constraint CK_ID_Format check ((id like'[0-9][0-9][0-9][0-9][0-9][0-9][1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]_') OR (id like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]'))7. 设置18位身份证号的第7位到第10位为合法的年份(1900-2050)alter table student add constraint CK_ID_Format2 check ( not len(id)=18 or( (convert(smallint,substring(id,7,4) )>=1900) and(convert(smallint,substring(id,7,4) )<=2050)) )三、参照完整性9. 设置男生的年龄必须大于22, 女生的年龄必须大于20.Alter table student add constraint CK_age check (sex='男' and sage>=22 or sex='女' and sage>=20 )10. 将“student”表和“sc”表中的“sno”字段设为参照:当“sc”表已存在则执行:alter table sc add constraint FP_sno foreign key (sno) references student(sno )当“sc”表不存在则执行:Create table sc(sno CHAR(5) constraint FP_snoforeign key references student(sno),cno CHAR(2),grade I NT NULL,constraint PK_SnoCno primary key (sno,cno) )四、完整性验证1.实体完整性:在“student”表数据浏览可视化界面中输入学号相同的两条记录将会出现错误如下图所示:图6-5或者在命令窗口输入下面两条命令也会出现错误提示:insert into student values('95001','张三','男',20,'CS') insert into student values('95001','李四','女',18,'CS')图6-6 下面的语句用来验证“sc”表中的实体完整性:insert into sc values('95002', '10',65)insert into sc values('95002', '10',90)图6-72. 域完整性:使用下面的语句验证“ssex”字段的域完整性:insert into student values('95009','张匀','大',20,'CS')3.参照完整性:使用下面的语句“验证”sc表中的“sno”字段的域完整性(假设student表中没有学号为“95998”的学生记录):insert into sc values('98998', '10',98)思考:1.建立课程的实体完整性, 和课程号cno的参照完整性;2.建立年龄的域完整性, 约束条件为“年龄在15到30岁之间”3*. 在学生表中添加“出生日期”和“身份证号”字段,设置一完整性规则,确保身份证号中的关于出生日期的数字与“出生日期”字段的值相匹配。

alter table student add constraint CK_ID_Forma实验八数据库备份和恢复实验实验目的:了解数据备份和恢复机制,掌握其方法。

实验内容:1、用企业管理器创建一个备份设备,并利用该备份设备对数据库执行备份。

2、为数据库设置一个备份计划,要求每当CPU空闲时进行数据库备份,并且要求每月1号进行数据库备份。

3、在企业管理器中恢复数据库。

实验步骤:一)数据备份1)打开企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器2、然后点上面菜单中的工具-->选择数据库维护计划器(若SQL server代理未启动,启动)3)在左边的工具箱中(没有的话,按Ctrl+Alt+X),将“备份数据库任务”拖到中间的黄色区域。

4)双击拖出来的这个任务,会出现设计属性的窗口,在数据库中,选择你要备份的数据库,然后设置备份到那里,并且设置备份的文件名,设计好后,单击“确定”,你也可以单击“T -SQL”,看看 sql 大致会用什么样的语句来处理你的需求。

4、下一步选择要进行自动备份的数据-->下一步更新数据优化信息,这里一般不用做选择-->下一步检查数据完整性,也一般不选择5单击“计划”后面的“…”按钮,设置执行的时间计划。

时间设定在当前时间之后6 修改日志记录存放位置二)数据恢复1)删除要恢复的数据库(如:XSGL)2)如图Microsoft SQL Server-->SQL Server组-->数据库,右键选择:“还原数据库”3)选择“原设备”并添加4)选择已备份的数据库5)按下图填好并确定。

相关主题