实验五数据库的完整性实验(含代码)
实验5 索引和数据完整性_MySQL数据库教程_[共3页]
177
实验5
索引和数据完整性
目的与要求
(1)掌握索引的使用方法;
(2)掌握数据完整性的实现方法。
实验准备
(1)了解索引的作用与分类;
(2)掌握索引的创建方法;
(3)理解数据完整性的概念及分类;
(4)掌握各种数据完整性的实现方法。
实验内容
1.创建索引
(1)使用CREATE INDEX 语句创建索引
① 对YGGL 数据库的Employees 表中的DepartmentID 列建立索引。
在MySQL 客户端输入如下命令并执行:
create index depart_ind
on Employees(DepartmentID);
② 在Employees 表的Name 列和Address 列上建立复合索引。
create index Ad_ind
on Employees(Name, Address);
③ 对Departments 表上的DepartmentName 列建立唯一性索引。
create unique index Dep_ind
on Departments(DepartmentName);
【思考与练习】
a .索引创建完后可以使用SHOW INDEX FROM tbl_name 语句查看表中的索引。
b .对Employees 表的Address 列进行前缀索引。
c .使用CREATE INDEX 语句能创建主键吗?
(2)使用ALTER TABLE 语句向表中添加索引
① 向Employees 表中的出生日期列添加一个唯一性索引,姓名列和性别列上添加一个复合索引。
使用如下SQL 语句:。
实验五 数据完整性
实验六数据完整性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。
删除stu_nj_rule规则。
(因为stu_s_rule是已存在的,所有这里改成stu_ss_rule)(4)在student_db数据库中,建立日期、货币等数据类型的默认值对象。
①创建默认对象df_date、df_money。
②输入以下代码,在xskc数据库中创建stu_fee数据表。
CREATE TABLE stu_fee(学号char(10) NOT NULL,姓名char(8) NOT NULL,学费money,交费日期datetime,)③使用系统存储过程sp_bindefault将默认对象df_money、df_date分别绑定在stu_fee表的“学费”、“交费日期”列上。
5数据完整性和数据安全性实验
实验5 数据完整性和数据安全性实验课时安排:2课时一、实验目的和要求使学生加深对数据安全性和完整性的理解.并掌握SQL Server中有关用户、角色及操作权限的管理方法.学会创建和使用规则、缺省和触发器。
二、实验内容1 数据库的安全性实验、在SQL Server企业管理器中,设置SQL Server的安全认证模式.实现对SQL Server的用户和角色管理,设置和管理数据操作权限.2数据库的完整性实验。
使用Transact-SQL设计规则、缺省、约束和触发器.通过SQLServer企业管理器定义它们。
三、实验方法1.设置SQL Server的安全认证模式1)在企业管理器中展开SQL服务器组。
用鼠标右键单击需要设置的SQL服务器,在弹出的菜单中选择“属性”项。
2)在弹出的SQL服务器属性对话框中,选择“安全性”选项卡。
3)在安全性选项卡中有一个安全性栏,它包括两个单选钮:单击“SQL Server和Windows(S)为选择混合安全认证模式;单击“仅Windows(W)”则为选择集成安全认证模式。
2.登录的管理(1)查看安全性文件夹的内容使用企业管理器可以创建、查看和管理登陆,登录文件夹存放在SQL服务器的安全性文件夹中。
当执行了进入企业管理器,打开指定的SQL服务器组和SQL服务器,并选择安全性文件夹的系列操作。
通过该窗口可以看出,安全性文件夹包括4个文件夹;登录文件夹。
服务器角色文件夹、链接服务器文件夹和远程服务器文件夹。
其中:登录文件夹用于存储和管理登录用户,服务器角色文件夹用于存储和管理角色:链接服务器文件夹用于存储和管理连接的服务器.远程服务器文件夹用于存储管理远程服务器信息。
(2)创建一个登录用户1)用鼠标右键单击登录文件夹,在弹出的菜单中选择“新建登录”选项后就会出现一个登录属性对话框。
在对话框中有常规选项卡、服务器角色选项卡和数据库访问选项卡。
2)选择常规选项卡输入用户的一般特征、常规选项卡界面。
数据库完整性代码
--②CREDIT取值为至以内的数字;
--? 参照完整性:TNO为外码,并实现级联更新和级联删除操作;
CREATETABLECourse
(CNOCHAR(4),
TNOCHAR(3),
CNAMECHAR(20)NOTNULL,
CREDITINTcheck(CREDIT>=1andCREDIT<=10),
--1、Dept表
--DEPTNO CHAR()
--E VARCHAR()DNAM
--实体完整性:DEPTNO为主码;
--用户定义完整性
--①DEPTNO的取值为至;
--②DNAME取值非空且唯一;
CREATETABLEDEPT
(DEPTNOCHAR(2)PRIMARYKEY
constraintc1check(DEPTNObetween01and99),
PRIMARYKEY(SNO,CNO),
FOREIGNKEY(SNO)REFERENCESStudent(SNO)
ondeletecascade
onupdatecascade,
FOREIGNKEY(CNO)REFERENCESCourse(CNO)
ondeletenoaction
onupdatenoaction,
DNAMEVARCHAR(20)
constraintc2NOTNULLunique,
);
--2、Student表
--? SNO CHAR()
--? SNAME VARCHAR()
--? SEX CHAR()
--? DEPTNO CHAR()
--
--? 实体完整性:SNO为主码;
实验五 数据库完整性与安全性实验
实验五数据库完整性与安全性实验实验内容完整性实验与要求: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再次用此用户访问学生数据库,并对其中的学生表数据进行修改。
实验五:数据完整性实验
实验五:数据完整性实验一、实验目的:掌握使用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中不存在)的学生成绩信息。
数据库实验报告:实验五
数据库实验报告:实验五一、实验目的本次数据库实验五的主要目的是深入了解和掌握数据库的高级操作,包括存储过程的创建与使用、视图的定义和应用、以及事务处理的原理和实践。
通过这些实验内容,提高我们对数据库系统的综合运用能力,为解决实际的数据库管理问题打下坚实的基础。
二、实验环境本次实验使用的数据库管理系统是 MySQL 80,开发工具为 Navicat Premium 12。
操作系统为 Windows 10 专业版。
三、实验内容及步骤(一)存储过程的创建与使用1、创建一个名为`get_student_info` 的存储过程,用于根据学生学号查询学生的基本信息(包括学号、姓名、年龄、性别和专业)。
```sqlDELIMITER //CREATE PROCEDURE get_student_info(IN student_id INT)BEGINSELECT FROM students WHERE student_id = student_id;END //DELIMITER ;```2、调用上述存储过程,查询学号为 1001 的学生信息。
```sqlCALL get_student_info(1001);```(二)视图的定义和应用1、创建一个名为`student_grade_view` 的视图,用于显示学生的学号、姓名和平均成绩。
```sqlCREATE VIEW student_grade_view ASSELECT sstudent_id, sname, AVG(ggrade) AS average_gradeFROM students sJOIN grades g ON sstudent_id = gstudent_idGROUP BY sstudent_id, sname;```2、查询上述视图,获取所有学生的平均成绩信息。
```sqlSELECT FROM student_grade_view;```(三)事务处理1、开启一个事务,向学生表中插入一条新的学生记录(学号:1005,姓名:_____,年龄:20,性别:男,专业:计算机科学)。
数据库完整性实验报告
数据库完整性实验报告第一篇:数据库完整性实验报告实验报告一、实验题目数据库完整性二、实验要求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 之间。
北邮数据库实验五数据库完整性与安全性实验
北邮数据库实验五数据库完整性与安全性实验以下是为您起草的一份关于“北邮数据库实验五数据库完整性与安全性实验”的协议:合同主体11 甲方:____________________________12 乙方:____________________________合同标的21 本次合同的标的为北邮数据库实验五数据库完整性与安全性实验的相关合作事宜。
22 具体包括但不限于:数据库完整性的测试与保障、数据库安全性的设置与评估等实验内容。
双方权利义务31 甲方权利义务311 甲方有权要求乙方按照合同约定的时间和质量标准完成实验任务。
312 甲方有义务为乙方提供必要的实验资源和技术支持。
313 甲方应及时对乙方提交的实验成果进行验收和反馈。
32 乙方权利义务321 乙方有权获取甲方提供的实验资源和技术支持。
322 乙方有义务按照合同约定的要求和时间进度,认真完成数据库完整性与安全性实验的各项任务。
323 乙方应保证实验过程的合法性、安全性,不得泄露相关数据和信息。
324 乙方需按照甲方的要求提交实验报告和相关成果。
违约责任41 若甲方未按照合同约定提供实验资源和技术支持,导致实验无法正常进行,应承担相应的责任,包括但不限于延长实验期限、补偿乙方因此造成的损失。
42 若乙方未按时完成实验任务,应承担违约责任,根据逾期的时间长短,按照一定比例扣除合同款项,并采取措施尽快完成实验。
43 若乙方在实验过程中违反合法性、安全性要求,泄露相关数据和信息,应承担法律责任,并赔偿甲方因此遭受的全部损失。
44 若双方在实验成果的验收标准上存在争议,且经协商无法达成一致,应按照行业通用标准或由双方共同指定的第三方机构进行评估和判定,责任方应承担相应的评估费用和可能的损失。
争议解决方式51 本合同在履行过程中如发生争议,双方应首先友好协商解决。
52 若协商不成,任何一方均可向有管辖权的人民法院提起诉讼。
本合同自双方签字(或盖章)之日起生效,一式两份,双方各执一份,具有同等法律效力。
实验五数据库的完整性实验(含代码)
实验五数据库的完整性实验(含代码)实验五数据库的完整性与安全性实验⼀、实验⽬的使学⽣了解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.重新创建订单明细表,给该表再增加外键约束。
实验五 数据库完整性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字段添加一个约束,规定生日应小于入学时间。
实验五 数据库完整性一、实验目的掌握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
实验五 数据库完整性与安全性实验
实验五数据库完整性与安全性实验实验内容完整性实验与要求: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再次用此用户访问学生数据库,并对其中的学生表数据进行修改。
数据库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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五数据库的完整性实验(含代码)实验五数据库的完整性与安全性实验一、实验目的使学生了解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、根据实验内容和每一步骤实验的结果,按课程实验报告的撰写规范完成实验报告。
2、实验报告至少包括以下内容:①实验目的;②实验环境;③实验内容、步骤、结果和实验过程中出现的问题;④实验过程中出现的问题。
--创建表时没有写约束名,怎么删除约束条件--not null约束条件不能用这种方法删除select * from bookselect * from borrowselect * from readeralter table studentdrop constraint afalter table student alter column sno nvarchar(50) nullcreate table student(sno nvarchar(50)constraint af unique,)drop table studentalter table studentadd--创建三张带有约束名的表Create table Book(bno nvarchar(50)constraint c1 primary key(bno), bclass nvarchar(50) constraint c2 not null, publisher nvarchar(50) constraint c3 not null,author nvarchar(50) constraint c4 not null, bname nvarchar(50) constraint c6 unique(bname), price floatconstraint c5 not null, remark nvarchar(50),num nvarchar(50),date datetime,)Create table Reader(rno nvarchar(50)constraint ca primary key(rno), rname nvarchar(50) constraint cb not null, department nvarchar(50) constraint cc not null,sex varchar(2)constraint cd check(sex in('男','女')),telephone nvarchar(50)constraint ce not null)Create table Borrow(bno nvarchar(50),rno nvarchar(50),bdata datetime,Back_date datetime,constraint cq primary key(bno,rno),constraint cw foreign key(bno) references Book(bno), constraint ce foreign key(rno) references Reader(rno) ) --第一题--删除book表的约束条件alter table book drop constraint c1alter table book alter column bclass nvarchar(50) nullalter table book alter column publisher nvarchar(50) nullalter table book alter column author nvarchar(50) nullalter table book alter column price float nullalter table book drop constraint c6--删除borro表的约束条件,必须先删除borrow表,alter table borrow drop constraint cqalter table borrow drop constraint cwalter table borrow drop constraint ce--删除reader表的约束条件alter table reader drop constraint caalter table reader alter column rname nvarchar(50) nullalter table reader alter column department nvarchar(50) nullalter table reader alter column telephone nvarchar(50) null alter table reader drop constraint cd--第二题--添加book的约束条件alter table book add constraint c1 primary key(bno);alter table book add constraint c6 unique(bname);alter table book alter column bclass nvarchar(50) not nullalter table book alter column publisher nvarchar(50) not null alter table book alter column author nvarchar(50) not nullalter table book alter column price float not null--添加borrow表的约束条件,alter table borrow add constraint cq primary key(bno,rno);alter table borrow add constraint cw foreign key(bno) references Book(bno); alter table borrow add constraint ce foreign key(rno) references Reader(rno);--添加的reader约束条件alter table reader add constraint ca primary key(rno);alter table reader alter column rname nvarchar(50) not null alter table reader alter column department nvarchar(50) not nullalter table reader alter column telephone nvarchar(50) not nullalter table reader add constraint cd check(sex in('男','女'));alter table reader add constraint cf default '男' for sex;--ADDCONSTRAINTDE_性别DEFAULT'男'FOR性别--ALTER TABLE wfwangTable DRO PCONSTRAINTDE_性别--第三题alter table reader add constraint cf default '男' for sex;--第四题alter table book add constraint c7 unique(author);/**在“图书”表中,增加两个字段,分别为“数量”和“购买日期”和在“借阅”表中增加一个“还书日期”字段*/Alter table Reader add constraint cons_sex_chk check(sex in ('男','女'))Alter table Book add num int not nullAlter table Book add date datetime not nullAlter table Borrow add Back_date datetime not nullinsert into Book(bno,bclass,publisher,author,bname,price,remark,num,date) values('0001','计算机','清华大学出版社','严蔚敏','数据结构','15.00','','10','1999-05-08')insert into Book(bno,bclass,publisher,author,bname,price,remark,num,date) values('0002','计算机','清华大学出版社','单建魁','数据库系统实验指导','15','','30','2000-03-01') insert into Book(bno,bclass,publisher,author,bname,price,remark,num,date) values('0003','环境','南京大学出版社','王小容','环境化学','32.00','','20','2000-06-09')insert into Book(bno,bclass,publisher,author,bname,price,remark,num,date) values('0004','环境','清华大学出版社','何强','环境学导论','35.00','','20','2000-06-12')insert into Book(bno,bclass,publisher,author,bname,price,remark,num,date) values('0005','计算机','电子工业出版社','傅清祥','算法与数据结构','36.70','','10','2000-07-15') insert into Book(bno,bclass,publisher,author,bname,price,remark,num,date) values('0006','计算机','清华大学出版社','蔡自兴','人工智能及其应用','28.00','','10','2000-09-17')insert into Reader(rno,rname,department,sex,telephone)values('0001','张红','电气学院','女','010********')insert into Reader(rno,rname,department,sex,telephone) values('0002','杨小鹏','信息学院','男','010********') insert into Reader(rno,rname,department,sex,telephone) values('0003','王俊','信息学院','男','010********') insert into Reader(rno,rname,department,sex,telephone) values('0004','刘建','建筑学院','男','010********')insert into Borrow(bno,rno,bdata,Back_date)values('0001','0002','2001-9-2','2001-10-1')insert into Borrow(bno,rno,bdata,Back_date)values('0002','0002','2001-9-12','2001-10-11')insert into Borrow(bno,rno,bdata,Back_date)values('0006','0002','2002-1-12','2002-2-1')insert into Borrow(bno,rno,bdata,Back_date)values('0003','0001','2001-7-10','2001-8-7')insert into Borrow(bno,rno,bdata,Back_date)values('0004','0001','2001-7-2','2001-7-22')insert into Borrow(bno,rno,bdata,Back_date)values('0005','0001','2001-9-15','2001-9-15')insert into Borrow(bno,rno,bdata,Back_date)values('0002','0003','2001-10-15','2001-11-1')insert into Borrow(bno,rno,bdata,Back_date)values('0006','0003','2002-2-10','2002-2-20')insert into Borrow(bno,rno,bdata,Back_date)values('0003','0004','2001-8-17','2001-8-29')insert into Borrow(bno,rno,bdata,Back_date)values('0004','0004','2001-7-25','2001-8-15')drop table book restrictdrop table borrowdrop table bookdrop table reader select *from Book select *from reader select *from borrow。