实验五 数据库完整性一、实验目的掌握SQL Server2000中有关约.
数据库SQL Server 2000实验报告
数据库原理及应用实验报告实验题目:定义表和数据库的完整性和表数据的插入,修改和删除系:经济学班级:、、、、、、、、、、学号:、、、、、、、、、、、姓名:、、、、、、、、任课教师:、、、、、、、、、、时间:2012年11月一、实验目的(1)了解SQL Server 2000的基本数据类型,空值的概念,以及表的结构特点。
(2)学会使用T-SQL语句和企业管理器创建表结构和修改表结构。
(3)学会使用SQL Server 2000提供的数据完整性功能,并在创建表是定义表的数据的完整性。
通过实验进一步理解数据完整性的概念和分类。
(4)掌握使用T-SQL语句和企业管理器对数据表进行插入,修改和删除数据的操作,并体会数据完整性约束的作用,加深对数据完整性及其约束的理解。
通过本实验,要熟练掌握INSERT,UPDATE,DELETE语句和使用方法。
二、实验环境装有SQL Server 2000的实验机。
三、实验前准备1.要明确能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。
2.创建数据库必须要确定数据库名、所有者、数据库大小和存储数据的文件。
3.确定数据库包含哪些表以及包含的各表的结构并且弄明白各表之间的关系。
还要了解SQL Server 的常用数据类型,以创建数据库的表。
4.了解常用的创建数据库和表的方法。
企业管理器创建和语句创建都要会。
5 .要会进行数据的插入、删除、修改的操作方法。
四、实验内容(1)用企业管理器在数据库中创建名称为“020李”的数据库,在其中创建学生表student,课程表course,学生选课表sc,根据课本中的表结构创建后,如下图所示Student表Sc表Course表(2)用T-SQL语句在“020李”数据库中创建客户基本信息表customers,货品信息表goods,订单信息表orders,它们定义如下:create table customers(customerID int identity(1,1) primary key,Cname varchar(8) not null,address varchar(50),city varchar(10),tel varchar(50),birthday datetime,type tinyint default 1);create table goods( goodsid int constraint C1 primary key, goodsname varchar (20)not null,price money ,description varchar(200),storage int,provider varchar(50),Status tinyint default(0));create table orders(orderid int identity(1,1) constraint c2 primary key ,goodid int not null references goods(goodsid) on delete cascade,customerid int not null foreign key(customerid)references customers (customerid) on delete no action,quantity int not null constraint c3 check(quantity>0),ordersum money not null,orderdate datetime default(getdate())); customers表Goods表Orders表(3)、使用SQL语句在SPJ数据库中创建第2章习题10中的四张表;供应商表S,零件表P、项目表J和供应情况表SPJ,数据类型自行设计,注意同时定义主键、外键和其他的数据完整性。
数据库安全性和完整性实验【模板范本】
实验9:数据库安全性实验一、实验目的加深对数据库安全性的理解,并掌握SQL Server中有关用户、角色及操作权限的管理方法.二、实验内容1.数据库的安全性实验。
在SQL Server企业管理器中,设置SQL Server的安全认证模式,实现对SQL Server的用户和角色的管理,设置和管理数据操作权限.三、实验原理和步骤1.设置SQL Server的安全认证模式,选择混合模式。
右键服务器属性—安全性:选择SQL Server和Windows身份验证模式.重启服务,生效。
2.账号:sa账号登录3.登录帐号的管理1)将Windows帐号添加到SQL Server 2005中创建操作系统用户-4.数据库用户的管理1)dbo用户;查看banking数据库的dbo用户,查看用户权限。
2)U1用户;创建banking数据库的U1用户,查看用户权限。
5.权限管理1)赋予所创建的U1用户db_datareader角色,查看用户权限2)赋予所创建的U1用户db_datawriter角色,查看用户权限3)赋予所创建的U1用户db_owner角色,查看用户权限4)两种方法赋予所创建的U1用户对banking数据库表customer的select权限,验证并写出sql语句5)两种方法赋予所创建的U1用户对banking数据库表branch的select和对branch_name修改的权限,验证并写出sql语句6)把对loan表的update权限授予所创建的U1用户用户,并允许将此权限再授予其他用户,验证并写出sql语句7)两种方法回收所创建的U1用户对banking数据库表customer的select权限,验证并写出sql语句8)两种方法回收所有用户对banking数据库表loan的update权限,验证并写出sql语句四、实验报告要求要求写出如下设计报告:1.用Transact—SQL写出实验操作的语句2.实验步骤和实验结果。
实验报告 SQL SERVER 2000的约束、默认和规则
char
9
否
主键
CourseID
课程号
int
4
否
主键
DailyGrade
平时成绩
decimal
5,1
不小于0且不大于20
PracticeGrade
实践成绩
decestGrade
期末成绩
decimal
5,1
不小于0且不大于50
Grade
总评
由平时成绩(20%)、实践成绩(30%)和期末成绩(50%)计算而来
教师
评语
安庆论坛/
(3)使用sp_unbindefault存储过程将DF_GRADE从DailyGrade、PracticeGrade和TestGrade字段上解除。
(4)删除DF_GRADE默认值对象。
实验结果与结论
完成表中的约束、默认和规则等操作,实验很成功.
问题及解决方法
默认值约束和默认值对象是一回事吗?
答:不是一回事.建立和使用约束的目的是保证数据的完整性,约束是SQL Server强制实行的应用规则,他能够限制用户存放到表中数据的格式和可能值。约束作为数据库定义的一部分在CREATE TABLE语句中声明,所以又称做声明完整性约束。约束独立于表结构,可以在不改变表结构情况下,通过ALTER TABLE语句来添加或者删除。在删除一个表时,该表所带的所有约束定义也被随之删除。
grade属性名属性描述数据类型约束备注studentnum学号char主键courseid课程主键dailygrade平时成绩decimal51不小于0不大于20practicegrade实践成绩decimal51不小于0不大于30testgrade期末成绩decimal51不小于0不大于50grade总评由平时成绩20实践成绩30和期末成绩50计算而来2
实验06 答案
实验六安全性和完整性控制【实验目的】1.掌握SQL Server2000的安全性机制2.掌握SQL Server2000中有关用户、角色及权限的管理方法3.掌握数据库的保护措施-----完整性控制。
【实验内容】1.使用样本数据库同实验一。
2.实行如下要求查询或操作:在student表SNO属性上创建主键;在C表的Cno属性上定义主键;在SC 表的Sno,cno属性上定义主键;定义SC表的外键其中SC表的Sno参照S表的Sno,SC表的Cno参照C表的Sno。
在SC表的成绩列上创建检查约束要求成绩的取值范围为0~100(用SQL语句添加约束的方法)1)aLter table students add constraint pk_students primary key(sno)2) alter table sc add constraint pk_sc primary key(sno,cno)3) alter table c add constraint pk_c primary key(cno)4) alter table sc add constraint fk_sc_c foreign key(cno) references c(cno),constraint fk_sc_students foreign key(sno) references students(sno) 5) alter table sc add constraint ck_sc check(grade>=0 and grade<=100)3.建立学生登记表Student,要求姓名不能取空值,年龄小于30,性别只能是“男”或“女”。
*/alter table students add constraint ck_student check(sname<>null and age<30 and sex in( '男','女'))4.使用企业管理器或sp_addlogin创建SQL Server帐号U1,U2,并分配他们访问数据库的权限 exec sp_grantdbaccess ‘U1’。
《数据库系统原理》实验指导书
《数据库系统原理》实验指导书《数据库系统原理》实验指导书实验1 熟悉SQL Server 2000环境及数据库⽂件管理⼀、实验⽬的1、掌握登录SQL Server 2000的⽅法,熟悉SQL Server实⽤⼯具的使⽤;2、了解SQL Serve数据库的存储结构,掌握估算数据库⼤⼩技术;3、掌握创建数据库技术,掌握扩⼤和压缩数据库技术;4、掌握使⽤企业管理器⼯具和T-SQL语句及系统存储过程对数据库进⾏管理。
⼆、实验要求1、熟悉SQL Server 2000的⼯作环境,了解SQL Server主要管理⼯具的⽤途和使⽤⽅法。
2、掌握在SQL Server 2000环境下,利⽤企业管理器和T-SQL语⾔创建和管理数据库的⽅法。
三、实验设备、环境设备:奔腾II或奔腾II以上计算机环境:WINDOWS 98或WINDOWS NT、SQL SERVER 2000中⽂版四、实验原理、⽅法上机操作五、实验步骤及内容(⼀)实验步骤1、教师讲授2、教师演⽰3、学⽣实际操作(⼆)实验内容1、熟悉SQL Server 2000管理⼯具(1)企业管理器(Enterprise Manager)(2)查询分析器(Query Analyzer)(3)服务管理器(Service Manager)(4)事件探查器(Profiler)(5)导⼊和导出数据(Import and Export Data)(6)SQL Server其他管理⼯具2、数据库⽂件管理(1)数据库的创建和删除。
①在企业管理器中建⽴⼀个图书读者库。
图书读者数据库中将包括⼀个数据⽂件和⼀个⽇志⽂件,各⽂件的属性见表1-1。
②删除上题所建的数据库然后⽤T-SQL语句重新创建。
(2)修改数据库①查看图书读者数据库的属性及数据⽂件和⽇志⽂件的空间使⽤情况。
②在企业管理器中,⾸先扩⼤图书读者数据库的主数据⽂件的⼤⼩,然后查看扩⼤后的数据库属性,接着收缩主数据⽂件到定义时的⼤⼩。
实验5数据库的安全性控制(含答案)
实验五数据库的安全性控制一、实验目的:1. 通过实验加深对数据安全性的理解,并掌握SQL Server中有关用户登录的认证以及管理办法;2. 通过实验加深对数据库存储控制机制的理解,通过自主存取控制进行权限管理,熟悉SQL Server中角色管理;3.通过实验加深对数据安全性的理解,熟悉视图机制在自主存取控制上的应用。
二、实验内容1.设置SQL Server的混合安全认证模式。
在SQL Server中的对象资源管理器中设置安全认证模式。
2.在SQL Server中,利用“对象资源管理器”创建一个名为“U1”的登录用户和数据库用户,密码为111,并允许其登录S-T数据库。
3.在SQL Server中,利用代码创建一个名为“U2”的登录用户,密码为111;其相应的数据库用户名为lucky,并允许其登录S-T数据库。
4.用“u1”用户名登录后,执行对students表的查询操作,说明执行结果,并分析原因(建议:在启动一个SQL Server 2008窗口)。
分析:没有对u1进行其他操作的授权,只能登录而不能进行插入,修改等操作5.将students表的操作权限select和insert赋予数据库用户u1,并允许其向其它用户授权。
6.以“u1”用户名登录,执行对students和teacher表的查询操作,将该运行结果进行分析。
分析:对比第4题,对U1进行授权后可以进行相应的操作7.执行下列代码后,分析用户u2能否对s_t数据库的student表进行select 和update操作,为什么?并用相应的语句验证。
分析:首先grant给public组赋予了查询,插入,更新权限,然后给lucky用户赋予了对S表的所有权限,然后又revoke收回了lucky的权限,但并没有收回public组的权限,而deny却收回了lucky的更新权限,故查询可实现,而更新不可实现8.以sa登录数据库,在s_t数据库的stc表上创建选修了课程B001的视图st_view。
实验五 SQL SERVER 完整性与安全性 实验报告
实验五SQL SERVER 完整性与安全性一、实验目的掌握SQL SERVER数据访问控制策略和技术,SQL SERVER数据库管理系统使用安全帐户认证控制用户对服务器的连接,使用数据库用户和角色等限制用户对数据库的访问。
二、实验内容1.在服务器级别上创建三个以SQL Server身份验证的登录名,登录名称自定。
2.分别为三个登录名在“gongcheng”数据库映射三个数据库用户,数据库用户名为Tom,Mary和John,使这三个登录名可以访问“gongcheng”数据库。
3.授予用户John创建表和视图的权限。
grant create table,create viewto John在“gongcheng”下,安全性—John—属性,选择安全对象,搜索特定对象,选择“gongcheng”表,在权限中选择“创建表”和“创建视图”,如图:即可赋予John“创建表”和“创建视图”的权限。
4.完成以下授权:(1)把对表S的INSERT权力授予用户Tom,并允许他再将此权限授予其他用户。
grant inserton Sto tomwith grant option(2)用户Mary对S,P,J三个表有SELECT和INSERT权力grant select,inserton Sto Marygrant select,inserton Pto Marygrant select,inserton Jto Mary(3)用户Tom对SPJ表有DELETE权力,对QTY字段具有UPDA TE权力。
grant delete,update(qty)on spjto Tom(4)把对用户Tom授予的所有权力收回revoke inserton Sfrom Tom cascaderevoke delete,update(qty)on SPJfrom Tom(5)对用户Mary增加SPJ表的SELECT权力。
grant selecton spjto Mary5.两个同学为一组(自由搭配),在自己的数据库服务器上分别为对方创建一个登录名,并授予一定权力,然后用对方为自己创建的登录名和对方的数据库服务器建立连接,进行登录,对对方的数据库服务器进行操作。
实验五数据库的完整性实验(含代码)
实验五数据库的完整性实验(含代码)实验五数据库的完整性与安全性实验⼀、实验⽬的使学⽣了解SQL Server 2005的完整性与安全性机制,并掌握SQL Server 2005中完整性控制和安全管理的⽅法。
⼆、实验内容1、在“图书读者数据库”(Book_Reader_DB)中完成完整性控制的相关操作;2、“图书读者数据库”(Book_Reader_DB)中完成安全性控制的相关操作。
三、实验环境与实验准备⼯作实验环境:Microsoft Windows操作系统,Microsoft SQL Server 2005数据库管理系统标准版或企业版。
实验准备⼯作:在开始本实验之前,请回顾教科书的相关内容(数据库的完整性)。
四、实验⽅法与步骤1、使⽤sql脚本⽅式删除Book_Reader_DB数据库内的所有键和约束。
Sql脚本⽰例:Use Book_Reader_DB;Goalter table表名drop constraint键名|约束名;2、使⽤sql脚本定义刚刚删除的所有键和约束(实体完整性、参照完整性和⽤户⾃定义完整性约束)。
Sql脚本⽰例:alter table 表名add constraint 键名|约束名(三类完整性约束)要求:参照完整性要定义违约处理策略。
3、定义Defaul约束将Read表中“性别”的默认值改为“男”,然后输⼊数据验证。
(1)在企业管理器中完成。
(2)在查询分析器中完成(sql脚本完成)。
4、Unique 约束将Book表中“作者”加上唯⼀性约束,然后输⼊数据验证,并分析唯⼀性约束与主键约束的区别。
(1)在企业管理器中完成。
(2)在查询分析器中完成。
5、使⽤sql语句操作数据库,验证以上定义的所有约束,掌握DBMS的完整性控制机制。
上述每项实验内容相应的实验步骤必须进⾏详细的记录,并将其整理后写在实验报告中。
五、实验报告要求1、根据实验内容和每⼀步骤实验的结果,按课程实验报告的撰写规范完成实验报告。
数据库原理 实验5 数据库的安全性与完整性
实验5 数据库的安全性与完整性一、实验目的(1)理解数据库的安全性与完整性概念(2)掌握数据库的安全性控制技术(3)掌握数据库的完整性控制技术二、实验环境Windows XP+SQL Server 2000三、实验内容1.设置安全认证模式方法:服务器组上右键“属性”|“安全性”。
2.创建登录用户(1)利用企业管理器创建登录用户方法:安全性|登录,右键。
【例1】创建4个登录用户U1、U2、U3、U4,创建U1和U2时均选中数据库访问为SP,使他们成为SP数据库的用户,创建U3和U4时不选中任何数据库。
(2)使用T-SQL语句创建登录用户语法为:sp_addlogin 登录名[,登录密码[,默认数据库]]注意:未指定默认数据库时,默认数据库是master。
【例2】创建登录用户,登录名为丁勇,密码为dy,默认数据库为SP。
3.修改登录用户(1)利用企业管理器修改登录用户(2)使用T-SQL语句修改登录用户语法为:sp_password 旧密码,新密码,登录用户名【例3】以sa登录服务器,修改登录用户丁勇的密码。
4.删除登录用户(1)利用企业管理器删除登录用户(2)使用T-SQL语句删除登录用户语法为:sp_droplogin 登录用户名【例4】删除登录用户U4。
注意:若待删除登录用户已是某数据库用户,则需先删除数据库用户,再删除登录用户。
5.创建数据库用户(1)利用企业管理器创建数据库用户(2)使用T-SQL语句创建数据库用户语法为:sp_adduser 登录用户名【例5】创建SP的数据库用户U36.删除数据库用户(1)利用企业管理器删除数据库用户(2)使用T-SQL语句删除数据库用户语法为:sp_dropuser 数据库用户名【例6】删除SP的数据库用户U2。
7.创建数据库角色(1)使用企业管理器创建数据库角色(2)使用T-SQL语句创建数据库角色语法为:sp_addrole 数据库角色名sp_addrolemember 角色名用户sp_droprolemember 角色名用户【例7】为SP数据库创建数据库角色R2,将用户U1添加至R2中,再从R2中删除U1。
165-SQL Server 2000实验
SQL Server 2000实验
关系数据库与SQL Server 2000
实验十四 综合训练
1.注册306-Teacher数据库服务器。
2.在数据库服务器中创建一个数据库(数据库为DMT后带1/2(按班级分别
选择),再带学号。如03多媒体二班学号为12的同学所建数据库为DMT212。 3.从306-TEACHER服务器中的XSCJ数据库中导入XSQK 、KC 、XS_KC 三个表,对前两个表分别以学号、课程号为关键字,对XS_KC分别参照前两个 表以学号、课程名建立外关键字。 4.按下列要求进行查询,并将查询结果以表(表名为rs01、rs02、rs03) (1)使用WITH CUBE选项分组汇总各系各专业的女生人数。 (2)使用子查询求恰好有两门课程不及格的学生人数。 (3)按学号分组汇总总分高于100分的学生记录,并按总分的降序排列。
实验五 实验六 实验七 实验八 创建数据库和表 查询数据库 创建和使用视图 创建和使用索引
实验十一 实现存储过程
实验十二 实现触发器 实验十三 实验事务和批
实验十四 综合训练
实验十五 操作考试
返回本章首页
SQL Server 2000实验
关系数据库与SQL Server 2000
实验一 安装SQL Server 2000
注册服务器的过程
学
时:
2 课时
返回本章首页
SQL Server 2000实验
关系数据库与SQL Server 2000
实验内容及步骤
1. 演示注册服务器的过程
2. 操作练习 (1)启动SQL Server企业管理器 (2)创建服务器组 (3)注册服务器 (4)启动服务器管理器,对数据库服务器进行 启动、停止及暂停等操作
数据库的完整性和安全性实验报告
信息工程学院实验报告课程名称:《数据库原理》实验项目名称:数据库的完整性和安全性一、实 验 目 的:(1)掌握数据库约束的概念;(2)熟悉SQL SERVER 的完整性约束技术。
(3)了解SQL SERVER 的违反完整性处理措施。
(4)了解登录账户的管理理念与具体方法。
(5)了解数据库用户的管理的要则。
(6)了解用户权限管理的内涵与方法。
二、实 验 设 备 与 器 件 Win7 +Sql server 2008 三、实 验 内 容 与 步 骤(一)测试完整性运行附录中的SQL 语句,理解SQL 语句中包含的完整性定义。
然后执行下面的SQL 语句,看是否能正常运行,若无法执行,请说明原因。
1.对dept 表进行数据增删改,并检查完整性规则 Dept 已存在的完整性规则如下: dno CHAR(2)PRIMARY KEYdnameV ARCHAR(20) NOT NULL,UNIQUE(1)增加数据INSERT INTO dept V ALUES('D1','计科系');----正常插入INSERT INTO dept V ALUES('D2','电信系');----正常插入INSERT INTO dept V ALUES(NULL,'机械系'); ----违反dno 主键(NOT NULL )规则INSERT INTO dept V ALUES('D2','机械系'); ----违反dno 主键(UNIQUE )INSERT INTO dept V ALUES('D3',NULL); ----违反dname 的NOT NULL 规则INSERT INTO dept V ALUES('D3','计科系'); ----违反dname 的UNIQUE 规则INSERT INTO dept V ALUES('D3','机械系');----正常插入(2)删除数据DELETE FROM dept WHERE dno='D3';----正常删除(3)修改数据UPDA TE dept SET dname='计算机科学系' WHERE dno='D1';----正常修改UPDA TE dept SET dname='电信系' WHERE dno='D1'; ----违反dname的UNIQUE规则UPDA TE dept SET dname=NULL WHERE dno='D1'; 违反dname的UNIQUE规则2.对student表进行数据增删改,并检查完整性规则Student已存在完整性规则如下:sno CHAR(2) PRIMARY KEYsname V ARCHAR(20) NOT NULL,ssex CHAR(2) NOT NULL, CHECK(ssex in('男','女'))sage INT NOT NULL,dno CHAR(2) NOT NULL, FOREIGN KEY REFERENCES dept(dno)ON DELETE CASCADE ON UPDATE CASCADE(1)增加数据INSERT INTO student V ALUES('S1','张刚','男',20,'D1');----正常插入INSERT INTO student V ALUES('S2','李梅','女',21,'D2');----正常插入INSERT INTO student V ALUES('S2','吴敏','男',20,'D1'); ----正常插入INSERT INTO student V ALUES(NULL,'吴敏','男',20,'D1'); ----违反sno 的主键(NOT NULL)规则INSERT INTO student V ALUES('S3','吴敏','男',NULL,'D1'); 违反sage 的主键(NOT NULL)规则INSERT INTO student V ALUES('S3','吴敏','M',20,'D1'); 违反ssex 的CHECK规则INSERT INTO student V ALUES('S3','吴敏','男',20,'D3'); ----正常插入INSERT INTO student V ALUES('S3','吴敏','男',20,'D1');----正常插入(2)删除数据DELETE FROM student WHERE sno='S3'; ----正常删除(3)修改数据UPDA TE student SET sname='赵强',dno='D2' WHERE sno='S1'-----正常修改UPDA TE student SET ssex='F' WHERE sno='S1'; -----违反ssex的CHECK 规则UPDA TE student SET sno='S2' WHERE sno='S1'; -----违反sno的主键(UNIQUE)规则UPDA TE student SET dno='D3' WHERE sno='S1'; 违反dno 的外键规则UPDA TE dept SET dno='D3' WHERE dno='D1';----检查dno的外键ON UPDATE规则,观察运行后效果DELETE FROM dept WHERE dno='D2';----检查dno的外键ON DELETE规则,观察运行后效果(二)使用规则实现数据完整性(1)在查询分析器中,利用命令(CREATE RULE),创建一个关于年龄(sage)约束的规则,将“sage”列的值约束在0~200之间;然后将所创建的规则绑定到“sage”列(提示:用命令Sp_bindrule)。
SQL Server2000数据完整性
利用企业管理器添加CHECK约束
在企业管理器中展开服务器组,然后展开一个服务器。 展开目标数据库并在该数据库下面单击“表”节点,使该数据 库中包含的表对象显示在详细信息窗格中。 鼠标右击要添加CHECK 约束的表,选择“设计表”命令,以 打开表设计器窗口。 鼠标右击表设计器窗口,然后选择“CHECK约束”命令。 在图7所示的“CHECK约束”选项卡中单击“新建”按钮,为 所选取的表创建一个CHECK约束,然后在“约束表达式”框中 输入一个条件表达式。例如,可以对“成绩表”中的“成绩” 字段设置以下约束条件:(成绩>=0 AND 成绩<=100) 用户可以在“约束名”文本框中为新建的约束重命名。 单击“关闭”按钮,返回到表设计器窗口。
alter table 成绩表 alter column kch int not null
alter table 成绩表 add constraint pk primary key (xh,kch)
create table 成绩表 (xh int constraint fk_xh foreign key(xh) references 学生表(xh), kch int constraint fk_kch foreign key(kch) references 课程表(kch), cj int)
使用企业管理器创建FK 约束(续)
此时将出现“创建关系”对话框,如图3所示,列出了当前所 选择的主键和外键。如不符合要求,还可以在列表中重新选择。 “关系名”文本框中显示的是系统所给出的关系名。用户可以 自己对关系进行重命名。另外,还有三个复选框。用户可以根 据实际需要进行选择。 确定”按钮,则在当前数据库关系图中创建这个关系,此时在 主键表和外键表之间将会出现一根连接线,表明这两个表已经 关联起来,如图4所示。 最后在工具栏上单击“保存”按钮,然后在“另存为…”对话 框中输入数据库关系图的名称(如fk_xs_cj)并单击“确定” 按钮。关闭数据库图设计窗口,此时在右边的详细信息窗格中 将看到新创建的数据库关系图。
数据库原理数据的完整性实验报告.
***大学计算机科学与信息学院软件工程系上机实验报告《数据库原理》实验报告题目实验8 数据的完整性姓名***班级***日期***实验环境:SQL Server 2000一、实验目的熟悉通过SQL对数据进行完整性控制,通过实验加深对数据完整性的理解。
相关知识触发器是实施复杂完整性的一种机制。
触发器不需要专门的语句调用,当对它所保护数据进行修改时由DBMS自动激活,以防止对数据进行不正确,未授权或不一致的修改。
创建触发器的语法为:CREATE TRIGGER < 触发器> ON <表名>[WITH ENCRYPTION]FOR {[DELETE][,][INSERT][,][UPDATE]}[WITH APPEND][NOT FOR REPLICATION]AS <SQL 语句组>其中:1)WITH ENCRYPTION 为加密选项。
2)DELETE 选项为创建DELETE 触发器。
DELETE触发器的作用是当对表执行DELETE操作时触发器被激活,并从指定表中删除元组,同时将删除的元组放入一个特殊的逻辑表(delete表)中。
触发器的动作可以检查delete表中的数据,以确定下一步该如何处理。
3)INSERT选项为创建INSERT触发器。
INSERT触发器在对指定表中执行插入数据操作时激活,激活后将插入表中的数据拷贝并送入一个特殊的逻辑表(inserted 表)中,触发器会根据INSERT表中的值决定如何处理。
4)UPDATE选项为创建UPDATE触发器。
UPDATE触发器仅在对指定表中进行更新数据操作时激活。
UPDATE触发器激活后把将要被更新的原数据移入delete表中,再将要被更新后的新数据的备份送入inserted表中,UPDATE触发器对delete和inserted表进行检查,并决定如何处理。
5)NOT FOR REPLICATION 选项说明当一个复制过程在修改一个触发器表时,与该表相关联的触发器不能被执行。
数据库完整性实验报告
1实验八:数据库完整性1.1实验背景“存储在数据库中的所有数据值均是正确的状态。
如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。
”这是SQL Server2000中给出数据库完整性的解释,但是我们要问两个问题:●什么是数据正确的状态?●如何确保数据是正确的?对于第一个问题,确实很难回答,因为:“世界上所有事物本无正确与错误”,但是一些不符合逻辑的、前后矛盾的、没有满足人们需求的,可以说是“不正确的”。
如:一个人的年龄是“-20岁”,这就是不符合逻辑的;在一个地方,这个人叫“张三”,但是换了个地方却记成“张山”,这就是矛盾;如果一笔订单金额没有达到1万元,却给记成打了8折,实际只能打9折,这就是不满足需求。
造成上述各种不正确的原因是什么呢?无外乎是人们输入错误、业务不熟悉、或者是捣乱分子故意为之。
那么关键问题是我们如何在数据库中预防这种不正确的情况呢?这就是要问的第二个问题。
这需要靠数据库管理系统(DBMS)提供一套完整性约束机制来预防这种情况的发生。
但是人们常说一句话“人无完人,金无足赤”,同样,要完全靠DBMS帮我们防住所有的不正确,本身就是不正确的,这不符合辩证哲学的观点。
这说明DBMS只能是尽可能的预防。
那么人们要深入研究有哪些完整性约束,DBMS应该提供哪些保障机制。
首先,完整性约束主要有以下几种:●实体完整性约束●参照完整性约束●用户定义完整性约束其次,在关系型数据库中保证上述完整性约束的方法有以下几种:表 1 数据库提供的约束我们可以看出主码、外码是我们经常接触到的数据库提供的约束方法,也是最重要的约束。
但是,外码约束并没有我们想象那样简单,即只要把外码关系建立起来就行了,还要考虑到约束强度的问题:表2参照完整性约束的类型与强度那么,用户定义的参照完整性如何实现?一般的DBMS都提供了相应的对策,如:Check约束、Null约束、索引约束、触发器、存储过程等。
SQL Server 中还提到了域约束。
实验5-数据库的完整性
实验实现数据完整性一、实验目的(1)实现数据完整性的概念及实施数据完整性的重要性。
(2)掌握数据完整性的分类。
(3)掌握完整性约束的添加、删除方法。
(4)掌握通用默认值的创建、实施与删除方法。
(5)掌握规则的创建、实施与删除方法。
(6)掌握级联删除、级联修改方法。
二、实验内容1、完整性约束的添加、删除(1)通过SQL Server Management Studio实施约束a.为表Student的Birth字段创建检查约束,使输入的生日日期小于系统日期。
①、选择Student表,右击→设计,打开Student表②、选择Birth一行,右击→CHECK约束,打开界面如下图所示③、单击“添加”④、在表达式中写入:Entrance_date<getdate()⑤、单击“关闭”退出b.为表Student的Sdept字段,设置默认值约束,默认值取’计算机系’。
选择Sdept一行,在其列属性中修改其默认值c.为Student表的Sname字段添加唯一性约束。
选择Sname一行,右击→索引/键出现如下界面:单击“添加”,在类型中选择“唯一键”,在列中选择“Sname”,名称自定义最后单击“关闭”退出d.将SC表的Sno,cno字段设置外键约束,约束名自已取,并允许级联删除与级联更新。
(此要求在SQL Server2008R2中无法做出)若已存在外键约束,请先删除。
①、选中Sno,右击→单击“关系”,出现如下信息,可见已存在外键约束选中键,点击删除,完成约束删除②、添加约束:选中Sno,右击,选择“关系”,出现如下信息,③、点击添加,并修改④、修改成自己想要的规范和名称⑤、确定,完成⑥、设置Cno的外键同上理(2)使用Transact-SQL语句实施约束a.为Student表的Sno字段添加一个check约束,使学号满足如下条件:学号前四位为2011,学号后四位为数字字符。
alter table Studentadd constraint sno_numcheck(sno like '[2][0][1][1][0-9][0-9][0-9][0-9]')b.为Student表中的Birth字段添加一个约束,规定生日应小于入学时间。
SQL-Server2000完整性的实现
3)修改表时创建CHECK约束:可右击【Orders】表,再选 择【设计表】,打开设计表窗口。在字段Amount上右击,选择 快捷菜单中的【CHECK约束】,弹出【属性】对话框,在【约束 名】文本框内输入约束名称,在【约束表达式】文本框中输入约 束条件,如上图所示,然后点击【关闭】按钮,保存表的设计即 可。
唯一约束
唯一约束又称Unique约束,具有Unique约束的字段的值不 能重复。在使用Primary Key对表中的主键进行了唯一值约束后, 若还需要保证其他字段的数据也具有唯一特征,Unique约束会 很有用。Unique约束既可以用作列级约束,也可以用作表级约 束。它的主要特征如下:
1)一个表可以有多个Unique约束;
2)按照Unique约束的要求,在一个表中不允许任意两处在 被约束的字段上有相同的NULL值,因此最好将被定义了Unique 约束的列定义为非空。
唯一约束的格式为:[CONSTRAINT<:约束名>] UNIQUE [(<列名表>)]
1.使用T-SQL语句在定义表时创建唯一约束 2.使用企业管理器定义表的同时创建唯一约束 1)在企业管理器中,打开【设计表】窗口,设计表结构, 保存表的结构。选定要设置成唯一键约束的列名,然后右键点 击,在弹出的快捷菜单中选择【索引/键】,打开索引【属性】 对话框。如下图所示。
4.使用企业管理器管理默认约束对象
1)创建默认约束对象
在企业管理器的树型结构上有一个名为【默认】的结点, 用鼠标右击该结点并选择快捷菜单中的【新建默认】命令,则 系统弹出【默认属性】对话框,在【名称】文本框内输入约束 名称,在【值】文本框内输入默认值。然后点击【确定】按钮, 即完成默认约束对象的创建。如下图所示:
数据库原理实验指导书_参考答案
《数据库原理与应用》实验指导 / 学年第学期姓名:______________学号:______________班级:______________指导教师:______________计算机科学与工程学院2009实验一SQL Server使用初步一、实验目的1、熟悉SQL Server2000的组成及基本功能。
2、掌握SQL Server2000的登录及注册。
3、掌握SQL Server2000企业管理器的使用方法。
4、熟悉查询分析器的基本使用。
二、实验预习1、什么是数据库管理系统DBMS?你所知道的DBMS有哪些?2、SQL Server 2000(2005)的安装步骤?三、实验内容和要求1、注册服务器基本步骤:(1)打开企业管理器(2)右击SQL Server组→新建SQL Server注册(3)添加可用的服务器(实际数据库服务器的名称或IP地址)(4)选择身份验证模式(选“系统管理员分配给我的登录信息”)(5)输入正确的登录名和密码(6)选择SQL Server组(选“在现有的SQL Server组中添加SQL Server”)(7)完成注册若注册成功,则显示注册成功的信息。
2、连接SQL Server服务器(1)右键单击上面注册的数据库服务器,选择连接,建立与数据库服务器的连接。
观察连接后服务器图标的变化;(2)右键单击选择编辑SQL Server注册属性,观察已注册数据库服务器的属性信息;(3)右键单击选择删除SQL Server注册。
为保证数据库的安全性,使用完毕自己的数据库后,可采取删除的方式,断开与数据库的连接;(4)重复注册服务器的步骤,再次建立与数据库的连接;3、熟悉企业管理器(1)单击建立的服务器连接,观察服务器的7个项目,写出它们的名称。
通过查看联机帮助,总结7个项目的基本功能。
(2)单击数据库,观察Northwind数据库下的11个项目,写出项目名称,通过联机帮助了解它们的基本功能。
实验五 数据库完整性一、实验目的掌握SQL Server2000中有关约.
图2
用T_SQL语句实施约束
例:为Student表的 “Sex”字段创建一个缺省约束,缺省值为¹男¹
Alter table student Add constraint default_sex Default '男' for Ssex
为了观察添加了缺省约束的效果,你可以用以下方法: 插入一条数据,不指定Ssex的值,如 INSERT INTO Student(Sno,Sname,Sdept,Sage) VALUES ('200215140','Jim','CS',22) 接着用 select * from student where sno='200215140' 查看刚才插入的记录的Ssex字段的值是什么
⑴利用企业管理器进行规则操作 ①创建规则:为Student表中的Sage字段创建一个规则Rule1,使其值大于0且小于
120。
在企业管理器中,展开Student数据库,右击¹规则¹,在弹出的快捷菜单中单击选 择¹新建规则¹,弹出 ¹规则属性¹窗口;在¹名称¹输入框中输入规则名称Rule1,在¹
文本¹输入框中输入规则的文本:@Sage>0 and @Sage<120。
例:为Student表的“Sname”字段增加一个唯一性约束 Alter table Student Add constraint IX_constraint unique nonclustered (Sname)
例:为SC表建立外键,依赖于Student表的fk_S_c约束。
Alter table SC Add constraint fk_S_c Foreign key(Sno) Student(Sno) 例:禁用Student表的“Sdept”的CHECK约束ck_student。 Alter table Student 2规则: 规则是数据库对象之一。它指定向表中某列插入或更新数据时,限制输入新值的 取值范围。规则可以是值的清单、值的范围或值必须满足的条件。 Nocheck constraint ck_student References
实验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设置为非空,添加如下记录,体会NOTNULL约束的使用。
‘wenh’,‘翁红’,‘男’,‘1970-04-20’,NULL,5500.0,‘888888’首先,在查询分析器中输入更新数据表members的SQL代码:再按F5或点击工具栏上的运行按钮“”,运行更新数据表的SQL代码,然后输入插入记录到数据表members的SQL代码:USE eshopINSERT INTO membersV ALUES('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 eshopALTER TABLE membersADD CONSTRAINT pk_members PRIMARY KEY(m_account)再按F5或点击工具栏上的运行按钮“”,运行更新数据表的SQL代码,然后输入插入记录到数据表members的SQL代码:USE eshopINSERT INTO membersV ALUES('liuzc518','翁红','男','1970-04-20', '湖南株洲',5500.0,'123456')执行此段SQL插入记录代码后,将在结果框中显示以下消息,表示执行插入操作失败:服务器: 消息2627,级别14,状态1,行 1违反了PRIMARY KEY 约束'pk_members'。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
认值即可。
图1
外键约束: 例:将SC表的Sno字段设置为外键,该外键参考表Student中的主键Sno。
【提示】
如果你用的是前几次实验所创建的数据库及表,为了能使这里所有操 作得以进行,你可以重新建一个Student表,里面不加任何约束.或先删除 已建立的约束.
在企业管理器中,展开服务器中的数据库文件夹,再展开Student数据库,单击 “表”。右击要设置外键的表SC,在弹出的快捷菜单中选择“设计表”,在打开的表 结构对话框中,单击右键,然后点击“关系”,系统将弹出下图所示窗口,单击“新 建”按钮,系统给出默认的关系名,选择要参考主键的表名Student及表中的主键Sno, 要设置外键的表名SC及外键列名Sno,单击¹关闭¹按钮,外键约束创建完成。
例:为Student表的“Sname”字段增加一个唯一性约束 Alter table Student Add constraint IX_constraint unique nonclustered (Sname)
例:为SC表建立外键,依赖于Student表的fk_S_c约束。
Alter table SC Add constraint fk_S_c Foreign key(Sno) Student(Sno) 例:禁用Student表的“Sdept”的CHECK约束ck_student。 Alter table Student 2规则: 规则是数据库对象之一。它指定向表中某列插入或更新数据时,限制输入新值的 取值范围。规则可以是值的清单、值的范围或值必须满足的条件。 Nocheck constraint ck_student References
②将规则绑定到指定的字段上:然后点击¹绑定列¹,在弹出的对话框中的¹表¹中选 择对应的表,然后在左边的窗格中选择欲被捆绑规定的列,点击¹添加¹按钮,最后选 择¹确定¹,完成规则的绑定。如图4
③删除规则:在企业管理器中,展开服务器中的数据库文件夹,再展开Student数
据库,单击¹规则¹,右击右边窗格里的规则Rule1,单击¹删除¹按钮即可。 ⑵使用T_SQL语句实施规则 ①创建规则:为Student表中的Sage字段创建一个规则Rule1,使Sage的值大于0且 小于120。 create rule rule1 as @Sage>00000 and @Sage<99999 ②将规则rule1绑定到表Student的Sno字段Sp_bindrule rule1, 'Student.Sage ' ③解除规则rule1到Sage的绑定 sp_unbindrule 'Student.Sage' ④将规则rule1删除drop rule rule1
【提示】
例:为 “Sdept”字段创建一个检查约束,使得所在系必须是¹计算机¹、¹数学¹或¹ 信息¹之一。 Alter table Student Add constraint ck_student Check (Sdept in ('计算机','
数学','信息'))
这里添加检查约束时和下面的实验内容中,如果表中原有的 数据与所添加的约束不符,则会出错!所以,操作前请将原表 中的Sdept字段内容改为'计算机','数学','信息'之一。 【注意】 更改内容时请注意,因为Sdept定义为char(20),所以原来比如 Sdept的值为’CS’的话,实际上值为CS+18个空格,如下图3所示, 请同学们更改时注意。
⑴利用企业管理器进行规则操作 ①创建规则:为Student表中的Sage字段创建一个规则Rule1,使其值大于0且小于
120。
在企业管理器中,展开Student数据库,右击¹规则¹,在弹出的快捷菜单中单击选 择¹新建规则¹,弹出 ¹规则属性¹窗口;在¹名称¹输入框中输入规则名称Rule1,在¹
文本¹输入框中输入规则的文本:@Sage>0 and @Sage<120。
实验五
数据库完整性
一、实验目的 掌握SQL Server2000中有关约束、规则、默认值的使用等完整性技术。
二、实验内容
1)使用SQL Server2000企业管理器和T_SQL两种方法进行检查约束、缺省约束、 唯一约束、非空约束、主键约束和外键约束等6种操作 2)使用SQL Server2000企业管理器和T_SQL两种方法进行规则设置操作: 三、实验要求: 掌握域完整性、实体完整性和参照完整性的设置方法和有关语句 四、实验学时:2学时 五、实验步骤: 完整性是指数据的正确性和有效性,是为防止数据库中存在不符合语义规定的数 据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。数据完整性可
图2
用T_SQL语句实施约束
例:为Student表的 “Sex”字段创建一个缺省约束,缺省值为¹男¹
Alter table student Add constraint default_sex Default '男' for Ssex
为了观察添加了缺省约束的效果,你可以用以下方法: 插入一条数据,不指定Ssex的值,如 INSERT INTO Student(Sno,Sname,Sdept,Sage) VALUES ('200215140','Jim','CS',22) 接着用 select * from student where sno='200215140' 查看刚才插入的记录的Ssex字段的值是什么
空约束、主键约束和外键约束等6种。 默认值:是数据库对象之一,它指在向数据库中的表插入数据时,如果用户没有明 确给出某列的值,SQL Server将自动指定该列使用默认值。 使用企业管理器实施约束 例:为Student表的“性别”字段创建一个缺省约束,缺省值为¹男¹ 在企业管理器中,展开服务器中的数据库文件夹,再展开要操作的数据库,如 Student数据库,单击“表”,在右边窗口中显示所有在Student数据库中的表。右击 要设置缺省值的表Student,在弹出的快捷菜单中选择“设计表”,单击设置缺省值 的字段,将弹出下图1所示窗口,在下边属性设置栏的默认值输入框中输入相应的默
以分为3类:
域完整性:是指一个列的输入有效性,是否允许为空值; 实体完整性:是指将行定义为特定表中的唯一实体;
参照完整性:也叫引用完整性,是指在输入或者删除记录时,保持表之间已经定
义的关系,它涉及到多表之间数据一致性的维护。 1.约束:
约束是强制数据完整性的第一选择。约束有:检查约束、缺省约束、唯一约束、非