实验5-数据库完整性设计
数据库5关系数据库完整性实验
数据库系统原理实验报告实验名称:关系数据库完整性实验任课教师:***学号:*********姓名:***完成日期:2012.11.28一、实验目的通过ORACLE的完整性,理解关系数据库的完整性二、实验内容与步骤ORACLE环境中通过触发器可以定义为更复杂的完整性约束例1:通过触发器产生主键值create sequence ql minvalue 010341416;create table student(sno number(9) primary key ,sname varchar2(20));create or replace trigger add_studentbefore insert on studentfor each rowbeginselect ql.nextval into :new.sno from dual;end;验证触发器:SQL>insert into student (sname)values(‘刘辉’);SQL>insert into student (sname)values(‘刘俊波’);例2:创建一个行级触发器,记录下给个用户对数据库的表进行数据操纵的次数create or replace trigger audit_studentafter delete or insert or update on studentfor each rowbeginif deleting thenupdate audit_student set del =del+1where user_name=user and table_name='student';end if;if inserting thenupdate audit_student set ins=ins+1where user_name=user and table_name='student';end if;if updating thenupdate audit_student set upd=upd+1;where user_name =user and table_name='student';end if ;end;要求:1)定义基本表:Audit_student(user_name,table_name,del,ins,upt)2)输入元组,例“SCOTT”,“student”,0,0,03)以SCOTT身份登录,对student表进行增加删除和修改操作,之后查看audit_student表的内容变化。
实验五索引和数据完整性
实验五索引和数据完整性1、目的与要求(1)掌握索引的使用方法。
(2)掌握数据完整性的实现方法。
2、实验准备(1)了解索引的作用与分类。
(2)掌握索引的创建方法。
(3)理解数据完整性的概念及分类。
(4)掌握各种数据完整性的实现方法。
3、实验容(1)建立索引。
①使用CREATE INDEX语句创建索引。
A、对YGGL数据库的Employees表中的DepartmentID列建立索引。
在“查询分析器”窗口中输入如下程序并执行。
B、在Employees表的Name列和Address列上建立复合索引。
C、对Department表上的DepartmentName列建立唯一非聚集索引。
【思考与练习】A、索引创建后在对象资源管理器中查看表的索引。
上面分别创建了Employees表和Department表的索引,在对象资源管理器中的表中将相应的表打开,在“索引”中显示该表中建立的索引。
详细结果如上面截图中显示。
B、了解索引的分类情况。
按索引的组织方式能够将索引分为聚集索引和非聚集索引两种类型。
聚集索引将数据行的键值在表排序并存储对应的数据记录,使得数据表物理顺序与索引顺序一致。
非聚集索引完全独立于数据行的结构。
C、使用CREATE INDEX语句能够创建主键吗?D、在什么情况下能够看到建立索引的好处?数据库索引是为了增加查询速度而对表字段附加的一种标识。
数据库的索引并不是只有好处或者只有坏处的。
当我们的数据库足够大,恰当的建立索引就会大大的提高查询搜索的速度;在这里举个反例,像查询性别这种大量重复的字段时候,是否建立索引是没有多大区别的;还有当表数据不是很多的时候建立索引也是没有多大意义的,因为索引也是要占用资源的。
但是当我们数据库非常大时候,经常进行GROUP BY查询时候,若将GROUP BY字段上建立索引就会很大程度上面较少查询搜索所花费的时间。
②使用界面方式创建索引。
使用界面方式在Employees表的PhoneNumber列上创建索引。
实验五 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.两个同学为一组(自由搭配),在自己的数据库服务器上分别为对方创建一个登录名,并授予一定权力,然后用对方为自己创建的登录名和对方的数据库服务器建立连接,进行登录,对对方的数据库服务器进行操作。
实验五 数据库完整性与安全性实验
实验五数据库完整性与安全性实验实验内容完整性实验与要求:1分别定义数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;该操作在实验2中已完成2向学生表插入具有相同学号的数据,验证其实体完整性约束;insertinto student values('g9940201','wangyu','1','9/1/1998','g99401','1999-9-1','背景');3向学生表中插入一条数据,班级号是学生表的外键,验证参照完整性约束;insertinto student values('g9940305','wangyu','1','9/1/1998','g99408','1999-9-1','背景');4删除教师表中的所有数据,验证参照完整性约束;deletefrom teacher5创建一个规则,将其绑定到Student表的Sex列上,保证输入的性别值是0或1Createrule value_sex1as@value in('0','1')GoExec sp_bindrule'value_sex1','student.sex'Go6为Student表增加一列,命名为dept,创建一个默认对象,将其绑定到Student表的dept列上,使其默认值为电子院。
Createdefault系默认as'电子院'GoExec sp_bindefault'系默认1','student.dept'Go安全性实验内容与要求:1定义一新的登录帐号、数据库用户,并授予其访问学生选课数据库的读权限;create login aaawith password='123',default_database=shiyancreate user wangyufor login aaawith default_schema=dbo2分别采用Windows NT/2000验证方式和Windows NT/2000及混合验证方式用不同的用户进行登录连接;3分别用sa用户和新定义的用户访问学生数据库,并对其中的学生表数据进行修改;insertinto student(student_id,entrance_date)values('g9940215','1999-9-1');4创建数据库角色,并授予访问数据库的读、写权限;sp_addrole'db_read_write1'gograntselecton student to db_read_write1gogrant update on student to db_read_write1gograntinserton student to db_read_write15将角色赋予(1)中定义的用户,建立用户和角色联系;exec sp_addrolemember'db_read_write','wangyu'6再次用此用户访问学生数据库,并对其中的学生表数据进行修改。
数据库的完整性实验报告
数据库的完整性实验报告数据库的完整性实验报告引言:数据库的完整性是指数据库中存储的数据必须满足预定的一致性要求,包括实体完整性、域完整性、参照完整性和用户定义的完整性。
本实验旨在通过设计一个简单的数据库,并通过实际操作验证其完整性。
一、实验目的本实验的目的是通过设计和操作数据库,了解数据库的完整性概念,并掌握如何保证数据的完整性。
二、实验环境本实验使用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);```这样,如果有重复的学号插入到表中,系统会报错并拒绝插入。
数据库实验报告 数据完整性
一、实验目的
法。
实验 6 数据完整性
1.掌握 Transact-SQL 语句(CREATE RULE、DROP RULE)创建和删除规则的方
2.掌握系统存储过程 sp_bindrule、sp_unbindrule 绑定和解除绑定规则的
操作方法,以及 sp_help、sp_helptext 查询规则信息、sp_rename 更名规则的
CREATE rule phone_rule AS @电话号码 LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
检验: 电话号码为 8 位时无法插入!
电话号码为 7 位ห้องสมุดไป่ตู้可以插入!
南京师范大学中北学院
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,通系电1,力过根保管据护线生高0不产中仅工资2艺料22高试2可中卷以资配解料置决试技吊卷术顶要是层求指配,机置对组不电在规气进范设行高备继中进电资行保料空护试载高卷与中问带资题负料2荷试2,下卷而高总且中体可资配保料置障试时2卷,32调需3各控要类试在管验最路;大习对限题设度到备内位进来。行确在调保管整机路使组敷其高设在中过正资程常料1工试中况卷,下安要与全加过,强度并看工且25作尽52下可22都能护可地1关以缩于正小管常故路工障高作高中;中资对资料于料试继试卷电卷连保破接护坏管进范口行围处整,理核或高对者中定对资值某料,些试审异卷核常弯与高扁校中度对资固图料定纸试盒,卷位编工置写况.复进保杂行护设自层备动防与处腐装理跨置,接高尤地中其线资要弯料避曲试免半卷错径调误标试高方中等案资,,料要编试求5写、卷技重电保术要气护交设设装底备备置。4高调、动管中试电作线资高气,敷料中课并设3试资件且、技卷料中拒管术试试调绝路中验卷试动敷包方技作设含案术,技线以来术槽及避、系免管统不架启必等动要多方高项案中方;资式对料,整试为套卷解启突决动然高过停中程机语中。文高因电中此气资,课料电件试力中卷高管电中壁气资薄设料、备试接进卷口行保不调护严试装等工置问作调题并试,且技合进术理行,利过要用关求管运电线行力敷高保设中护技资装术料置。试做线卷到缆技准敷术确设指灵原导活则。。:对对在于于分调差线试动盒过保处程护,中装当高置不中高同资中电料资压试料回卷试路技卷交术调叉问试时题技,,术应作是采为指用调发金试电属人机隔员一板,变进需压行要器隔在组开事在处前发理掌生;握内同图部一纸故线资障槽料时内、,设需强备要电制进回造行路厂外须家部同出电时具源切高高断中中习资资题料料电试试源卷卷,试切线验除缆报从敷告而设与采完相用毕关高,技中要术资进资料行料试检,卷查并主和且要检了保测解护处现装理场置。设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
实验五:数据完整性实验
实验五:数据完整性实验一、实验目的:掌握使用SQL中的PRIMARY KEY、CHECK、FOREIGN KEY……REFERENCES、NOT NULL、UNIQUE等关键字是现实体完整性、参照完整性及用户定义完整性约束定义。
二、实验步骤:(一)验证分析部分1、利用SQL查询分析器用PRIMARY KEY子句保证实体完整性。
在查询分析器窗体下键入如下命令:CREATE TABLE Student(sno CHAR(5) NOT NULL UNIQUE,sname CHAR(8),ssex CHAR(1),sage INT,sdept CHAR(20),CONSTRAINT PK_Student PRIMARY KEY(sno));UPDATE Student SET sno=’ ‘ WHERE sdept=’CS’;UPDATE Student SET sno=’200215121 ‘WHERE sname=’王敏’;运行并观察结果。
2、利用SQL查询分析器用FOREIGN KEY……REFERENCES子句保证实体完整性。
在查询分析器窗体下键入如下命令:(1)先删除原来SC表中关于Sno 的外键,再将SC的Sno外键修改为:alter TABLE SC add CONSTRAINT FK_Sno FOREIGN KEY (sno)REFERENCES Student(sno)ON update CASCADE;然后执行以下语句Update Student SET sno=’200215128 ‘ WHERE sno=’200215121’;(2) 先删除原来SC表中关于Sno 的外键,再将SC的Sno外键修改为:alter TABLE SC add CONSTRAINT FK_Sno FOREIGN KEY (sno)REFERENCES Student(sno)ON delete CASCADE;然后执行以下语句delete from student WHERE sno=’200215122’;运行并观察结果。
实验五 数据库完整性与安全性实验
实验五数据库完整性与安全性实验1、实验目的1.通过对完整性规则的定义实现,熟悉了解kingbase中完整性保证的规则和实现方法,加深对数据完整性的理解。
2.通过对安全性相关内容的定义,熟悉了解kingbase中安全性的内容和实现方法,加深对数据库安全性的理解2、实验环境操作系统:Microsoft Windows 7旗舰版(32位)。
数据库版本:MySQL 6.23、实验内容3.1完整性实验:(1)分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;在create table 时已经定义了各个基表的主键。
因此,首先对每个基表删除主键,再添加主键。
实现实体完整性约束。
如下图。
删除主键:添加主键:sc表中的cno和sno分别是course表和student表的外关键字。
下图为给sc表添加student和course的外键,实现参照完整性约束。
alter table sc add constraint fk_student foreign key(sno) references student(sno);alter table sc add constraint fk_course foreign key(cno) references course(cno);主键和外键均添加成功,输入show create table 命令来查看各基表信息。
(2)分别向学生表、课程表插入具有相同学号和相同课程编号的学生数据和课程数据,验证其实体完整性约束;向课程表中插入课程号为C01的课程。
向学生表中插入学号为30201的学生。
由上面两个实验来看,分别对student和course表插入具有相同学号和相同课程号的学生信息和课程信息,都显示sql语句错误信息为:Duplicate entry *** for key ‘PRIMARY’。
验证了实体完整性约束。
(3)向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束;插入成绩信息是学号为31428(student中存在),课程号为C07(course中不存在)的学生成绩信息。
数据库完整性实验报告
数据库完整性实验报告引言数据库完整性是数据库管理系统中的一个重要概念,用于确保数据库中数据的准确性、有效性和一致性。
本实验旨在通过设计和实现一系列完整性约束,来验证数据库完整性的实际应用。
实验目标本实验的目标是设计并实现以下几种完整性约束:1.实体完整性约束2.参照完整性约束3.用户自定义完整性约束实验环境本实验使用了以下工具和环境:•数据库管理系统:MySQL•编程语言:Python•集成开发环境:Jupyter Notebook实验步骤步骤一:数据库设计首先,我们需要设计一个符合实验需求的数据库。
我们选择一个简单的学生管理系统作为示例,包含以下两个实体:1.学生(Student):包含学生的学号、姓名和年龄。
2.课程(Course):包含课程的课程号、课程名和学分。
步骤二:实体完整性约束实体完整性约束用于保证每个实体在数据库中都有唯一的标识。
在本实验中,我们将为学生实体添加一个主键约束,保证每个学生的学号是唯一的。
CREATE TABLE Student (id INT PRIMARY KEY,name VARCHAR(50),age INT);步骤三:参照完整性约束参照完整性约束用于保证关系数据库中的引用一致性。
在本实验中,我们将为课程实体添加一个外键约束,引用学生实体的主键。
CREATE TABLE Course (id INT PRIMARY KEY,name VARCHAR(50),credits INT,student_id INT,FOREIGN KEY (student_id) REFERENCES Student(id));步骤四:用户自定义完整性约束用户自定义完整性约束是根据具体业务需求自定义的约束条件。
在本实验中,我们将为课程实体添加一个自定义约束,保证学分必须大于等于0。
ALTER TABLE CourseADD CONSTRAINT chk_credits CHECK (credits >=0);实验结果通过以上步骤,我们已经成功设计并实现了实体完整性约束、参照完整性约束和用户自定义完整性约束。
数据库完整性实验报告
数据库完整性实验报告第一篇:数据库完整性实验报告实验报告一、实验题目数据库完整性二、实验要求1)建立一个被参照关系test_main,其中id为主键。
.CREATE TABLE test_main(idINT, valueVARCHAR(10), PRIMARY KEY(id));2)建立一个参照关系test_sub,其中id为主键。
CREATE TABLE test_sub(idINT, main_id INT, valueVARCHAR(10), PRIMARY KEY(id));3)使用如下SQL语句插入数据--插入测试主表数据.INSERT INTO test_main(id, value)VALUES(1, 'ONE');INSERT INTO test_main(id, value)VALUES(2, 'TWO');--插入测试子表数据.INSERT INTO test_sub(id, main_id, value)VALUES(1, 1, 'ONEONE');INSERT INTO test_sub(id, main_id, value)VALUES(2, 2, 'TWOTWO');4)使用add constraint语句建立test_ sub表main_id到test_main表id的外键约束 5)删除test_main表中id=1的记录 6)测试完毕后,删除外键约束重新建立外键约束,要求删除主表的记录时候,同时删除子表中相应引用它的记录7)重新尝试第5步中的操作,之后检索test_sub 表,会出现什么结果?测试完毕后,删除外键约束8)重新建立外键约束,要求更新主表的主键时候,同时更新子表外键9)测试更新主表数据,将id=1的记录的id值设为5。
检查test_sub表中的数据是否被同步更新,测试完毕后,删除外键约束10)再次创建外键约束,要求删除主表的时候,同时将子表的main_id 设置为 NULL 11)测试删除主表test_main中id=2的数据,测试检索子表test_sub 测试完毕后,删除外键约束三、实验内容1)CREATE TABLE test_main(idINT, valueVARCHAR(10), PRIMARY KEY(id));2)CREATE TABLE test_sub(idINT, main_id INT, valueVARCHAR(10), PRIMARY KEY(id));3)INSERT INTO test_main(id, value)VALUES(1, 'ONE');INSERT INTO test_main(id, value)VALUES(2, 'TWO');INSERT INTO test_sub(id, main_id, value)VALUES(1, 1, 'ONEONE');INSERT INTO test_sub(id, main_id, value)VALUES(2, 2, 'TWOTWO');4)ALTER TABLE test_subADD CONSTRAINT main_id_cons FOREIGN KEY(main_id)REFERENCES test_main(id);5)delete from test_main where id='1' 无法执行6)alter table test_subdrop constraint main_id_consALTER TABLE test_subADD CONSTRAINT main_id_cons FOREIGN KEY(main_id)REFERENCES test_main(id)on delete cascade;7)delete from test_main where id='1';结果是test_main,和test_sub中的id=1的都被删除了altertable test_subdrop constraintmain_id_cons;8)首先我把上面操作所删除的加上了INSERT INTO test_main(id, value)VALUES(1, 'ONE');INSERT INTO test_sub(id, main_id, value)VALUES(1, 1, 'ONEONE');ALTER TABLE test_subADD CONSTRAINT main_id_cons FOREIGN KEY(main_id)REFERENCES test_main(id)on update cascade;9)update test_main set id='5' where id='1' 结果是main_id也变为了5。
数据库实验 数据完整性管理
实验五数据完整性管理一、实验目的(1)掌握域完整性的实现方法。
(2)掌握实体完整性的实现方法。
(3)掌握参照完整性的方法。
二、实验内容数据库的完整性设置。
三、实验步骤(一)Sc表:Student表:Course表:可视化界面的操作方法:实体完整性1.将student 表的“sno”字段设为主键:在表设计界面中,单击左边的行选定块,选定“sno”字段,单击工具按钮设置主键。
如图所示:2.将“sc”表的“sno”和“cno”设置为主键:在表设计界面中,单击并按住Ctrl 键拖动左边的行选定块,选定sno 和cno 字段,单击工具按钮设置主键。
如图所示:域完整性3. 将“ssex”字段设置为只能取“男”,“女”两值:在表设计界面,点击鼠标右键——CHECK约束,——添加约束,添加CK_student_sex 名称,然后在约束表达式框中输入“ ssex in ('男','女') ”。
如图所示。
参照完整性4. 将“student”表和“sc”表中的“sno”字段设为参照: 打开“sc”表的设计界面, 点击工具栏按钮, 在弹出的属性(properties)对话框中点击“新建”按钮,在“主键表(Primary keytable)”下拉框中选择“student”表,在其下的字段选择框中选择“sno”,在“外键表(Foreignkey table)”下拉框中选择“sc”表,在其下的字段选择框中选择“sno”,单击关闭即可。
命令方式操作方法:实体完整性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) NOT NULL,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 addconstraintCK_ID_Formatcheck((idlike'[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(idlike'[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 (len(id)=18 and ( (convert(smallint,substring(id,7,4) )>=1900)and(convert(smallint,substring(id,7,4) )<=2050)) )6. 设置男生的年龄必须大于22, 女生的年龄必须大于20.Alter table student add constraint CK_age check (ssex='男' and sage>=22 or ssex='女' and sage>=20 )参照完整性9. 将“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 INT NULL,constraint PK_SnoCno primary key (sno,cno) )完整性验证1.实体完整性:在“student”表数据浏览可视化界面中输入学号相同的两条记录将会出现错误如图所示:或者在命令窗口输入下面两条命令也会出现错误提示:insert into student values('95003','张三','男',24,'CS','422229************')insert into student values('95001','李四','女',21,'CS','422229************')下面的语句用来验证“sc”表中的实体完整性:insert into sc values('95002', '10',65)insert into sc values('95002', '10',90)2. 域完整性:使用下面的语句验证“ssex”字段的域完整性:insert into student values('95009','张匀','大',20,'CS',‘422229************’)3.参照完整性:使用下面的语句“验证”sc 表中的“sno”字段的域完整性(假设student 表中没有学号为“95998”的学生记录):insert into sc values('98998', '10',98) (二)实验任务1、建立课程的实体完整性, 和课程号cno 的参照完整性;课程的实体完整性:课程号cno 的参照完整性:alter table sc add constraint FK_cno foreign key(cno)r eferences course(cno)2、对HRM 数据库,练习建立三个表的主外键约束、唯一约束、取空值约束、用户自定义的约束(参考HRM 数据库表定义图中说明);主键约束:Departments:alter table departments add constraint FK_DepartmentID primary key(DepartmentiID)Employee:alter table Employee add constraint FK_EmployeeID primary key (EmployeeID)外键约束:Salary:alter table salary add constraint FK_EmployeeID foreign ke y(EmployeeID)references Employee(EmployeeID)Employee:alter table employeeadd constraint FK_EMPLOYEE_DEPARTMENTforeign key(DepartmentID)references Departments(DepartmentID)唯一约束:Departments:alter table Departmentsadd constraint UNIQUE_DepartmentUNIQUE(DepartmentID)Employee:alter table Employee add constraint UNIQUE_Employee UNIQUE (DepartmentID)Salary:alter table Salary add constraint UNIQUE_Salary UNIQUE(Employ eeID)非空约束:表Employee:alter table Employee alter column EmployeeID char(6)not nullalter table Employee alter column Name char(10)not nullalter table Employee alter column Birthday Datetime not nullalter table Employee alter column Sex Bit not nullalter table Employee alter column DepartmentID char(3)not null表Departments:alter table Departments alter column DepartmentID char(3)no t null表Salary:alter table Salary alter column EmployeeID char(6)not null alter table Salary alter column Income Float(8)not null alter table Salary alter column OutCome Float(8)not null用户自定义约束:alter table Employee add constraint CK_Sex check(sex in('男' ,'女'))3、建立salary 表的Income 字段限定在0-9999 之间。
实验五数据库的完整性实验(含代码)
实验五数据库的完整性实验(含代码)实验五数据库的完整性与安全性实验⼀、实验⽬的使学⽣了解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、根据实验内容和每⼀步骤实验的结果,按课程实验报告的撰写规范完成实验报告。
实验五 数据库完整性与安全性
实验五数据库完整性与安全性一、实验目的1.充分理解关系数据库中关于数据库完整性的理解。
2.掌握实体完整性的定义方法。
3.掌握参照完整性定义的方法。
4.掌握用户自定义完整性的方法。
二、实验内容和要求创建orderdb数据库,建立以下5张基本表。
(一)实体完整性约束1.创建一个客户表(客户号、姓名、电话、地址、邮编),并为该表建立主键约束。
CREATE TABLE Customer(customerNo char(9) ,CONSTRAINST customerpk PRIMARY KER(customerNo)customerName varchar(40) ,telephone varchar(20) ,address char(40) ,zip char(6))2创建一订单明细表(订单编号,商品编号,数量,单价),为该表创建主键约束。
CREATE TABLE OrderDetail(customerName char(12),productNo char(9),quantity int,price numeric(7,2),CONSTRAINST orderdetailpk PRIMARY KEY(orderNo,productNo))3.创建一张订单表(订单编号、客户编号、员工编号、订单金额、订货日期、发票号码),要求给该表建立主键约束。
CREATE TABLE OrderMaster(orderNo char(12) PRIMARY KEY,customerNo char(9),salerNo char(8),orderDate datetime,orderSum numeric(9,2),invoiceNo char(10))(二)参照完整性约束1.建立一张订单表(订单编号、客户编号、员工编号、订单金额、订货日期、发票号码),要求给该表建立主键约束和关于员工表和客户表的外键约束。
CREATE TABLE OrderMaster(orderNo char(12) PRIMARY KEY,customerNo char(9) ,salerNo char(8) ,orderDate datetime ,orderSum numeric(9,2) ,invoiceNo char(10) ,CONSTRAINT OrdermasterFK1 FOREIGN KEY(customerNo)REFERENCES Customer(customerNo),)2.重新创建订单明细表,给该表再增加外键约束。
数据库原理实验报告-数据库的完整性
实验题目四、数据库的完整性一、实验目的1、掌握使用约束实现数据完整性的方法;2、掌握使用触发器实现数据完整性的方法;二、实验内容和要求1、设置主键约束、外键约束、唯一约束、非空约束、CHECK约束等;2、使用图形用户界面创建触发器、使用SQL语言创建触发器,实现完整性控制;三、实验主要仪器设备和材料1.计算机及操作系统:PC机,Windows 2000/XP或更高版本;2.数据库管理系统:SQL Server 2005或更高版本;四、实验方法、步骤及结果测试(一)、根据实验一中的基本表,使用约束创建数据完整性。
要求:1、删除teaching中的基本表。
按实验一中的各表的定义,重新创建student表、course1)创建各基本表的先后顺序有什么影响?2)在创建各表过程中,遇到了什么问题,是如何解决的?3、通过“ALERT TABLE”语句,完成下列操作:1)为student表的sname列添加唯一约束,并命名。
2)删除course表的非空约束。
3)为sc表的score列添加约束,取值范围为[0,100]。
4)定义域title_domain,取值为{助教,讲师,副教授,教师},检查SQL Server是否3、检查student表sname列的唯一约束插入新的数据记录对新建的唯一约束进行检查,写出相应的SQL语句,并将检查的执4、检查sc表score列的CHECK约束插入不在定义范围的数据记录检查约束。
写出相应的SQL语句,并将检查执行结果截(二)、通过图形用户界面的方式创建各类约束,定义数据的完整性1、删除sc表的外键约束。
在表设计器中,单击工具栏中的“表和索引属性”按钮,打开2、删除speciality的spname字段唯一约束。
然后在表设计器中,单击工具栏中的“表和3、在表设计器中,单击工具栏中的“表和索引属性”按钮,打开“属性”对话框,在“CHECK 约束”选项中,为teacher表中的title列设置检查约束,定义取值范围为{助教、讲师、副(三)、使用触发器实现数据的完整性1、在student表中创建触发器,实现student和sc表的级联删除。
实验五 数据库完整性2015
实验五数据库完整性专业班级: 学号:姓名:实验地点:实验日期:指导老师:一.实验目的1、掌握完整性的概念和完整性实现机制2、了解SQL SERVER 的违反完整性处理措施二、实验环境SQL SERVER 2005三.实验内容在前几次实验的基础上,根据上述要求设计实验。
下面是必须完成的实验内容:1、实现域完整性创建一个关于性别的规则1)打开“SQL Server Management Studio”窗口,单击“标准”工具栏上的“新建查询”按钮,打开“查询编辑器”窗口。
在窗口内直接输入以下语句,为学生表的“性别”列创建规则,约束其值只能是“男”或“女”。
create rule sex_ruleas @性别in('男','女')go2)单击“SQL编辑器”工具栏上的“执行”按钮、3)在“查询编辑器”窗口内输入以下语句,将所创建的规则绑定到“性别”列。
EXEC Sp_bindrule 'sex_rule','student.ssex'4)单击工具栏上的“执行”按钮、5)在“对象资源管理器”中,展开目标数据库中的“表”节点,鼠标右键单击目标表“student”,在弹出的快捷菜单中选择“打开表”命令,输入一行新记录,检验“性别”列值的约束情况。
2、实现实体完整性利用前几次实验定义的数据库表,参照教材第四章内容和例题(教材P52-56),对表的实体完整性定义,进行一次违约操作,看违约反应,(1)主码实体完整性约束,截图如下:(2)属性约束条件违约,截图如下:3、实现参照完整性利用前几次实验定义的数据库表,参照教材第四章内容和例题(教材P52-56),对表的参照完整性定义,进行一次违约操作,看违约反应,四.实验心得次实验的收获是认识到自己对实体完整性和参照完整性不够理解,没有熟练的运用与掌握,从实验中学习到新的知识,发现自己的不足。
新编[计算机]实验五 数据完整性与存储过程
实验五数据完整性与存储过程一、数据完整性1.实验目的1)掌握域完整性的实现方法。
2)掌握实体完整性的实现方法。
3)掌握参照完整性的方法。
2.实验内容1)使用界面方式创建规则对象,并绑定到列,实现域完整性。
2)为表添加一个标识列,实现实体完整性。
3)为两表建立关联,实现参照完整性。
3.实验步骤1)实现域完整性①启动SQL Server企业管理器,打开“SQL Server Enterprise Manager”窗口。
②选择要创建规则对象的数据库文件夹,并在右边的对象窗口中选择其中的“规则”对象。
选择“操作”菜单中的“新建规则”命令,打开“规则属性”对话框。
③设置形如“(区号)电话号码”的联系电话格式检查规则,单击“确定”按钮,完成规则对象的定义。
④打开“规则”对象,并选中刚才定义的规则对象RO_联系电话格式。
选择“操作”菜单中的“属性”命令,打开“规则属性”对话框。
⑤单击“绑定列”按钮,打开“将规则绑定到列”对话框,完成到列的绑定,关闭“规则属性”对话框。
⑥在对象窗口中选择并打开其中的“表”对象,选中XSQK表并打开。
⑦在表中分别插入两行新记录,其中一行的联系电话格式为指定的格式,另一行的联系电话格式为非法格式。
当插入第一行时,系统成功地插入了新数据行,但无信息返回;而在插入第二行时系统提示错误信息,拒绝接受非法格式的联系电话,从而保证了域完整性。
⑧单击“确定”按钮,取消插入,并关闭表的数据记录窗口。
2)实现实体完整性①在对象窗口中选择并打开其中的“表”对象,选中KC表。
②选择“操作”菜单中的“设计表”命令,打开表编辑器窗口。
③添加一个标识列,种子值为1,递增量也为1。
④点击快捷工具拦上的快捷按钮,完成标识列的添加,然后关闭编辑窗口。
⑤选中KC表并打开表的数据记录窗口。
可以看到,系统自动为每行的标识列填充了值,并从1开始,依次递增,这样,表中的每一数据行都可以由标识列唯一标识,实现了实体完整性。
⑥关闭表的数据记录窗口。
实验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字段添加一个约束,规定生日应小于入学时间。
数据库安全性及完整性实验报告
数据库安全性及完整性实验报告
一、实验简介
一般来说,数据库的安全性及完整性是指数据库实际上实施的安全性、有效性、正确性和可靠性的控制。
当下的关注点是能够确保数据的有效性、正确性与可靠性,以及确保数据的安全性与完整性。
除此之外,还必须尽
量减少数据被篡改及窃取的可能性,使得数据向客户端分发及共享时不会
受到攻击。
本文旨在测试数据库的安全性及完整性,以及评估对于数据库
的安全性及完整性的影响。
二、实验目的
实验的目的是测试数据库的安全性及完整性,以及评估对于数据库的
安全性及完整性的影响。
三、实验内容
1、建立测试环境
为了测试数据库的安全性及完整性,首先我们需要建立一个测试环境,该测试环境包括:安装和配置数据库服务器,建立数据库,建立表、字段,插入一些测试数据,建立客户端访问数据库的程序。
2、测试数据库的安全性
在测试阶段,我们需要测试数据库的安全性,这个测试有两个方面:(1)授权:测试用户是否可以正确访问指定的数据库和表,而不受
限制。
(2)身份认证:测试数据库服务器的安全性,检查服务器是否能够正确实施身份认证,保证只有授权用户可以访问数据库。
3、测试数据库的完整性。
实验五 数据库完整性一、实验目的掌握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
数据库实验报告数据的完整性
安康学院电子与信息工程系实验报告(供不用记录实验数据、以作品的形式体现、注重操作练习过程的实验或上机课程参考)课程名称数据库原理及应用实验名称数据的完整性成绩姓名学号班级11级计算机科学与技术同组人员实验台号实验日期1.实验目的:(5分)(1)理解数据库完整性约束的概念;(2)掌握SQL Server数据完整性的实现方法。
2.实验内容:(15分)(1)将教学管理数据库中学生表的学号字段,课程表的课程号字段设置为主码,并验证。
(2)将教学管理数据库中选课表的学号和课程号字段设置为主码,并验证。
(3)将学生表中的姓名字段设置为唯一约束,并验证。
(4)给学生表的性别列增加检查约束,要求性别只能为“男”或“女”,给年龄列增加检查约束,要求年龄在18到20岁之间,并验证。
(5)给学生表的性别列增加默认值约束。
(6)给选课表的学号和课程号字段分别创建外码约束,并验证。
3.实验过程:(60分)(1)将教学管理数据库中学生表的学号字段,课程表的课程号字段设置为主码,并验证。
设置学生表中学号字段为主键设置课程表中课程号为主键学生表信息在学生表中添加学号为*****的学生课程表信息在课程表中添加课程号为1的学生(2)将教学管理数据库中选课表的学号和课程号字段设置为主码,并验证。
将选课表的学号和课程号字段设置为主码选课表信息在课程表中插入学号,课程号为98001,1的学生(3)将学生表中的姓名字段设置为唯一约束,并验证。
(5)给学生表的性别列增加默认值约束。
插入之后信息,默认为“男”(6)给选课表的学号和课程号字段分别创建外码约束,并验证。
学生表信息课程表信息学生表中没有的学号,课程表中有的课程号学生表中有的学号,课程表中没有的课程号4.实验总结:(20分)通过本次实验,理解了数据库完整性约束的概念,并且通过实验验证了数据库的完整性。
验证了实体完整性,参照完整性,以及用户自定义完整性并且加深了理解。
更加深刻的了解到了数据库,以及数据完整性的重要性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Onstudent
fordelete
As
Begin
Delete
fromSC
wheresno=(selectsno
fromdeleted)
End
相应的触发语句
delete
fromstudent
wheresno='10001'
查看
Select*
fromstudent
相应的触发语句
delete
fromstudent
wheresno='200215121'
3.使用SQL命令删除触发器Test1。
droptriggertest1
4.创建触发器update_trig,当修改学生表中的学号字段后,自动修改选课表中相应的学号。写出相应的触发语句。(提示:如果选课表上建的有外码约束,要先删除外码约束。)
相应的触发语句
updatestudent
setsno='10001'
wheresno='200215122'
5.在选课表上创建一个触发器update_trig1,若对选课表的学号和课程号列修改,则给出提示信息,并取消修改操作。写出相应的触发语句。
(为了不影响后面的题,请删除触发器update_trig1)
createtriggerupdate_trig1
onsc
forupdate
as
ifupdate(sno)orupdate(cno)
print'无法修改学号和课程号'
rollbacktransaction
update SC
set Cno='111'
where Cno='2'
6.在学生表上创建触发器del_trg,当删除学生表中某一个学生的记录时,能自动从选课中删除掉该学生的所有选课记录。写出相应的触发语句。
实验5报告
题目:设计触发器
姓名:范甜甜
日期:2014-11-13
实验内容及完成情况:
1.创建一个触发器Test1,要求每当在学生表中修改数据时,将向客户端显示一条“记录已修改!”的消息。写出相应的触发语句。
create trigger test1
on student
aftБайду номын сангаасr update
as if update(Sage)
Select*
fromSC
print '记录已修改!'
相应的触发语句
update student
set Sage=Sage+1
2.修改第1题所定义的触发器Test1,使其在学生表中删除数据时显示“记录已删除!”消息。写出相应的触发语句。
altertriggertest1
onstudent
afterdelete
asprint'记录已删除!'
(为了不影响后面的题,请删除触发器update_trig)
createtriggerupdate_trig
onstudent
forupdate
as
ifupdate(sno)
updatesc
setsno=(selectsnofrominserted)
wheresno=(selectsnofromdeleted)