数据库实验(实验四 实体完整性约束)实验报告 答案
- 格式:docx
- 大小:149.08 KB
- 文档页数:4
实验报告课程名称数据库系统原理专业班级姓名学号电气与信息学院和谐勤奋求是创新实验教学考核和成绩评定办法1.课内实验考核成绩,严格按照该课程教学大纲中明确规定的比重执行。
实验成绩不合格者,不能参加课程考试,待补做合格后方能参加考试。
2.单独设立的实验课考核按百分制评分,考核内容应包括基本理论、实验原理和实验。
3.实验考核内容包括:1)实验预习;2)实验过程(包括实验操作、实验记录和实验态度、表现);3)实验报告;权重分别为0.2 、0.4 、0.4;原则上根据上述三个方面进行综合评定。
学生未取得1)和2)项成绩时,第3)项成绩无效。
4.实验指导教师应严格按照考核内容分项给出评定成绩,并及时批改实验报告,给出综合成绩,反馈实验中出现的问题。
实验成绩在教师手册中有记载。
实验报告主要内容一.实验目的二.实验仪器及设备三.实验原理四.实验步骤五.实验记录及原始记录六.数据处理及结论七.实验体会(可选项)注:1. 为了节省纸张,保护环境,便于保管实验报告,统一采用A4纸,实验报告建议双面打印(正文采用宋体五号字)或手写,右侧装订。
2. 实验类别指验证、演示、综合、设计、创新(研究)、操作六种类型实验。
3. 验证性实验:是指为了使学生巩固课程基本理论知识而开设的强调演示和证明,注重实验结果(事实、概念或理论)的实验。
4. 综合性实验:是指实验内容涉及本课程的综合知识或本课程相关的课程知识的实验。
5. 设计性实验:是指给定实验目的、要求和实验条件,由学生自行设计实验方案并加以实现的实验。
实验题目 数据定义、操纵实验室 电信机房 实验时间2011 年 4 月 日实验类别 验证同组人数 1成 绩指导教师签字:一. 实验目的:掌握数据库、表、索引的创建、修改、删除,以及单表查询。
二. 实验内容:1.设有一数据库GradeManager(成绩管理),包括四个表:学生表(Student ),课程表(Course )、班级表(Class )以及成绩表(Grade )。
实验4 数据库约束实验实验学时:2实验要求:必做实验目的:熟练掌握数据库约束的三个完整性规则:实体完整性约束、参照完整性约束、用户定义的完整性约束。
实验内容:1.实体完整性约束实体完整性规则(Entity Integrity Rule)是指关系的主属性不能取空值,即主键和候选键在关系中所对应的属性都不能取空值。
MySQL中实体完整性就是通过主键约束和候选键约束来实现的。
(1)定义主键约束在表中某个字段定义后加上关键字PRIMARY KEY即可。
Navicat操作:在主键属性的最后一列,添加“主键”。
命令行操作:添加表格的时候,属性这一栏之后加primary key.如:studentNo char(10) PRIMARY KEY。
(2)完整性约束的命名与数据库中的表一样,可以对完整性约束进行添加、删除和修改等操作。
首先需要在定义约束时对其进行命名,命名完整性约束的方法是,在各种完整性约束的定义说明之前加关键字CONSTRAINT和该约束的名字,语法格式如下:CONSTRAINT<symbol>{PRIMARY KEY (主键字段列表)|UNIQUE (候选键字段列表)| FOREIGN KEY (外键字段列表) REFERENCES tb_被参照关系(主键字段列表)|CHECK(约束条件表达式)};说明:symbol为指定的约束名字,必须是唯一的,默认MySQL会自动创建一个约束名字。
(3)候选键约束与主键一样,候选键可以是表中的某一列,也可以是表中某些列构成的一个组合。
任何时候,候选键的值必须是唯一的,且不能为NULL,候选键可在CREATETABLE或ALTER TABLE语句中使用关键字UNIQUE来定义,实现方法与主键类似。
如:创建班级表Create Table COURSE(Cno VARCHAR(8) Primary Key,Cname Varchar(30) Not Null Unique,Tno Varchar(8));或者直接放在所有字段之后:CONSTRAINT COURSE UNIQUE(Cname)。
实验任务书(实验一、实验二)课程名称:数据库原理与技术实验报告要求:1.列出所有的SQL语句和源代码;2.程序要求有适当的注释;3.对数据完整性约束实施要求给出相应的测试用例。
4.实验报告提交电子档。
实验内容:一:创建表、更新表和实施数据完整性1.运行给定的SQL Script,建立数据库GlobalToyz。
2.了解表的结构,建立所有表的关系图。
3.利用系统定义的存储过程sp_helpdb查看数据库的相关信息,例如所有者、大小、创建日期等。
4.查看所有表中出现的约束(包括Primary key, Foreign key, check constraint, default, unique)5.把价格在$20以上的所有玩具的信息拷贝到称为PremiumToys的新表中。
SELECT*INTO PremiumToysFROM ToysWHERE Toys.mToyRate>20;6.对表Toys实施下面数据完整性规则:(1)玩具的现有数量应在0到200之间;(2)玩具适宜的最低年龄缺省为1。
ALTER TABLE ToysADD CONSTRAINT C1CHECK (siToyQoh BETWEEN 0 AND 200);ALTER TABLE ToysADD CONSTRAINT C2default(1)for siLowerAge;7.给id为‘000001’玩具的价格增加$1。
update Toys set mToyRate=mToyRate+1 where cToyId='000001';8. 列出表PickofMonth中的所有记录,并显示中文列标题。
SELECT cToyId[玩具编号],siMonth[生产月份],iYear[生产年份],iTotalSold [销售总量]FROM PickofMonth;二:查询数据库1.显示属于California和Illinoi州的顾客的名、姓和emailID。
题目:实验4 数据控制(完整性部分)姓名:* * * 日期:2012年4月26日一、实验目的熟悉通过SQL对数据进行完整性控制。
完成作业的上机练习。
二、实验平台在实验1中安装的RDBMS及其交互工具。
三、实验内容和要求使用SQL对数据进行完整性控制(三类完整性、check短语、constraint字句、触发器)。
用实验证实,当操作违反了完整性约束条件时,系统是如何处理的。
根据以下要求认真填写实验报告,记录所有的实验用例。
四、实验报告1、三类完整性,check短语。
关系模型的实体完整性在create table 中用primary key 定义。
定义主码的方法分为定义为列级约束条件和定义为表级约束条件两种。
对多个属性构成的码只能用表级约束条件。
习题5的第6题,要求定义实体完整性(主码)、参照完整性(外码)、check语句,用户定义的完整性(not null)。
代码如下:create table 职工( Dno numeric(4) primary key,Dname char(20) unique,Dbossname char(20),Dnum numeric(4));create table职工( Eplno smallint primary key,Eplname char(20) not null,Eplage smallint check (Eplage<=60),job char(9),Sal numeric(7,2),Dno numeric(4),foreign key(Dno)references部门(Dno) );2、constraint 字句完整性约束命名字句:create table student(SNO NUMERIC(5)CONSTRAINT C1 CHECK (SNO BETWEEN 90000 AND 99999), SNAME V ARCHAR(20)CONSTRAINT C2 NOT NULL,SAGE NUMERIC(3)CONSTRAINT C3 CHECK (SAGE < 30),SSEX V ARCHAR(2)CONSTRAINT C4 CHECK (SSEX IN ('男','女')), CONSTRAINT StudentKey PRIMARY KEY(SNO));1、触发器(1)创建触发器:(after 行级触发器)create trigger insert_or_update_Sal on 职工after insert as update 职工set Sal=12000 where (job='软件工程师')and (Sal<12000)激活触发器:insertinto职工values('24','小露','21','软件工程师','10000','8')(2)插入触发器:create trigger insert_0table on 职工for insertasdeclare @Eplno smallintselect @Eplno=Eplno from insertedupdate 职工set job='软件工程师' where Eplno=@Eplno激活触发器如下图所示:(3)创建触发器:(instead 表级触发器)create trigger J_updateon Jinstead of updateasbeginraiserror('J表的数据不能被修改!',16,10)end激活触发器:update Jset Jname='大众'where Jno='J1'执行顺序为:执行SQL“update”语句—>执行触发器删除触发器:代码:drop trigger J_update;执行结果如下:3、违反完整性约束条件时,系统处理如下:4、实验小结:(1) 遇到的问题:创建before行级触发器时出现问题create trigger insert_or_update_Salbefore insert or update on 职工for each rowas beginif(new.job='软件工程师')and (new.Sal<12000) then new.Sal:= 12000;end if;end;解决方案:待解决??。
第十章数据库完整性习题解答和解析1.什么是数据库的完整性?答:数据库的完整性是指数据的正确性和相容性。
2.数据库的完整性概念与数据库的安全性概念有什么区别和联系?答:数据的完整性和安全性是两个不同的概念,但是有一定的联系。
前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(Garbage In Garbage Out)所造成的无效操作和错误结果。
后者是保护数据库防止恶意的破坏和非法的存取。
也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。
3.什么是数据库的完整性约束条件?可分为哪几类?答:完整性约束条件是指数据库中的数据应该满足的语义约束条件。
一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。
静态列级约束是对一个列的取值域的说明,包括以下几个方面:(1)对数据类型的约束,包括数据的类型、长度、单位可精度等;(2)对数据格式的约束;(3)对取值范围或取值集合的约束;(4)对空值的约束;(5)其他约束。
静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。
静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。
常见的静态关系约束有:(1)实体完整性约束;(2)参照完整性约束;(3)函数依赖约束。
动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:(1)修改列定义时的约束;(2)修改列值时的约束。
动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。
动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。
详细内容可以参见《概论》10.1中的介绍。
4.DBMS的完整性控制机制应具有哪些功能?答:DBMS的完整性控制机制应具有三个方面的功能:(1)定义功能,即提供定义完整性约束条件的机制;(2)检查功能,即检查用户发出的操作请求是否违背了完整性约束条件;(3)违约反应,如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
《数据库实验》实验报告《数据库实验》实验报告黄爱蓉编审湖北汽车⼯业学院电⼦信息科学系⼆〇〇七年⼀⽉实验⼀:建⽴数据库及基本表实验报告⼀、实验⽬的1、了解SQL Server数据库的逻辑结构和物理结构;2、了解SQL Server的基本数据类型;3、学会在企业管理器中创建数据库和表;4、使⽤SQL查询分析器⽤CREA TE、DROP、ALTER语句创建和删除数据库,创建、删除、更新基本表。
⼆、实验内容1、创建数据库和查看数据库属性。
2、创建表。
3、查看和修改表结构。
4、熟悉企业管理器和查询分析器⼯具的使⽤⽅法三、实验步骤1、在企业管理器中创建数据库和数据表。
(1) 使⽤企业管理器建⽴图书管理数据库,数据库名为BM,初始⼤⼩为10MB,最⼤为50MB,数据库⾃动增长,增长⽅式是按5%⽐例增长;⽇志⽂件初始为2MB,最⼤可增长到5MB,按1MB增长。
数据库的逻辑⽂件名和物理⽂件名均采⽤默认值。
详细步骤:(2) 在企业管理器中查看图书管理数据库的属性,并进⾏修改,使之符合要求。
(3) 通过企业管理器,在建好了图书管理数据库BM中建⽴图书(book)、读者(reader)和借阅(borrow)3个表,其结构为:图书(书号,类别,出版社,作者,书名,定价);读者(编号,姓名,单位,性别,电话);借阅(书号,读者编号,借阅⽇期)。
创建上述三个表的步骤:三个表各个字段的数据类型:2、在查询分析器中创建数据库和数据表(1) 创建数据库S-C 的sql语句:(2) 在数据库S-C下,创建基本表学⽣表student(sno,sname,ssex,sage,sdept)的sql语句:创建基本表课程表course(cno,cname, ccredit)的sql语句:创建基本表成绩表sc(sno,cno,grade)的sql语句:(3) 在窗⼝下分别键⼊DROP TABLE Student及DROP TABLE SC命令,运⾏后观察结果。
实验四数据库完整性实验报告一实验目的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--创建以下两个关系模式,并分别插入相应的数据。
大连海事大学数据库原理课程实验大纲实验名称:实验七完整性实验学时: 2适用专业:智能科学与技术实验环境: Microsoft SQL server 20141实验目的(1)掌握实体完整性、参照完整性和用户自定义完整性约束的创建方法。
(2)掌握完整性约束的运行检查机制。
(3)掌握参照完整性的级联删除和修改方法。
(4)掌握正确设计关系模式完整性约束的方法。
2实验内容2.1 掌握实体完整性约束的创建和使用方法(1)创建表时定义由一个属性组成的主键(给约束命名)。
(2)创建表时定义由两个或两个以上属性组成的主键(给约束命名)。
(3)删除以上两个主键约束。
(4)利用ALTER TABLE语句定义上述两个主键。
2.2 掌握参照完整性约束的创建和使用方法(5)创建表时定义一个列级参照完整性约束(给约束命名)。
(6)创建表时定义一个表级的由两个属性组成的参照完整性约束(给约束命名)。
(7)设计数据更新语句检查参照完整性约束是否起作用。
(8)删除上述完整性约束。
(9)利用ALTER TABLE 建立上述参照完整性约束,并且规定UPDA TE/DELETE时的动作。
(10)设计数据更新语句检查参照完整性约束及其相应的动作是否起作用。
2.3 掌握用户自定完整性约束的创建和使用方法(11)定义一个检查约束,检查其值在某个取值范围内,并设计相应的更新语句检查该约束是否起作用?(12)定义一个检查其值符合某个匹配模式的检查约束(使用LIKE),并设计相应的更新语句检查该约束是否起作用?(13)定义一个检查其值符合某个正则表达式的检查约束(使用SIMILAR TO),并设计相应的更新语句检查该约束是否起作用?(14)定义一个UNIQUE约束,并设计相应的更新语句检查该约束是否起作用?(15)定义一个DEFAULT约束,设计一个INSERT语句检查该约束是否起作用。
3实验要求(1)深入复习教材第五章数据库完整性约束内容。
(2)根据书上的例子,针对TPCH数据库模式设计各种完整性约束,每种类型完整性约束至少要设计一个,描述清楚完整性约束要求,设计和运行触发完整性约束检查的数据更新语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。
实验5 数据完整性1.实验目的(1)掌握Transact-SQL语句(CREATE RULE、DROP RULE)创建和删除规则的方法。
(2)掌握系统存储过程sp_bindrule、sp_unbindrule绑定和解除绑定规则的操作方法,以及sp_helptext查询规则信息、sp_rename更名规则的方法。
(3)掌握Transact-SQL语句(CREATE DEFAULT、DROP DEFAULT)创建和删除默认对象的方法。
(4)掌握系统存储过程sp_bindefault、sp_unbindefault绑定和解除绑定默认对象的操作方法,以及sp_helptext查询默认对象信息。
(5)掌握SQL Server管理平台和Transact-SQL语句(CREATE TABLE、ALTER TABLE)定义和删除约束的方法,并了解约束的类型。
2.实验内容及步骤请先附加studentsdb数据库,然后完成以下实验。
(1)主要讲解规则为studentsdb数据库创建一个规则,限制所输入的数据为7位0~9的数字。
①.复制student_info表命名为stu_phone,在stu_phone表中插入一列,列名为'电话号码'CHAR(7)。
完成以下代码实现该操作。
stu_phone表结构如图1-10所示。
答:SELECT*INTO stu_phone FROM student_infoALTER TABLE stu_phone ADD电话号码CHAR(7)NULL创建一个规则phone_rule,限制所输入的数据为7位0~9的数字。
实现该规则的代码为答:create rule phone_ruleas @电话号码like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'②.使用系统存储过程sp_bindrule将phone_rule规则绑定到stu_phone表的“电话号码”列上。
数据库完整性实验报告第一篇:数据库完整性实验报告实验报告一、实验题目数据库完整性二、实验要求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。
数据库实验报告答案篇一:2013 《数据库原理及应用》实验报告答案】实验二数据定义一、实验目的1 、掌握数据库引擎的使用方法,加深对sql 的语句的理解;2 、使用sql 语句创建数据库、删除数据库3、熟练掌握ddl 语言的数据定义操作,包括create 、alter 、drop二、实验内容在sql 查询分析器中用create 、drop 、alter 语句创建、删除、修改基本表。
三、实验步骤1、根据课本中的说明,分析s表,p表,j表和spj表的主码和外码:(1) s表,p表,j表的主码分别是哪个属性,s表,p表,j表这三个表有没有外码?如果有,请写出。
s 表的主码sno p 表的主码pno j 表的主码jno 没有外码(2) spj 表的主码是由哪几个属性组成的属性组?spj 表的外码有几个,分别是哪些属性?分别参照哪些表的哪个属性?spj 主码( sno,pno,jno ) 外码sno 参照s 表的sno ,外码pno 参照p 表的pno ,外码jno 参照j 表的jno 。
2. 新建数据库spj ,并在数据库spj 中创建s 表,p 表,j 表和spj 表。
( 1 )创建供应商表s 的sql 语句,要求设置主码:create table s (sno char(4) primary key, sname varchar(40), status smallint, city varchar(20) );( 2)创建零件表p 的sql 语句,要求设置主码并将该约束命名为p_pk :create table p(pno char(4) constraint p_pk primary key,pname varchar(40),color char(2),weight smallint);( 3)创建工程项目表j 的sql 语句,要求设置主码并命名为j_pk :create table j (jno char(4) constraint j_pk primary key,jname varchar(40),city varchar(20));( 4)创建基本表供应情况表spj 的sql 语句,要求设置主码和外码:create table spj (sno char(4) references s(sno),pno char(4) references p(pno),jno char(4) references j(jno),qty smallint,primary key(sno,pno,jno));3. 在窗口下键入drop table s 命令,运行后观察结果。
实验六数据完整性约束姓名:学号:专业:网络工程班级:20网络工程同组人:无实验日期:2022.5【实验目的与要求】1.熟练掌握实体完整性的实现。
2.熟练掌握参照完整性的实现。
3.熟练掌握域完整性的实现。
【实验内容与步骤】实验准备:(1)对于SalesDB数据库,若在产品表、销售表和客户表上已有约束,请先删除之;(2)删除掉表中重复的行。
6.1.实体完整性的实现(1) 对产品表,定义主键约束(用企业管理器实现)。
写出相应过程:(1)在对象资源管理器中的数据库节点下找到数据库SalesDB,找到表Product。
右击-修改(2)按住Ctrl键选中Price和Stocks,右键-设置主键-保存测试:试着对产品表插入一条与原表中数据行具有相同主键值的数据。
给出测试结果:(2)客户表(CUSTOMER),定义名为PK_Cstm的主键约束,设定客户号(Cno)为主键。
(用SQL语句实现,写出相应语句)。
给出相应的SQL语句:alter table Customeraddconstraint PK_Cstm primary key(Cno)给出测试结果:(3)对销售表,定义名为PK_Sales的主键约束,设定主键为(Pno,Cno)的组合(用SQL语句实现,写出相应语句)。
给出相应的SQL语句:alter table Salesaddconstraint PK_Sales primary key(Pno,Cno)给出测试结果:(1)利用企业管理器建立产品表(Product)与销售表(Sales)之间的参照关系,当对主表产品表进行更新和删除操作时,从表Sales采用NO ACTION方式,写出其过程。
给出相应的过程:测试:试着删除主表中与从表有关联的一条记录,而后分别查看主表和从表中数据记录,给出测试结果。
(2)利用SQL语句建立销售表(SALES)与客户表(CUSTOMER)之间的参照关系,设定外键约束名为FK_SC,使得当对主表客户表(CUSTOMER)进行更新和删除操作时,从表销售表(SALES)采用CASCADE(级联)方式处理,给出相应的SQL语句和测试结果。
1实验八:数据库完整性1.1实验背景“存储在数据库中的所有数据值均是正确的状态。
如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。
”这是SQL Server2000中给出数据库完整性的解释,但是我们要问两个问题:●什么是数据正确的状态?●如何确保数据是正确的?对于第一个问题,确实很难回答,因为:“世界上所有事物本无正确与错误”,但是一些不符合逻辑的、前后矛盾的、没有满足人们需求的,可以说是“不正确的”。
如:一个人的年龄是“-20岁”,这就是不符合逻辑的;在一个地方,这个人叫“张三”,但是换了个地方却记成“张山”,这就是矛盾;如果一笔订单金额没有达到1万元,却给记成打了8折,实际只能打9折,这就是不满足需求。
造成上述各种不正确的原因是什么呢?无外乎是人们输入错误、业务不熟悉、或者是捣乱分子故意为之。
那么关键问题是我们如何在数据库中预防这种不正确的情况呢?这就是要问的第二个问题。
这需要靠数据库管理系统(DBMS)提供一套完整性约束机制来预防这种情况的发生。
但是人们常说一句话“人无完人,金无足赤”,同样,要完全靠DBMS帮我们防住所有的不正确,本身就是不正确的,这不符合辩证哲学的观点。
这说明DBMS只能是尽可能的预防。
那么人们要深入研究有哪些完整性约束,DBMS应该提供哪些保障机制。
首先,完整性约束主要有以下几种:●实体完整性约束●参照完整性约束●用户定义完整性约束其次,在关系型数据库中保证上述完整性约束的方法有以下几种:表 1 数据库提供的约束我们可以看出主码、外码是我们经常接触到的数据库提供的约束方法,也是最重要的约束。
但是,外码约束并没有我们想象那样简单,即只要把外码关系建立起来就行了,还要考虑到约束强度的问题:表2参照完整性约束的类型与强度那么,用户定义的参照完整性如何实现?一般的DBMS都提供了相应的对策,如:Check约束、Null约束、索引约束、触发器、存储过程等。
SQL Server 中还提到了域约束。
《数据库原理与应用》实验指导 / 学年第学期姓名:______________学号:______________班级:______________指导教师:______________计算机科学与工程学院2009实验一SQL Server使用初步一、实验目的1、熟悉SQL Server2000的组成及基本功能。
2、掌握SQL Server2000的登录及注册。
3、掌握SQL Server2000企业管理器的使用方法。
4、熟悉查询分析器的基本使用。
二、实验预习1、什么是数据库管理系统DBMS?你所知道的DBMS有哪些?2、SQL Server 2000(2005)的安装步骤?三、实验内容和要求1、注册服务器基本步骤:(1)打开企业管理器(2)右击SQL Server组→新建SQL Server注册(3)添加可用的服务器(实际数据库服务器的名称或IP地址)(4)选择身份验证模式(选“系统管理员分配给我的登录信息”)(5)输入正确的登录名和密码(6)选择SQL Server组(选“在现有的SQL Server组中添加SQL Server”)(7)完成注册若注册成功,则显示注册成功的信息。
2、连接SQL Server服务器(1)右键单击上面注册的数据库服务器,选择连接,建立与数据库服务器的连接。
观察连接后服务器图标的变化;(2)右键单击选择编辑SQL Server注册属性,观察已注册数据库服务器的属性信息;(3)右键单击选择删除SQL Server注册。
为保证数据库的安全性,使用完毕自己的数据库后,可采取删除的方式,断开与数据库的连接;(4)重复注册服务器的步骤,再次建立与数据库的连接;3、熟悉企业管理器(1)单击建立的服务器连接,观察服务器的7个项目,写出它们的名称。
通过查看联机帮助,总结7个项目的基本功能。
(2)单击数据库,观察Northwind数据库下的11个项目,写出项目名称,通过联机帮助了解它们的基本功能。
数据库原理及应用实验报告实验四数据控制(安全性和完整性)实验报告实验类型__综合设计__实验室_软件实验室一__数据控制(安全性和完整性)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服务器的安全性检查之后,将接受第二层的安全性检查,即是否具有访问某个数据库的权利。
实验4 实体完整性约束【实验内容】4.1 实体完整性约束实体完整性约束1、为现有表T在TNO列上创建PRIMARY KEY约束。
约束。
2、创建数据库表TEST_C,并以列约束形式创建PRIMARY KEY约束,TEST_C表的结构定义如下:表的结构定义如下: 表名:TEST_C。
包含的列如下:包含的列如下:课程号:CNO CHAR(2);课程名:CN CHAR(10);课时:CT TINYINT;主键:CNO主键约束名:PK_TEST_C。
3、创建数据库表TEST_TC,并以表约束形式创建PRIMARY KEY约束,TEST_TC表的结构定义如下:表的结构定义如下: 表名:TEST_TC。
包含的列如下:包含的列如下:教师号:TNO CHAR(2);课程号:CNO CHAR(2);主键:(TNO, CNO);主键约束名:PK_TEST_TC。
4、为表C中的CN列创建“UNIQUE”约束UNIQUE_C。
5、为表TEST_TC增加新列ID_TC,并创建此列属性为IDENTITY。
6、删除表C中CN列的UNIQUE约束UNIQUE_C。
4.2 域完整性约束域完整性约束1、为表S创建CHECK约束。
约束。
要求本科生的年龄限制在14 14 —— 40岁之间,此约束对表S 中已有数据做检查。
中已有数据做检查。
2、创建数据库表TEST_S ,包含DEFAULT 和CHECK 约束,表TEST_S 的结构定义如表4-1所示。
所示。
表4-1 表TEST_S 的结构定义的结构定义 列名列名数据类型和长度数据类型和长度 DEFAULT是否可NULLCHECK 表达式约束名 SNO char(2) 否 SN char(8) 否SEX char(2) ‘男’ 是 ‘男’OR‘女’ DEFAULT_SEX CHECK_SEX AGE int 18 是 >= 14 AND <= 40 DEFAULT_AGE CHECK_AGE3、删除表TEST_S 中列SEX 的DEFAULT 约束及列AGE 的CHECK 约束。
实验四使用SQL语句创建和删除数据库、表一. 实验目的:1、了解SQL Server 2005数据库的逻辑结构和物理结构。
2、掌握使用SQL 语句创建和删除数据库。
3、学会使用T-SQL语句创建表。
二. 实验准备1.明确能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。
2.了解用SQL语句创建和删除数据库的基本语法。
3.是用查询分析器,完成用SQL语句创建和删除基本表。
三. 实验要求1、熟练使用查询分析器进行数据库的创建和删除操作。
2、用查询分析器,完成用SQL语句创建和删除基本表。
3、完成实验报告。
四. 实验内容一、数据库1.以下是创建数据库userdb1的SQL语句,create database userdb1on(name=userdb4_data,--数据文件的逻辑名称,注意不能与日志逻辑同名filename='g:\xygl\userdb4.mdf' ,--物理名称,注意路径必须存在size=5,--数据初始长度为5Mmaxsize=10,--最大长度为10Mfilegrowth=1)--数据文件每次增长1Mlog on( name=userdb4_log,filename='g:\xygl\userdb4.ldf ' ,size=2 ,maxsize=5 ,filegrowth=1)运行上诉语句建立数据库userdb12.根据步骤1的sql语句,写出创建实验二中“学生信息”数据库的sql语句,并建立“学生信息”数据库.(.mdf的名字可以修改)3.数据库的修改(alter database 数据库名add file),将一个大小为10MB 的数据文件mrkj添加到userdb1的数据库中,该数据文件的大小为10MB,最大的文件大小为100MB,增长速度为2MB,物理地址与原有的mdf,ldf文件放在一起。
alter database 数据库名 add file()注括号内格式同下:( name=userdb4_log,filename='g:\xygl\userdb4.ldf ' ,size=2 ,maxsize=5 ,filegrowth=1)4.修改文件alter database数据库名modify file()注括号内表示修改后的属性信息,格式同下:( name=userdb4_log,filename='g:\xygl\userdb4.ldf ' ,size=2 ,maxsize=5 ,filegrowth=1)5.删除文件mrkj(alter database数据库名remove file+文件名)6.用SQL语句删除步骤一建立的数据库userdb1。
实验4 实体完整性约束
【实验内容】
4.1 实体完整性约束
1、为现有表T在TNO列上创建PRIMARY KEY约束。
2、创建数据库表TEST_C,并以列约束形式创建PRIMARY KEY约束,TEST_C表的结构定义如下:
表名:TEST_C。
包含的列如下:
课程号:CNO CHAR(2);
课程名:CN CHAR(10);
课时:CT TINYINT;
主键:CNO
主键约束名:PK_TEST_C。
3、创建数据库表TEST_TC,并以表约束形式创建PRIMARY KEY约束,TEST_TC表的结构定义如下:
表名:TEST_TC。
包含的列如下:
教师号:TNO CHAR(2);
课程号:CNO CHAR(2);
主键:(TNO, CNO);
主键约束名:PK_TEST_TC。
4、为表C中的CN列创建“UNIQUE”约束UNIQUE_C。
5、为表TEST_TC增加新列ID_TC,并创建此列属性为IDENTITY。
6、删除表C中CN列的UNIQUE约束UNIQUE_C。
4.2 域完整性约束
1、为表S创建CHECK约束。
要求本科生的年龄限制在14 — 40岁之间,此约束对表S中已有数据做检查。
2、创建数据库表TEST_S,包含DEFAULT和CHECK约束,表TEST_S的结构定义如表4-1所示。
表4-1 表TEST_S的结构定义
3、删除表TEST_S中列SEX的DEFAULT约束及列AGE的CHECK约束。
4.3 参照完整性约束
1、用SQL创建表T与表TC之间的参照关系。
表T与表TC通过外键TNO实现参照完整性约束FK_T_TC:字表TC中TNO的取值要参照主表T中TNO的取值。
要求取消“创建中检查现有数据”,选择“级联删除相关记录”。
2、删除表C和表TC之间的参照关系。