实验4 数据库完整性控制
实验四 数据库安全性与完整性控制
实验题目:数据库安全性与完整性控制目录一、实验目的 (1)二、实验内容 (1)三、实验要点及说明 (1)四、实现方法 (1)五、实验结果 (2)六、源程序清单 (4)七、思考及总结 (5)一、实验目的通过本次实验,提高以下几个方面的能力1. 创建新用户2. 通过GRANT语句对新用户进行授权3. 通过REVOKE语句完成权限的回收4. 实体完整性的实现5. 参照完整性实现二、实验内容1.完成教材中实例1-82.完成教材中相应于完整性的实例。
三、实验要点及说明1.一定要熟练掌握GRANT语句与REVOKE语句的使用2.一定要熟练掌握实体完整性与参照完整性控制3.要读懂出错的提示信息四、实现方法未将创建的用户删除,有创建同一个用户。
删除localhost方法五、实验结果创建用户成功登陆用户zhangsan 登陆用户zhangsan2 登陆用户lisi用户zhangsan和zhangsan2信息显示用户lisi信息显示分别给用户zhangsan和zhangsan2授权授权之后查看zhangsan中信息修改zhangsan2中数据六、源程序清单Create user 'zhangsan'@'%' identified by '1'; /*创建用户张三,密码为1*/ Create user 'zhangsan2'@'%' identified by password'*E6CC90B878B948C35E92B003C792C46C58C4AF40'; /*创建用户张三,密文定义密码为1*/Grant all on *.* to 'lisi'@'localhost' identified by '2';/*创建用户李四*/ mysql -u zhangsan -p /*登录用户张三*/show schemas; /*显示信息*/grant select<col1> on ch4.t to zhangsan;/*给用户张三授权*/ update ch4.t set col1=1;/*修改张三2中的信息*/七、思考及总结重复创建用户,对代码掌握不熟悉,混淆记忆。
数据库实验4 索引、数据完整性与安全性
实验四索引、数据完整性与安全性一、实验目的(1) 掌握利用SQL Server Management Studio和SQL语言建立、删除索引的方法;(2) 掌握利用SQL Server Management Studio和SQL语言实现数据完整性的方法;(3) 掌握在SQL Server Management Studio中实现数据安全性管理的方法。
二、实验原理1.索引在关系型数据库中,索引是一种可以加快数据检索的数据库结构。
SQL Server系统中主要有两种类型的索引,即聚集索引、非聚集索引。
(1)聚集索引聚集索引定义了数据在表中存储的物理顺序。
一个表只能定义一个聚集索引。
(2)非聚集索引非聚集索引并不存储表数据本身。
相反,非聚集索引只存储指向表数据的指针,该指针作为索引键的一部分,因此,在一个表中同时可以存在多个非聚集索引。
(3)利用SQL命令建立索引简化语法格式:CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]INDEX index_name ON {table|view}(column|ASC|DESC][,…n])其中:UNIQUE。
可选。
该选项用于通知SQL Server索引中列出的列的值是每行唯一的。
如果试图插入重复的行,则该选项会强制SQL Server返回一个错误信息。
CLUSTERED或NONCLUSTERED。
可选。
如果这两个选项都没有被明确列出,则默认将索引创建为NONCLUSTERED(非聚集索引)。
(4)通过SQL命令删除索引语法格式:DROP INDEX ‘table.index|view.index’[,…n]2.表主键和UNIQUE约束表主键通过表数据中一个列或者多个列组合的数据来唯一标识表中的每一行数据。
即表主键就是用来约束数据表中不能存在相同的两行数据。
在SQL Server系统中,定义表的主键可以在创建表的同时定义,也可以给已有的表添加主键。
实验四、数据库的完整性
实验四:数据库的完整性一、实验目的1.熟悉主键约束、外键约束、空值、惟一约束的使用方法;2.掌握默认值约束和默认对象的使用方法;3.掌握check约束及规则的使用方法;4.掌握触发器的概念、创建、修改和删除方法;5.了解inserted和deleted的作用及数据的引用;6.掌握各种触发器的工作过程。
二、实验环境SQL Server 企业版三、实验学时2学时四、实验内容及步骤(一)创建学生课程数据库和表Create database stu_triGouse stu_trigocreate table s(sno char(5)not null,sname char(10),ssex char(2),sage int,sdept char(10),ssum_credit tinyint)gocreate table c(cno char(5)not null,cname char(10),ccredit tinyint)gocreate table sc(sno char(5)not null,cno char(5)not null,grade tinyint)g o(二)主键约束--1.学生表--(1)主键的定义alter table s add constraint s_pk primary key(sno) go--(2)主键约束的违约检查和处理insert into s values('95001','李莹','女',21,'计科',0) insert into s values('95001','章张','男',22,'计科',0)--修改学号为,再次插入数据insert into s values('95002','章张','男',22,'计科',0)--(3)依次输入多个学生的记录insert into svalues('95003','陈华','女',22,'计科',0),('95004','吴华义','男',23,'计科',0),('95005','刘冠章','男',22,'计科',0),('95006','蒋婷','女',22,'网络',0),('95007','邱蔚六','男',21,'网络',0),('95008','王德柱','男',22,'网络',0),('95009','秦频','女',21,'网络',0),('95010','程少根','男',21,'网络',0)--2.课程表c--(1)主键的定义alter table c add constraint c_pk primary key(cno) --(2)主键的检查和处理(省)--(3)录入数据insert into cvalues('00001','计算机导论',2),('00002','高级语言',2),('00003','离算数学',3),('00004','数据结构',3),('00005','c#',2),('00006','面向对象',2),('00007','数据库原理',3),('00008','操作系统',3)--3.学生选课表--(1)主键的定义alter table sc add constraint sc_pk primary key(sno,cno)go--(2)主键约束的检查及处理insert into sc values('95001','00001',90)goinsert into sc values('95001','00001',86)go--(3)录入数据insert into scvalues('95001','00002',86),('95001','00003',92),('95001','00004',76),('95001','00005',86),('95002','00001',86),('95002','00002',80),('95002','00003',81),('95003','00001',88),('95003','00002',68),('95004','00001',96),('95005','00001',69)(三)参照完整性--1.定义学生选课表的学号为外键alter table sc add constraint sc_fk foreign key(sno)references s(sno) goalter table sc add constraint sc_fk_1foreign key(cno)references c(cno) go--2.参照完整性约束的检查--(1)向学生选课表中插入数据—学号外键的检查insert into sc values('95100','00001',90) go--(2)向学生选课表中插入数据—课程号外键的检查insert into sc values('95006','10000',90) go--(3)被参照表数据变化:删除学生表的某一个学生--1)删除学生选课表中的外键sc_fkalter table sc drop sc_fkgo--2)重新定义学生表的外键sc_fk及违约处理机制alter table sc add constraint sc_fk_sno foreign key(sno)references s(sno)on delete cascadeon update cascadego--3)查询学生选课表select*from sc--4) 删除学生表学号为95003的学生delete from s where sno='95003'go--5) 再次查询学生选课表select*from scgo--更新学生表中学号为的学生学号为-级联更新update s set sno=95105 where sno like'95005'go--查询学生选课表查看学生的学号是否改为select*from sc--(四) 用户定义完整性(省略非空约束)--1. 唯一性约束(学生姓名惟一)(1)约束的定义alter table s add constraint s_sname_unique unique(sname)(2)约束的检查和处理insert into s values('96001','李莹','女',26,'信管',0)go2. 检查约束(1)约束的定义alter table s add constraint s_c1check(sage>=12 and sage<=35)(2)约束的检查及处理insert into s values('96001','金林','男',9,'信管',0)go3. 默认约束--(1)约束的定义alter table s add constraint s_def1default'女'for ssex(2)约束的检查及处理insert into s(sno,sname,sdept,ssum_credit)values('96002','胡华林','信管',0)这时没有给性别赋值,但该学生的性别取了默认值“女”(五)触发器--1.insert触发器--(1)触发器的定义:--当向sc表中插入一个学生的成绩时,将s表中该学生的总学分加上添加的课程的学分。
实验4 安全性和完整性实验
实验4 安全性和完整性实验一、实验目的1.了解SQL SERVER数据库管理系统使用安全账户认证的方法,掌握SQL SERVER数据访问控制策略和技术;2.使用数据库用户和角色等限制用户对数据库的访问,并为不同的用户及角色进行权限分配和回收;3.掌握数据完整性的基础知识;4.学会使用约束来实施数据完整性。
二、实验内容利用之前实验中建立的STUDENT数据库及基本表S(学生表)、C(课程表)、SC(选课表),完成以下内容。
1、在企业管理器中,了解SQL SERVER数据库管理系统使用安全账户认证的方法,可以通过在企业管理器中设置安全模式,自行练习;2、创建登录(1)利用企业管理器创建登录创建4个登录U1、U2、U3、U4,创建U1和U2时均选中数据库访问为STUDENT,使他们成为STUDENT数据库的用户,创建U3和U4时不选中任何数据库;(2)使用T-SQL语句创建登录用户语法为:sp_addlogin 登录名[,登录密码[,默认数据库]] 注意:未指定默认数据库时,默认数据库是master;3、创建数据库用户(1)利用企业管理器创建数据库用户U3、U4(2)使用T-SQL语句创建数据库用户U3、U4语法为:sp_adduser 登录用户名4、创建数据库角色(1)使用企业管理器创建数据库角色 R1(2)使用T-SQL语句创建数据库角色R1语法为:sp_addrole 数据库角色名5、权限管理(1)利用企业管理器管理权限(2)使用T-SQL语句管理权限语法为:GRANT ALL|对象权限列表ON 表名|视图名|存储过程名TOPUBLIC|用户列表[WITH GRANT OPTION](3)完成下列练习●把对表S的INSERT权力授予用户U1和U2,并允许U1再将此权限授予其他用户;●用户U2对S,C,SC三个表有SELECT和INSERT权力;●用户U3对SC表有DELETE权力,对GRADE字段具有UPDATE权力;●把对用户U2授予的所有权力收回;●对用户U3增加SC表的SELECT权力。
实验4 数据库完整性管理
北华航天工业学院《数据库原理与应用》实验报告报告题目:数据库完整性管理作者所在系部:计算机科学与工程系作者所在专业:网络工程作者学号:20114052233作者姓名:张旭刚指导教师姓名:李建义完成时间:2013 5.7数据库完整性管理一、实验目的1、理解数据库完整性约束机制;2、掌握创建、修改和删除完整性约束的方法;3、掌握创建和删除触发器的方法。
二、实验内容(一)附加上次实验所创建的数据库“db_Library”,并回顾该数据库的数据表信息。
(二)约束的创建和管理1、使用SQL语句创建图书表(tb_booknew),要求为各字段选择合适的数据类型及名称,其中“图书编号”字段为主码;“类别编号”字段为外码,删除图书类别信息表中记录时级联删除图书信息表中对应的记录;书名不允许空值;库存数限制的25到100之间。
2、使用SQL语句创建借阅表(tb_borrownew),要求为各字段选择合适的数据类型及名称,其中“图书编号”和“读者编号”的组合值为主码。
3、使用SQL语句为图书表(tb_booknew)中书名字段增加唯一性约束。
4、使用SQL语句将第1题的库存数限制修改为30到80之间。
5、使用SQL语句删除第3题增加的约束。
(三)触发器的创建和管理1、使用SQL语句创建一个名为“借阅信息插入修改_TRIG”的触发器,要求在“借阅信息表”中插入或修改记录时触发该触发器,检查“归还日期”字段修改是否超过3个月,如果超过给出相应提示,不超过给出相应提示(“插入记录成功”或“修改记录成功”)。
对“借阅信息表”进行插入或修改操作,验证触发器的执行情况。
2、使用SQL语句创建一个插入、更新类型的触发器“图书信息_TRIG”,当“图书信息表”中插入或修改记录时,触发该触发器,检查库存册数是否大于0,若不大于0,则撤销插入和修改操作。
在“借阅信息表”中插入或修改一条记录,给定的库存册数值为-1,验证触发器的执行情况3、使用SQL语言删除“借阅信息插入修改_TRIG”触发器。
数据库的完整性和安全性实验报告
信息工程学院实验报告课程名称:《数据库原理》实验项目名称:数据库的完整性和安全性一、实 验 目 的:(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 Server 2000进行完整性和安全性控制的基本操作和命令。
并熟悉触发器的使用。
二.实验属性:设计性。
三.实验仪器设备及器材:装有SQL Server 2000的电脑。
四.实验要求1. 预习SQL Server 2000中触发器的概念和使用方法,以及利用create trigger语句定义触发器的方法。
2. 预习SQL Server 2000中安全性架构,以及创建安全性账户和数据库角色等的方法。
2. 实验前仔细阅读实验指导书,理解实验要求。
3. 实验中要求完成如下工作(其中涉及的表是实验一中建立的表):五.实验内容1.触发器的使用1.1创建一个insert触发器,当在Student表中插入一条新记录时,给出‘你已经插入了一条新记录!!!’的提示信息。
1.2 创建一个insert触发器,当在SC表中插入一条新记录时,Sno和Cno必须是student和Course中存在的学号和课程号,且Grade应该在0----100之间。
1.3 创建一个after触发器,在Student表中删除某学生的记录时,删除其相应的选课记录。
1.4 创建一个instead of 触发器,当在Course表中删除记录时,不允许删除Course 表中的数据。
2. 数据库安全性2.1 在企业管理器中创建数据库用户U1、U2、U3和数据库角色R1、R2、R3,并对其操作权限进行设置。
2.2 使用SQL语言对数据库用户和角色的权限的授予。
(1)把查询Student表的权限授给用户U1:(2)把对Student表和Course表的全部操作权限授予用户U2和U3(3)把对Student表的Insert操作权限授予用户U2,并允许将此权限再授予其它用户。
2.3 使用SQL语言进行数据库对用户和角色权限的收回。
2.3.1把用户U2对Student表的Insert的权限收回。
2.3.2 收回所有用户对表student的查询权限2.3.3 通过角色来实现将一组权限授予一个用户。
实验四 数据完整性控制
本科实验报告课程名称:数据库系统原理实验项目:数据完整性控制实验地点:4606专业班级:学号:学生姓名:指导教师:2012 年10 月30 日一目的与要求(1)了解 SQL Serer 数据库系统中数据完整性控制的基本方法(2)熟练掌握常用 CREATE 或 ALTER 在创建或修改表时设置约束(3)了解触发器的机制和使用(4)验证数据库系统数据完整性控制二实验设备与环境使用 SQL Server 数据库管理系统提供的 SSMS 和查询编辑器。
三实验内容、实验记录及实验结果与分析结合 ST 数据库中的各个表,设置相关的约束,要求包括主键约束、外键约束、唯一约束、检查约束、非空约束、CONSTRAINT 子句等,掌握各约束的定义方法。
设置一个触发器,实现学生选课总学分的完整性控制,了解触发器的工作机制。
设计一些示例数据,验证完整性检查机制。
实验步骤:1 使用 SQL 语句设置约束使用 CREATE 或 ALTER 语句完成如下的操作,包括:设置各表的主键约束设置相关表的外键设置相关属性的非空约束、默认值约束、唯一约束设置相关属性的 CHECK 约束完整性约束命名子句2 使用触发器创建一个触发器,实现如下的完整性约束:当向 SC 表中插入一行数据时,自动将学分累加到总学分中。
记录修改学分的操作。
3 检查约束和触发器分别向相关表插入若干条记录,检查你设置的完整性约束是否有效:1) 插入若干条包含正确数据的记录,检查插入情况2) 分别针对设置的各个约束,插入违反约束的数据,检查操作能否进行3) 向 SC 表插入若干行数据,检查触发器能否实现其数据一致性功能。
建立一个学生选课数据库,熟悉约束及触发器的使用方法。
1 声明完整性约束创建学生选课数据库 TEST,包括三个基本表,其中 Student 表保存学生基本信息,Course 表保存课程信息,SC 表保存学生选课信息,其结构如下表:表 3-1 Student 表结构1)创建基本表及约束(1)创建 Student 表CREATE TABLE Student(Sno CHAR(8) PRIMARY KEY,Sname CHAR(8) NOT NULL,Ssex CHAR(2) CHECK( Ssex in ('男','女')),Sage SMALLINT,Sdept CHAR(20),Sclass CHAR(4) NOT NULL,Stotal smallint DEFAULT 0);(2)创建 Course 表CREATE TABLE Course(Cno CHAR(4) CONSTRAINT PK_Course PRIMARY KEY,Cname CHAR(40),Cpno CHAR(4) ,Ccredit SMALLINT);(3)创建 SC 表CREATE TABLE SC(Sno CHAR(8) FOREIGN KEY (Sno) REFERENCES Student(Sno),Cno CHAR(4),Grade SMALLINT CONSTRAINT SC_CHECK CHECK(Grade >0 ANDGrade<100),PRIMARY KEY (Sno,Cno),CONSTRAINT FK_SC FOREIGN KEY (Cno) REFERENCES Course(Cno));(4)检查表是否创建成功。
实验四数据库完整性实验报告
实验四数据库完整性实验报告一实验目的1. 熟悉通过SQL对数据进行完整性控制;2. 针对具体应用要求,设计相应的完整性约束。
二实验工具SQL Server 2005利用SQL Server 2005 SSMS及其SQL查询编辑器。
三实验内容和要求使用SQL对数据进行完整性控制(3类完整性、CHECK短语、CONSTRAIN 子句、触发器)。
用实验证实,当操作违反了完整性约束条件时,系统是如何处理的。
根据以下要求认真填写实验报告,记录所有的实验用例。
具体操作内容:创建以下两个关系模式,并分别插入相应的数据。
职工(职工号,姓名,年龄,职务,工资,部门号)其中职工号为主码;部门(部门号,名称,经理名,地址,电话号码),其中部门号为主码;(1)使用SQL语言定义这两个关系模式,并完成以下完整性约束条件的定义;(a)定义每个模式的主码;(b)定义参照完整性;(c)定义职工的年龄不能小于18岁,并且不能超过60岁;(d)职工的姓名不能为空;(e)职工的工资不能为空,且不能小于800;(f)部门名称不能为空且不能重复,定义约束名为UK_dName;(2)使用SQL语言分别向两个表中插入7行记录,验证上面的各种约束条件;(3)将职工的年龄改为不能小于16岁,并且不能大于65岁;(4)定义一个表tbl_Emp_Log(eNO, eSalary, Username,ModiDate);在职工表上定义修改和插入数据的触发器,将插入的职工号和工资数据填入到Emp_log表中,并记录操作的用户和插入时间;如果修改了职工的工资,也把职工号和修改后的工资数据填入到Emp_log表中,并记录操作的用户和插入时间。
使用SQL语句向职工表中插入数据和修改工资,验证触发器的效果。
四实验报告4.1 实验环境:Windows XPMicrosoft SQL server Management Studio 20054.2 实验内容与完成情况:--新建数据库create database workgouse work--创建以下两个关系模式,并分别插入相应的数据。
数据库完整性实验报告
数据库完整性实验报告第一篇:数据库完整性实验报告实验报告一、实验题目数据库完整性二、实验要求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.SQL Server中有关用户、角色及操作权限的管理方法.掌握2.学会创建和使用规则、缺省。
3.二、实验内容1 数据库的安全性实验,通过SSMS设置SQL Server的安全认证模式.实现对SQL Server的用户和角色管理,设置和管理数据操作权限.2数据库的完整性实验。
使用Transact-SQL设计规则、缺省、约束和触发器。
三、实验要求.数据的完整性实⑴用SQL语句创建一学生成绩数据库(XSCJ),包括学生(XSQK)、课程(KC)和成绩表(XS_KC):学生情况表(XSQK)列名数据类型长度是否允许为空值N 6 Char 学号N 8 Char 姓名N 性别 Bit1smalldatetime 出生日期 2Char 10 专业名Char 10 所在系Y11char联系电话create database xscjuse xscjcreate table xsqk(学号char(6)not null,姓名char(8)not null,性别bit not null,出生日期smalldatetime,专业名char(10),所在系char( 10),null))11(char联系电话徐龙琴、刘双印设计制作实验四数据完整性安全性课程表(KC)列名数据类型长度是否允许为空值N Char 课程号 3N Char 课程名 2010 Char 教师开课学期 1 TinyintTinyint 1 学时NTinyint学分 1create table kc(课程号char(3)not null,课程cha2nonull,教师char(10),开课学期tinyint,学时tinyint,学分tinyint not null)成绩表(XS_KC)数据类型长度是否允许为空值列名Char N 学号 6Char 课程号N 3Smallint成绩2create table xs_kc(学号char(6)not null, 课程号char(3)not null,)smallint成绩实验四数据完整性安全性徐龙琴、刘双印设计制作⑵数据的实体完整性实验①用SSMS分别将学生情况表(XSQK)的学号字段、课程表(KC)的课程号字段设置为主健②用T-SQL语句将成绩表(XS_KC)的学号、课程号字段设置为主健alter table xs_kcadd primary key(学号,课程号)实验四数据完整性安全性徐龙琴、刘双印设计制作⑶数据的参照完整性实验①用SSMS为成绩表(XS_KC)创建外键FK_ XSQK_ID,外键FK_ XSQK_ID参照学生情况表(XSQK)表的学号②用T-SQL语句成绩表(XS_KC)创建外键FK_ KC_ID,外键FK_ KC _ID参照课程表(KC)表的课程号alter table xs_kcadd constraint FK_KC_ID foreign key (课程号)references kc(课)程号.实验四数据完整性安全性徐龙琴、刘双印设计制作⑷数据的用户定义完整性实验①用T-SQL语句为学生情况表(XSQK)的姓名列创建一个唯一约束alter table xsqkadd constraint ch_xsqk_unique unique(姓名))的性别列创建一个检查约束,使得性别的值为男或女XSQK为学生情况表(SSMS②用.实验四数据完整性安全性徐龙琴、刘双印设计制作③用T-SQL语句为成绩表(XS_KC)的成绩列创建一个检查约束,使得成绩的值在(0~100)之间alter table xs_kcadd constraint ch_grade check(成绩between 0 and 100)60)的学时列创建一个缺省约束,缺省值为KC语句课程表(SSMS④用.实验四数据完整性安全性徐龙琴、刘双印设计制作⑤用T-SQL语句课程表(KC)的学分列创建一个缺省约束,缺省值为2alter table kcadd constraint default_kc_credit default 2 for学分的格式,并分别将其导入数据库的各个表中:Excel2.将如下数据分别转换成文本数据或.徐龙琴、刘双印设计制作数据完整性安全性实验四):学生情况表(XSQK学号姓名性别出生日期专业所在系联系电话88297147 020101 杨颖 1980-7-20 0 计算机应用计算机88297147 计算机计算机应用 1981-1-15 020102 方露露088297151 1980-2-20 俞奇军 1 信息管理020103 计算机 88297151 胡国强1 1980-11-7 020104 计算机信息管理88297152 020105 1980-7-29 薛冰1 水利工程水利系 88297161 电子商务经济系1981-3-10 020201 0 秦盈飞88297062 电子商务经济系 1980-9-25 0 020202 董含静88297171 电子商务经济系1980-8-7 1 020203 陈伟 88297171房建1980-7-20020204陈新江1水利系实验四数据完整性安全性徐龙琴、刘双印设计制作实验四数据完整性安全性徐龙琴、刘双印设计制作:)KC课程表(.徐龙琴、刘双印设计制作实验四数据完整性安全性课程号课程名教师开课学期学时学分3 计算机原理2 45 101 陈红3 3 102 王颐计算方法 454 60 2 103 操作系统徐格5 3 数据库原理及应用应对刚104 753 网络基础吴江江4 105 456 高等数学孙中文 1 90 1066 英语陈刚107 1 90 5VB赵红韦3108程序设计 70实验四数据完整性安全性徐龙琴、刘双印设计制作实验四数据完整性安全性徐龙琴、刘双印设计制作:)XS_KC成绩表(.徐龙琴、刘双印设计制作数据完整性安全性实验四学号课程号成绩85 020101 10187 020101 102 88 107 020101 58 101 02010263 020102 10276 020104 10755 020202 103 80 108 020202 57 103 02020371020204103实验四数据完整性安全性徐龙琴、刘双印设计制作3. 理解默认值的概念和作用①用语句创建名为Xi_default,值为“计算机系”的默认值create default Xi_default as'计算机系'实验四数据完整性安全性徐龙琴、刘双印设计制作②将默认值Xi_default绑定到学生表中的所在系的属性列上sp_bindefault Xi_default,'xsqk.所在系'③解除学生表所在系的属性列上的默认值sp_unbindefault'xsqk.所在系'④删除默认值Xi_defaultdrop default Xi_default注:创建默认值的格式: create default 默认值名 as ‘默认值'默认值绑定的格式:sp_bindefault 默认值名, <'表名.列名'︱自定义数据类型名称>解除默认值绑定格式:sp_unbindefault <'表名.列名'︱自定义数据类型名称>删除默认值格式:Drop default 默认值名4.理解规则的概念和作用①用语句创建规则“rule_kkxq”,用以限制插入该规则所绑定的列中的值只能取1、2、3、4、5、6create rule rule_kkxq as@ss in(1,2,3,4,5,6)②将“rule_ kkxq”规则绑定到课程表的开课学期属性上,并执行以下语句,看看能否正常执行,为什么:Insert into 课程表Values(109,'C语言','李方',8,64,4)sp_bindrule rule_kkxq,'kc.开课学期'不能正常执行因为数值8不在规则rule_kkxq所绑定的数据范围内③若不解除规则,能否将规则rule_ kkxq直接删除?不能,需先解除规则才能删除规则rule_ kkxq :sp_unbindrule'kc.开课学期'drop rule rule_kkxq注:创建规则的格式: create rule 规则名 as @列名约束条件规则绑定的格式: sp_bindrule 规则名, <'表名.列名'︱自定义数据类型名称>解除规则绑定格式:sp_unbindrule <'表名.列名'︱自定义数据类型名称>删除规则格式:Drop rule 规则名5.数据的安全性实验:(1)设置身份验证模式①写出查看当前SQL Server身份验证模式的过程,即查看当前SQL Server系统到底是采用Windows身份验证还是混合身份验证模式。
数据库安全性及完整性实验报告
.
.
实验报告
课程名称:数据库系统概论
学院:工程学院
专业:
年级:班级:
姓名:学号:
指导教师:
年月日
教务处制
以U1的身份进入查询分析器,进行任意查询。
SELECT* FROM"S-C"."STUDENT"
SELECT* FROM"S-C"."STUDENT"
例4.2 把查询student表和course表的权全部操作限授给用户u2和u3。
SELECT* FROM"S-C"."STUDENT","S-C"."COURSE"
例4.3把对表SC的权限授给所有用户.
以U3的身份进入查询分析器,进行任意查询。
例4.12角色的权限修改。
以system的身份进入查询分析器,增加角色R1对Student表的DELETE权限。
GRANT DELETE
ON TABLE "S-C"."STUDENT"
TO R1;
将这个角色授予U7,使他们具有角色R1所包含的全部权限。
数据库原理实验报告-数据库的完整性
实验题目四、数据库的完整性一、实验目的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表的级联删除。
数据库数据库的完整性控制实验报告
实验报告课程名称:数据库原理与应用上机实验名称:数据库的完整性控制专业班级:计算机科学与技术1103 指导教师:卫凡学生姓名:贾梦洁学期:2013-2014学年第一学期实验报告课程名称数据库原理与应用实验名称数据库的完整性控制姓名贾梦洁学号 201107010330专业班级计1103实验日期2013年12月19日成绩指导教师卫凡一、实验目的1. 加深对数据库完整性控制作用的认识和各种完整性约束概念的理解。
2. 熟练掌握数据库完整性约束方法。
二、实验环境硬件环境:PC机软件环境:操作系统为Microsoft Windows 2000或以上版本。
数据库管理系统为Microsoft SQL Server 2000标准版或企业版。
三、实验容1. 熟悉利用企业管理器为列创建DEFAULT约束、为列创建CHECK约束、为列创建UNIQUE 约束、为列创建不允许为空约束、创建PRIMARY KEY约束、创建FOREIGN KEY约束。
2. 熟悉利用企业管理器将各种完整性约束删除。
3. 熟悉利用SQL为列创建DEFAULT约束、为列创建CHECK约束、为列创建UNIQUE约束、为列创建是否为空、创建PRIMARY KEY约束、创建FOREIGN KEY约束。
4. 熟悉利用SQL将各种完整性约束删除。
四、实验步骤1.在实验1中已经对学生_课程数据库中建立了学生、课程和选课3个表,其表结构为:学生S(学号,,性别,年龄,所在专业名称)课程C(课程号,课程名,任课教师名,开设的学期)选课SC(学号,课程号,成绩)利用企业管理器增加如下的完整性约束:(1)限定学生“性别”列的值只能是“男”或“女”的CHECK约束;(2)为“性别”列上创建一个默认约束,默认值为“男”;(3)为“”列上创建一个惟一性约束(即UNIQUE约束);(4)将“年龄”列设置为允许为空字段。
2.利用企业管理器建立学生、课程和选课3个表的表级约束(包括主键约束和外键约束)。
数据库原理数据的完整性实验报告.
***大学计算机科学与信息学院软件工程系上机实验报告《数据库原理》实验报告题目实验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 选项说明当一个复制过程在修改一个触发器表时,与该表相关联的触发器不能被执行。
数据库实验4-数据完整性控制
5.触发器 触发器可以看成是一类特殊的存储过程,在满足某个特定条件时自
动触发执行,是提高数据库服务器性能的有力工具。 触发器分为三类,更新触发器、插入触发器和删除触发器。 能够定义触发器的用户有表的所有者、系统管理员、拥有创建触发
器权限且拥有对操作对象相应操作权限的用户。 1) 定义表TAB,并在其上定义触发器TR1,在对TAB的插入和更新前
SAGE NUMERIC(3) CONSTRAINT C4 CHECK(SAGE<30),
CONSTRAINT STUDENTKEY PRIMARY KEY(SNO) );
2) 修改表student中的完整性约束,去掉对性别的限制,并将对年龄 的限制由小于30改为小于40。
ALTER TABLE STUDENT DROP CONSTRAINT C3; ALTER TABLE STUDENT DROP CONSTRAINT C4; ALTER TABLE STUDENT ADD CONSTRAINT C4 CHECK(SAGE<40);
的值只允许取“男”或“女”;定义表sc,属性GRADE的值在0~100之 间 Student表和sc表的其他信息参加上面的例子 4) 用户定义的元组上约束条件 CHECK短语不仅能够定义属性上的约束条件,而且还能允许用户 定义元组级的约束条件。 定义表student,要求当学生性别为男时,其名字不能以Ms.打头。其 他信息如之前的例子。 4.CONSTRAINT完整性约束命名子句 在定义表时利用约束命名子句对完整性约束条件命名,能够灵活地 增加或删除一个完整性约束条件。 1) 定义表student,要求学号在90000~99999之间,姓名不能取空值, 年龄小于30,性别只能是“男”或“女”。要求全部用约束命名子句 实现,主码约束也要用约束命名子句实现,列信息见之前例子 2) 修改表student中的完整性约束,去掉对性别的限制,并将对年龄 的限制由小于30改为小于40。
实验4数据库的安全性、完整性(一)2024
实验4数据库的安全性、完整性(一)引言:数据库的安全性和完整性是数据库管理系统中非常重要的两个方面。
安全性指的是确保数据库的数据不会被非授权的人员访问和篡改,而完整性则指的是数据库中的数据应该保持一致性和准确性。
本文将从数据库的访问控制、身份验证、加密、备份与恢复以及错误处理等五个方面详细介绍数据库的安全性和完整性。
正文:1. 数据库的访问控制- 实施用户和角色管理,限制不同用户对数据库资源的访问权限- 设置访问控制策略,对数据库中的敏感数据进行权限限制- 防止恶意用户通过攻击手段绕过访问控制机制2. 身份验证- 强制用户使用强密码,并定期更换密码以提高安全性- 使用双因素身份验证,如组合使用密码和指纹- 实施账号锁定机制,限制用户连续登录失败的次数3. 数据库的加密- 对敏感数据进行加密,并存储加密后的数据,以防止数据泄露- 使用传输层安全协议(TLS/SSL)来加密数据库与应用程序之间的通信- 使用列级加密技术来进一步保护数据库中的敏感数据4. 数据库的备份与恢复- 定期备份数据库,以防止数据丢失- 将备份数据存储在安全的地方,防止被未经授权的人员访问- 定期测试备份数据的恢复能力,确保备份数据的完整性和可用性5. 数据库的错误处理- 实施日志记录机制,记录数据库操作的详细信息,以便追踪和审计- 对异常情况进行及时响应和处理,防止安全漏洞的扩大- 与安全专家进行合作,定期进行安全漏洞扫描和修复工作总结:数据库的安全性和完整性是保障数据库管理系统正常运行和数据安全的重要方面。
通过实施访问控制、身份验证、加密、备份与恢复以及错误处理等措施,可以有效地保护数据库的安全性和完整性,防止非授权的访问和数据篡改,保障数据的一致性和准确性。
因此,合理的数据库安全措施是保障数据库运行的重要保证。
实验四数据库 数据控制(安全性和完整性)
数据库原理及应用实验报告实验四数据控制(安全性和完整性)实验报告实验类型__综合设计__实验室_软件实验室一__数据控制(安全性和完整性)1.实验项目的目的和任务:理解SQL Server的用户与权限管理机制,通过企业管理器创建用户,并给定的用户分配权限,并掌握数据库完整性概念,实现实体、参照和自定义约束。
2.程序代码(部分)sp_addlogin 'pei' ,'147' //服务器级别的建立登录名sp_droplogin 'pei' //.删除sp_grantdbaccess 'pei', 'pp' //数据库级别的安全性sp_addrole 'peipp' //SQL Server服务器角色sp_addrolemember 'peipp','pp'grant select on dbo.spt_values to pp with grant option//数据库对象级别的安全性用户权限继承角色的权限grant create table to pprevoke select on dbo.spt_values to pp cascadesp_revokedbaccess 'pp' //删除3运行结果如图所示4实验总结通过具体的上机实践操作,理解SQL Server的用户与权限管理机制。
(1)数据库的安全性是指保护数据库以防止非法使用所造成的数据泄露、更改或破坏。
(2)用户标识和鉴定、用户存取权限控制、定义视图、数据加密和审计等安全措施。
(3)第一层安全性是服务器级别的安全性,这一级别的安全性建立在控制服务器登录账号和密码的基础上,即必须具有正确的登录账号和密码才能连接到SQL SERVER服务器。
第二层安全性是数据库级别的安全性,用户提供正确的服务器登录账号和密码通过第一层的sql server服务器的安全性检查之后,将接受第二层的安全性检查,即是否具有访问某个数据库的权利。
重庆大学数据完整性控制第四次实验讲述
四、实验过程原始记录(对每个实验内容给出一两个代表性图片)实验六、数据完整性控制习题1.对Library中的表实现实体完整性并验证。
①给各个表设置主键对Book表填加主键,输入T-SQL语句如下:use Libraryalter table Bookadd constraint pk_bno primary key(Bno)执行成功,结果如下:对Reader表填加主键,输入T-SQL语句如下:use Libraryalter table Readeradd constraint PK_Reader primary key(Rno)执行成功,结果如下:对Borrow表填加主键,输入T-SQL语句如下:use libraryalter table Borrowadd constraint ab_Rno primary key(Rno,Bno)②给各个表创建UNIQUE约束在Book表中对书名创建UNIQUE约束,输入T-SQL语句如下:use Libraryalter table Bookadd constraint Book_uni unique(Btitle)执行成功,结果如下:在Reader表中对读者名创建UNIQUE约束,输入T-SQL语句如下:use Libraryalter table Readeradd constraint Reader_uni unique(Rname)执行成功,结果如下:习题2.实现各个表之间的参照完整性并验证。
为Borrow表添加外键,输入T-SQL语句如下:use Libraryalter table Borrowadd constraint fk_borrow_bookforeign key(bno)references Book(pk_bno)alter table Borrowadd constraint fk_borrow_readerforeign key(rno)references Reader(Rno)执行成功,验证结果如下:习题3.实现下列约束并验证。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注意:为了节约大家的宝贵时间,因此给出题目时,会在一定程度上给出相关的语句,大家只需要补充完善相关的SQL语句即可。
实验四数据库完整性控制
一、实验目的
1.掌握使用T-SQL定义实体完整性的方法。
2. 了解SQL Server违反实体完整性处理措施。
3. 理解参照完整性的含义。
4. 熟练掌握建立外键的方法。
5. 掌握利用FOREIGN KEY…REFERENCES子句以及各种约束保证参照完整性。
6.掌握利用短语NOT NULL、UNIQUE、CHECK保证域完整性。
7. 熟练掌握约束、规则实施用户自定义完整性
8.掌握创建触发器的方法,掌握利用触发器规范插入、更新、删除操作的方法。
二、实验内容
1、新建数据库School并创建学生表Student,包含以下属性:Sno (CHAR(5))、Sname (CHAR(8))、Ssex (CHAR(1))、Sage (INT)、Sdept (CHAR(20)),
并插入数据:( '10000','王敏','F',23,'CS'),('10000','王浩','M',25,'EE'),
创建数据库、表以及插入数据的相关语句为:
CREATE DATABASE School ;
USE School
CREATE TABLE Student(
Sno CHAR(5),
Sname CHAR(8),
Ssex CHAR(1),
Sage INT,
Sdept CHAR(20));
INSERT INTO Student values ( '10000','王敏','F',23,'CS');
INSERT INTO Student values ('10000','王浩','M',25,'EE');
执行完上述语句后查看数据库中student表中的数据。
然后再添加约束:令Sno为主键,查看结果并分析原因。
验证当与现有的数据环境不等时,无法建立实体完整性。
最后,请大家删除该student表,直接在定义表时给出实体完整性约束,要求给出把主键定义在表级和列级两种方法。
定义好表结构后,再执行如下两条插入语句,INSERT INTO Student values ( '10000','王敏','F',23,'CS');
INSERT INTO Student values ('10000','王浩','M',25,'EE');
列级:
USE School
CREATE TABLE Student(
Sno CHAR(5) primary key,
Sname CHAR(8),
Ssex CHAR(1),
Sage INT,
Sdept CHAR(20))
表级:
USE School
CREATE TABLE Student(
Sno CHAR(5),
Sname CHAR(8),
Ssex CHAR(1),
Sage INT,
Sdept CHAR(20)
primary key (Sno))
分析违反实体完整性时,系统给出了何种处理。
并将王浩的学号改为10001重新插入。
请参照实验教材P52-55实验3.1。
2、验证多重级联删除。
在数据库School中新建StudentCard表,包含以下属性:CardID (char(14))、Sno(char (5))、RemainedMoney (decimal (10,2)),令CardID为其主键,令Sno为参照Student表的外键,级联删除,并插入数据;新建ICBCCard表,包含以下属性:BankID (char(20))、CardID (char (14))、RestoredMoney (decimal (10,2)),令BankID为主键,令CardID 为参照StudentCard表的外键,级联删除,并插入数据。
本题大家可以在如下语句上进行完善:
CREATE TABLE StudentCard(
CardID char(14),
Sno char (5),
RemainedMoney decimal (10,2)
);
INSERT INTO StudentCard V ALUES ( '05212567', '10001',120.00);
INSERT INTO StudentCard V ALUES ( '05212302', '10000',130.50);
CREATE TABLE ICBCCard(
BankID char(20),
CardID char (14),
RestoredMoney decimal (10,2),
);
INSERT INTO ICBCCard V ALUES ( '9558844022312','05212302',125000.3);
INSERT INTO ICBCCard V ALUES ( '9558844023645','05212567',150000.4);
注意:请大家在建立外键时,StudentCard表的外键建立的列级,ICBCCard表建立在表级。
再执行以下语句:
INSERT INTO StudentCard V ALUES ( '05212568', '10002',120.00);
观察会发生什么?为什么?
3.通过删除Student表中的一条记录。
Delete From Student where Sno=’10000’
然后再查询StudentCard、ICBCCard表中的数据,观察发生了什么?
第2和3题请参照实验教材P55-61实验3.2。
4. 在数据库School中新建Director表,包含以下属性:Dno (CHAR(5))、Dname (CHAR(8))、Dsex (CHAR(1))、Dage (INT)、Ddept (CHAR(20)),并自定义3个约束U1、U2和U3,其中U1规定Dno字段不允许取空,U2规定Dage属性的值必须<=55,U3规定Ddept 属性的值唯一。
创建表的语句为:
CREATE TABLE Director(
Dno CHAR(5),
Dname CHAR(8) ,
Dsex CHAR(1),
Dage INT,
Ddept CHAR(20));
本题在上述语句上添加必要的约束然后运行即可。
注意:CONSTRAINT U3(约束名)是为了给出约束的名称,从而方便对该约束进行管理,否则是可以省略的。
5. Director表创建成功后,向其中插入三条数据,请逐一执行如下三条语句:
INSERT INTO Director values ('90000','赵磊','M',45,'艺术系');
INSERT INTO Director values ('90001','韩丹','F',60,'中文系');
INSERT INTO Director values ('90001','韩丹','F',50,'艺术系');
观察,三条语句执行时,可以正常插入吗?如果不能正常插入,为什么?
6. 去除U1约束。
7.创建规则rule_sex,规定插入或更新的值只能是M或F,并绑定到Director的Dsex 字段。
完成后在对象资源管理器中查看School数据库规则设置。
8.演示违反规则rule_sex的插入操作。
执行语句:
INSERT INTO Director values ('90002','蒋坤','1',34,'管理系');
执行结果是什么?为什么?
注意:第4-8题请参照实验教材P61-64实验3.3。
9、完成实验3.4 触发器设计
建立该触发器之前,先创建teacher表,创建teacher表的语句为:
CREATE TABLE Teacher
(
Eno numeric(4) primary key,
Ename char(10),
Job char(8),
Sal numeric(7,2),
Deduct numeric(7,2),
Deptno numeric(2));
10.建立一个在teacher表上的触发器T1,当插入或更新表中数据时,保证操作记录的Sal值大于0,且不得低于2100,如果低于2100,自动改为2100。
触发器的创建请参照实验教材P64-66实验3.4以及上课时所讲的实例。
11.建立一个在student表建立触发器T2,要求当更新一个记录时,表中记录的Sage值要比老记录的Sage值大,因为一般年龄只能升不能降。