6实验六-数据库完整性
数据库完整性

实验报告
实验项目名称:数据库完整性
实验概述
1.实验目的
熟悉数据库的保护措施-完整性控制;选择若干典型的数据库管理系统产品,了解他们所提供的数据库完整性控制的多种方式与方法。
2.实验要求
实践实验示例中陈述的例题,在掌握命令操作的同时,也能掌握界面操作的方法,即在SQL Server集成管理器中实践各种完整性的创建与完整性的约束。
sp_unbindefaultphone,'teachers.telphone'
DROP DEFAULT phone
、利用T—SQL创建规则rule_name,使得教工姓名tname的长度必须大于等于4
CREATERULErule_nameAS@id>=4
、把规则rule_name绑定到教工表的教工姓名tname上
2.实验内容与关键SQL语句、实验结果等
(1)、实体完整性
、PRIMARY KEY约束
、UNIQUE约束
、IDENTITY属性
(2)、域完整性
、创建用户定义的数据类型
、NOT NULL
语句:CREATE TABLE ***
(****数据类型NOT NULL)
、CHECK约束
语句:CHECK(Ssex=‘男’OR Ssex=‘女’)
sp_bindrulerule_name,'teachers.tname'
、取消规则tule_name的绑定并删除规则
sp_unbindrulerule_name,'teachers.tname'
DROP RULE rule_name
3.疑难与未解决的问题
默认对象绑定语句无法执行
数据库完整性实验总结(必备6篇)

数据库完整性实验总结第1篇时间流水,短短的两周就流逝了,回想在这两周的实训生活,我从单一,片面的学习进入了全面,系统的学习,学好它更是一项大任务。
而对于如何学好它,光靠理论知识是远远不够的,_同志曾经就说过“实践是检验真理的唯一标准”!正如大师傅炒菜,知道炒菜的程序,主料、调料一清二楚,不真正掌勺,永远也成不了“大厨”。
而学校给我们提供了这样一个机会,让我们自己_掌勺_,使我们从实践中,加深了对数据库的理解。
经过这次的实训,我们对数据库有了更深的了解,从书面的明白到实践的理解,接触到了自己以前没有接触到的东西,并让我加深了数据库知识的学习和理解,也使我进一步了解数据库,这次实训可以为我们以后真正的实际数据库系统设计提供很好的借鉴。
更使我明白遇到什么挫折,不气馁,不放弃,勇于探索,才会让自己离成功越来越近!俗话说:知之为知之,不知为不知!不要不懂装懂,有什么不懂的要敢于向_知之者_请教!知识是慢慢积累而成的,我们学习不仅要学习理论知识,而实践也是非常重要的,只有当两者结合,才会获得收获!我们这次实习对我们的认识起到了很大的启发作用,使我们以后在接触数据库的过程中少走点弯路。
也使我们对人生和社会有了更清楚的认识,任何的成功都有艰辛和汗水铺出来的,没有那么多的意外收获。
我们要学的还有很多,要接触的还不知道有多少,以后的路还很漫长,我相信我会更加努力的,把握现在,为自己的未来而奋斗,展开双翅飞向美好的未来!在这里很感谢xxx老师给我们传授了这么多的知识和经验,让我们在毕业之际更好的填补自己的不足。
数据库完整性实验总结第2篇在学习《数据库原理及应用》这门课之前,就和课本上提到的一个观点一样,认为它只是存放数据的仓库而已,但是现在我深深体会到这个观点是多么的片面。
数据库是长期存储在计算机内,有组织、可共享的大量的数据集合,前者只能表达它的一方面而已。
数据库技术发展到今天已经是一门非常成熟的技术,它的技术水平、应用水平多比初始时都有了很大的改变,但是它的最基本的特征却没有变,概括起来有以下几个方面:第一点:数据库是相互关联的的数据集合;即在数据库中不仅要能够表示数据本身,还要能够表示数据与数据之间的关系。
数据库实验6数据完整性

实验6数据完整性1.实验目的(1)掌握SQL Server管理平台和Transact-SQL语句(CREATE RULE、DROP RULE)创建和删除规则的方法。
(2)掌握系统存储过程sp_bindrule、sp_unbindrule绑定和解除绑定规则的操作方法,以及sp_helptext查询规则信息、sp_rename更名规则的方法。
(3)掌握SQL Server管理平台和Transact-SQL语句(CREATE DEFAULT、DROP DEFAULT)创建和删除默认对象的方法。
(4)掌握系统存储过程sp_bindefault、sp_unbindefault绑定和解除绑定默认对象的操作方法,以及sp_helptext查询默认对象信息。
(5)掌握SQL Server管理平台和Transact-SQL语句(CREATE TABLE、ALTER TABLE)定义和删除约束的方法,并了解约束的类型。
2.实验内容(1)为xskc数据库中student表的创建一个规则stu_nj_rule,限制“年级”列所输入的数据为2位0~9的数字。
(2)创建一个规则stusex_rule,将其绑定到student_info表的“性别”列上,保证输入的性别值只能是“男”或“女”。
(3)使用系统存储过程sp_help查询stusex_rule规则列表,使用sp_helptext查询stusex_rule规则的文本,使用sp_rename将stusex_rule规则更名为stu_s_rule。
(4)删除stu_nj_rule规则。
(5)在student_db数据库中,建立日期、货币等数据类型的默认值对象。
①创建默认对象df_date、df_money。
②输入以下代码,在xskc数据库中创建stufee数据表。
CREATE TABLE stufee(学号char(10) NOT NULL,姓名char(8) NOT NULL,学费money,交费日期datetime,)③使用系统存储过程sp_bindefault将默认对象df_money、df_date分别绑定在stu_fee 表的“学费”、“交费日期”列上。
数据库完整性实验报告

数据库完整性实验报告数据库完整性实验报告引言数据库完整性是指数据库中数据的准确性、一致性和有效性。
在数据库中,完整性是非常重要的,它保证了数据的可靠性和可信度。
本实验报告旨在介绍数据库完整性的概念、重要性以及实验过程和结果。
一、数据库完整性的概念和重要性数据库完整性是指数据库中的数据应符合规定的约束条件,不应存在冲突、矛盾或不一致的情况。
它包括实体完整性、参照完整性和用户定义的完整性。
1. 实体完整性实体完整性是指数据库中的每个实体都必须具有唯一的标识符。
在关系型数据库中,实体完整性通常通过主键来实现。
主键是一个能唯一标识实体的属性或属性组合,它保证了每个实体的唯一性。
2. 参照完整性参照完整性是指数据库中的外键必须引用已存在的主键。
外键是一个表中的属性,它引用了另一个表的主键。
参照完整性保证了表与表之间的关联关系的正确性和一致性。
3. 用户定义的完整性用户定义的完整性是指用户自定义的约束条件必须满足。
例如,一个表中的某个属性必须满足某种条件,如非空、唯一等。
用户定义的完整性保证了特定业务需求的满足。
数据库完整性的重要性在于保护数据的可靠性和一致性。
它可以防止数据的错误、冲突和不一致,确保数据的准确性和可信度。
同时,数据库完整性也为数据库的安全性提供了基础,防止非法访问和恶意操作。
二、实验过程本实验使用MySQL数据库进行实验。
1. 创建数据库和表首先,创建一个名为"students"的数据库,并在其中创建一个名为"grades"的表。
表"grades"包含三个字段:学生ID、课程名称和成绩。
2. 添加完整性约束在表"grades"中,为学生ID字段添加主键约束,保证每个学生ID的唯一性。
同时,为课程名称字段添加非空约束,保证每个课程都有名称。
3. 添加参照完整性约束在表"grades"中,为学生ID字段添加外键约束,引用了另一个表"students"中的主键。
数据库的完整性和安全性实验报告

信息工程学院实验报告课程名称:《数据库原理》实验项目名称:数据库的完整性和安全性一、实 验 目 的:(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)。
实验六 数据库的完整性定义与检查 (2)

实验六数据库的完整性定义与检查实验目的:1.充分理解关系数据库中关于数据库完整性的概念。
2.掌握实体完整性的定义和检查方法。
3.掌握参照完整性的定义和检查方法。
4.掌握用户自定义完整性的定义和检查方法。
实验内容:一、在企业管理器中定义以下数据表中各字段的完整性约束(包括实体完整性、参照完整性和用户定义完整性)。
1.Student表。
记录学生基本信息。
表1-1 Student 表结构[Sno] [char](9)PRIMARY KEY,[Sname] [char](8)NOT NULL,[Ssex] [char](2)CHECK(Ssex IN('女','男')),[Sage] SMALLINT CHECK(Sage>=15 AND Sage<=45),[Sdept] [char](20)default('计算机'))2.Course表。
记录课程信息。
表1-2 Course 表结构[Cno] [char](10)PRIMARY KEY,[Cname] [char](20)NOT NULL,[Ccredit] SMALLINT CHECK(Ccredit>0),[Semester] SMALLINT CHECK(Semester>0),[Period] SMALLINT CHECK(Period>0),)3.Sc表。
记录学生选修课程的信息。
表1-3 Sc 表结构[Sno] [char](9)NOT NULL,[Cno] [char](10)NOT NULL,[Grade]SMALLINT CHECK(Grade>=0 and Grade<=100),PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno),FOREIGN KEY(Cno)REFERENCES Course(Cno))二、在查询编辑器中,写出创建表的语句同时写出设置实体完整性、参照完整性和用户自定义完整性的语句。
数据库的完整性实验报告

数据库的完整性实验报告数据库的完整性实验报告引言:数据库的完整性是指数据库中存储的数据必须满足预定的一致性要求,包括实体完整性、域完整性、参照完整性和用户定义的完整性。
本实验旨在通过设计一个简单的数据库,并通过实际操作验证其完整性。
一、实验目的本实验的目的是通过设计和操作数据库,了解数据库的完整性概念,并掌握如何保证数据的完整性。
二、实验环境本实验使用MySQL数据库管理系统,并在Windows操作系统上进行实验。
三、实验步骤1. 创建数据库首先,我们需要创建一个数据库来存储我们的数据。
在MySQL中,可以使用以下命令创建一个新的数据库:```CREATE DATABASE integrity;```2. 创建数据表接下来,我们需要创建一个数据表来存储我们的数据。
假设我们要创建一个学生信息表,包括学生的学号、姓名和年龄。
可以使用以下命令创建该表:```USE integrity;CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT);```3. 插入数据现在,我们可以向刚刚创建的数据表中插入一些数据。
例如,我们可以插入几个学生的信息:```INSERT INTO students (id, name, age) VALUES (1, '张三', 20);INSERT INTO students (id, name, age) VALUES (2, '李四', 22);INSERT INTO students (id, name, age) VALUES (3, '王五', 21);```4. 实体完整性实体完整性是指每个实体都必须具有一个唯一的标识符。
在我们的学生信息表中,学生的学号是唯一的标识符。
为了保证实体完整性,我们可以在创建表时使用PRIMARY KEY约束来定义学号为主键:```CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT);```这样,如果有重复的学号插入到表中,系统会报错并拒绝插入。
数据库实用技术-实验六

实验报告单院(系)计算机学院专业计算机科学与技术班级姓名学号同组人实验室S4305 组号日期课程数据库实用技术指导教师成绩实验项目编号8103203006 实验项目名称索引和数据的完整性一、实验目的(1)掌握索引的使用方法;(2)掌握数据完整性的实现方法;二、实验环境WIN7操作系统SQL Server2008三、实验原理(或要求)(1)了解索引的作用与分类;(2)掌握索引的创建方法;(3)理解数据的完整性的概念与分类;(4)掌握各种数据完整性的实现方法。
四、实验步骤(1)建立索引①使用CREATE INDEX语句创建索引。
●对YGGL数据库的Employees表中的DepartmentID列建立索引。
在查询分析器中输入如下程序并执行:USE YGGLGOCREATE INDEX depart_indON Employees(DepartmentID)GO●在Employees表的Name列和Address列上建立复合索引。
CREATE INDEX Ad_indON Employees(Name,Address)●对Departments表上的DepartmentName列建立唯一非聚集索引。
CREATE UNIQUE INDEX Dep_indON Departments(DepartName)②使用界面方式创建索引。
使用界面方式在Employees表的PhoneNumber列上创建索引。
启动SQL Server Management Studio,在对象资源管理器中展开数据库YGGL,展开表Employees,右击“索引,选择“新建索引”选项。
在新建索引的窗口中填写索引的名称和类型,单击“添加”按钮,在列表框中选择要创建的索引的列,选择完单击“确定”按钮即完成创建工作。
(2)重建索引。
重建表Employees中的所有索引。
USE YGGLGOALTER INDEX ALLON Employees REBUILD(3)删除索引。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告书
课程名《数据库原理与应用A 》题目:数据库完整性
班级:
学号:
姓名:
1、实验内容或题目
数据库完整性
2、实验目的与要求
(1)掌握sql server 2005 数据库完整性的机理,理解并掌握约束。
(2)进行实验操作。
3、实验步骤与源程序
⑴实验步骤
掌握Sql server 2005基本语句的使用,主要是PRIMARY KEY约束、FOREIGN KEY约束、UNIQUE 约束、CHECK约束、NOT NULL。
练习Sql server 2005基本语句的使用。
完成实验报告。
⑵编写源代码
SQLQuery1(例13.1,在test数据库中创建department表,其中指定dno为主键):
use test
go
create table department
( dno int primary key,
dname char(20),
)
go
SQLQuery2(例13.2,使用FOREIGN KEY子句进行相关操作):
use test
go
create table worker
(no int primary key,
name char(8),
sex char(2),
dno int
foreign key references department(dno)
on delete no action,
address char(30)
)
go
SQLQuery3(例13.3,在test数据库中创建table5表,其中指定c1列不能包含重复的值):
use test
go
create table table5
( c1 int unique,
c2 int
)
go
insert table5 values(1,100)
go
/*插入下一行,则会出现错误消息*/
insert table5 values(1,200)
SQLQuery4(例13.4,在test数据库中创建table6表,其中使用CHECK约束限定f2列为0-100分): use test
go
create table table6
( f1 int,
f2 int not null check(f2>=0 and f2<=100)
)
go
/*插入下一行,则会出现错误消息*/
insert table6 values(1,120)
SQLQuery5(例13.5,在test数据库中创建table7表,其主键为c1和c2,将其中插入两个记录,输出这些记录):
use test
go
create table table7
( c1 int,
c2 int,
c3 char(5),
c4 char(10),
constraint c1 primary key(c1,c2)
)
go
use test
insert table7 values(1,2,'ABC1','XYZ1')
insert table7 values(1,2,'ABC2','XYZ2')
go
select*from table7
go
SQLQuery6(例13.6,在test数据库中创建table8表,其中c2指定默认值为10,c3指定默认值为当前日期):
use test
go
create table table8
( c1 int,
c2 int default 2*5,
c3 datetime default getdate()
)
go
use test
insert table8(c1)values(1)
select*from table8
go
SQLQuery7(例13.7,在test数据库中创建table9表,并设置默认值,插入4个记录,输出所有行): use test
go
create table table9
( c1 smallint,
c2 smallint default 10*2,
c3 char(10),
c4 char(10)default'xyz',
)
go
create default con5 as'China'
go
exec sp_bindefault con5,'table13.c3'
go
insert into table9(c1)values(1)
insert into table9(c1,c2)values(2,50)
insert into table9(c1,c3)values(3,'Wuhan')
insert into table9(c1,c3,c4)values(4,'Beijing','Good')
select*from table9
go
SQLQuery8(例13.8,创建名为rule1的规则,限定输入的值在0-10之间):
use test
go
create rule rule1 as @c1 between 0 and 10
go
SQLQuery9(例13.9,创建名为rule2的规则,限定输入到该规则所绑定的列中的实际值只能是该规则列中的值):
use test
go
create rule rule2 as @c1 in('2','5','8') go
SQLQuery10(绑定规则):
use test
go
exec sp_unbindrule'rule1','table9.c1' go
SQLQuery11(例13.10,解除绑定规则):
use test
go
exec sp_unbindrule'table9.c1'
go
SQLQuery12(例13.11删除规则):
use test
go
drop rule rule1
go
4、测试数据与实验结果(可以抓图粘贴)13.1PRIMARY KEY约束:
13.2FORIGN KEY约束:
13.3UNIQUE约束:
13.4CHECK约束:
13.5列约束和表约束:
13.6在创建表时指定默认值:
5、结果分析与实验体会
这次实验练习的是数据库完整性,由于有了之前T-SQL语言的学习经验,理解起来好很多,在老师的演示下,我对数据库的完整性有了更深刻的理解,同时对约束、默认值、规则的相关定义有了更深入的认识,和数据库完整性的目的:确保数据库中的数据
的一致性和完整性。
并能较熟练的使用T-SQL语句进行有关方面的操作。