实验十 用户自定义完整性
- 格式:doc
- 大小:162.00 KB
- 文档页数:4
名词解释数据库的完整性数据库的完整性是指数据库中的数据符合事先定义的规则和约束,没有数据的不一致性和错误。
它通常包括实体完整性、域完整性、参照完整性和用户自定义完整性等方面。
一、实体完整性实体完整性是指数据库表中的每一行数据都必须能被识别并与其他表中的数据进行关联。
在关系型数据库中,每个表都必须有一个主键,用于唯一标识其中的每一条记录。
通过定义主键,可以确保每个记录都具有唯一性,避免了数据的重复和混乱。
二、域完整性域完整性是指数据库中每个属性的取值都必须满足其定义的约束条件。
例如,字段的数据类型、长度、格式等都需要满足设定的规则,以保证数据的有效性和一致性。
常见的约束条件包括非空约束、唯一约束、范围约束、正则表达式约束等。
三、参照完整性参照完整性是指数据库中的外键约束能够维护表与表之间的关系,保证数据的一致性和完整性。
外键是指一个表的字段引用另一个表中的主键,用于建立两个表之间的联系。
外键约束可以限制只能插入或更新具有对应主键值的数据,避免了数据的破坏和不一致。
四、用户自定义完整性用户自定义完整性是指用户根据具体业务需求对数据库增加的约束条件,以满足特定的数据要求。
这些约束条件通常是通过触发器、存储过程等方式定义的,可以对数据进行进一步的验证和筛选,确保数据的正确性和有效性。
用户自定义完整性适用于特定的业务场景,能够帮助用户更好地管理和控制数据。
总结起来,数据库的完整性对于数据的有效性和一致性非常重要。
它通过实体完整性、域完整性、参照完整性和用户自定义完整性等方面的规则和约束,确保了数据库中的数据正确、满足要求,并能够与其他数据表之间建立正确的关联。
只有保持数据库的完整性,才能为用户提供可信赖的数据支持,帮助他们做出准确的决策和分析。
第二章数据库的完整性控制数据完整性(Data Integrity)是指数据的精确性(accuracy)和可靠性(reliability),它是防止数据库中存在不符合语义规定的数据和防止因错误的信息的输入造成无效操作或错误信息而提出的,保证在一个应用程序更新数据的过程中数据的语义正确性。
数据完整性主要分为三类:实体完整性(Entity Integrity),参照完整性(Referential Integrity)以及用户定义的完整性(User-defined Integrity),其中用户定义的完整性主要包括域完整性(Domain Integrity)和其他自定义完整性。
为维护数据库德完整性,数据库管理系统(DBMS)必须提供一种机制来检查数据库中的数据,看其是否满足语义规定的条件。
这些加在数据库数据上的语义约束条件称为数据库完整性规则,它们作为模式的一部分存入数据库中。
完整性控制是指对数据库进行更新操作,要遵守完整性规则,才能保证数据的语义正确性,防止数据库中存在不符合语义的数据。
目的是在合法用户访问数据库的过程中,保证数据的正确性和准确性。
完整性检查机制是指在DBMS中检查数据是否满足完整性条件的机制。
由DBMS在执行更新动作时,检查是否满足预定的完整性约束条件,来进行控制。
广义的完整性控制包括故障恢复、并发控制。
而一般所指的完整性控制是指基于数据库的完整性约束规则,如:实体完整性、引用完整性等。
SQL中两种主要的数据完整性控制机制是指完整性约束规则的定义和检查以及触发器(Trigger)机制。
完整性控制机制应具有三个功能:(1)定义功能,即提供定义完整性约束条件的机制;(2)检查功能,即检查用户发出的操作请求书否违反了约束条件;(3)如果发现用户操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
完整性控制机制的工作原理基本上分为两类,一种是定义完整性时就立刻进行检查的,例如实体完整性的定义;另外一种是定义完整性之后进行检查的,例如参照完整性的定义。
SQL-Server实验答案上海师范大学计算机系目录第一部分企业管理器的使用 (3)试验一注册服务器.................................................................................. 错误!未定义书签。
试验二创建数据库.................................................................................. 错误!未定义书签。
试验三创建表.......................................................................................... 错误!未定义书签。
实验四数据输入...................................................................................... 错误!未定义书签。
实验五登录到数据库服务器.................................................................. 错误!未定义书签。
第二部分SQL语言 (3)第二部分SQL语言 (3)试验一数据库创建 (3)试验二创建表 (3)试验三创建数据完整性 (5)试验四数据完整性试验 (6)试验五索引 (10)试验六更新数据 (11)试验七 Sql 查询语句 (12)试验八视图 (15)试验九安全性控制实验 (16)试验十存储过程 (17)试验十二触发器 (21)试验十二恢复技术 (25)试验十三事务 (26)试验十四锁 (27)第一部分企业管理器的使用第二部分SQL语言试验一数据库创建目的:1掌握利用SQL语言进行数据库的创建、维护。
2 sp_helpdb 命令要求:1 创建数据库 2 修改数据库 3 删除数据库一建立school 数据库1 使用查询分析器创建数据库 schoolCreate DataBase school2 使用 SP_helpdb 查询数据库 School 的信息3 使用SQL-Server 的企业管理器查看数据库 school 的信息。
实验9. 用户自定义完整性9.1实验目的学习用户自定义约束,并实践用户自定义完整性,利用SQL语言用短语NOT NULL、UNIQUE、CHECK保证用户定义完整性。
9.2实验内容(建议将表改成Teachers,相应属性以T开始命名,如Tname)建立Teacher表。
建立表Teacher,注意跟前面所建立的Teacher区分开来,(1)创建Worker,Teacher表,并自定义2个约束U1以及U2,其中U1规定Wname Tname字段唯一,U2规定Wage, Tage (级别)字段的上限是28。
(2)在Worker, Teacher表中插入一条合法记录。
(3)演示插入违反U2约束的例子,U2规定元组的Wage,Tage属性的值必须<=28。
(4)去除U2约束。
(5)重新插入(3)中想要插入的数据,由于去除了U2约束,所以插入成功。
(6)创建规则Rule_sex,规定插入或更新的值只能是M或F,并绑定到Worker Teacher的WsexTsex字段。
(7)演示违反规则Rule_sex的插入操作。
9.3实验步骤以系统管理员或sa帐号登录到SSMS,在新建查询窗口下输入如下命令,运行并观察结果。
(1) 在新建查询窗口中输入如下SQL语句:USE University_MisCREATE TABLE Teacher(Tno CHAR(5),Tname CHAR(8) CONSTRAINT U1 UNIQUE,Tsex CHAR(1),Tage INT CONSTRAINT U2 CHECK (Tage<=28),Tdept CHAR(20),CONSTRAINT PK_Teacher PRIMARY KEY(Tno))(2) 在新建查询窗口中输入如下SQL语句USE University_MisINSERT INTO Teacher (Tno, Tname,Tsex, Tage,Tdept)VALUES(‘T01’,’李用’,’M’,14,’后勤部’)SELECT * FROM Teacher(3) 在新建查询窗口中输入如下SQL语句USE University_MisINSERT INTO Teacher (Tno, Tname,Tsex, Tage,Tdept)Values(‘T02’,’王勇’,’M’,38,’后勤部’)SELECT * FROM Teacher(4) 在新建查询窗口中输入如下SQL语句USE University_MisALTER TABLE teacher DROP U2(5) 在新建查询窗口中输入如下SQL语句USE University_MisINSERT INTO Teacher (Tno, Tname,Tsex, Tage,Tdept)VALUES(‘T02’,’王勇’,’M’,38,’后勤部’)SELECT * FROM Teacher(6) 在新建查询窗口中输入如下SQL语句USE University_MisGoCREATE RULE Rule_sex AS @Value IN (‘F’,’M’)GoEXEC SP_bindrule Rule_sex, ‘Teacher.[Tsex]’;(7) 在新建查询窗口中输入如下SQL语句USE University_MisINSERT INTO Teacher VALUES(‘T03’,’黄号’,’1’,’25’,’后勤部’)9.4实验要求(1) 实验之前请细细阅读实验总体要求与说明指导书(2 ) 在SQL Server 2005或2008的SSMS 环境中,完成以上实验(1)-(7)步所有SQL数据定义操作,并将其中奇数步骤的操作窗口剪贴到实验报告中。
实验六数据库的完整性定义与检查实验目的:1.充分理解关系数据库中关于数据库完整性的概念。
2.掌握实体完整性的定义和检查方法。
3.掌握参照完整性的定义和检查方法。
4.掌握用户自定义完整性的定义和检查方法。
实验内容:一、在企业管理器中定义以下数据表中各字段的完整性约束(包括实体完整性、参照完整性和用户定义完整性)。
1.Student表。
记录学生基本信息。
表1-1 Student 表结构[Sno] [char](9)PRIMARY KEY,[Sname] [char](8)NOT NULL,[Ssex] [char](2)CHECK(Ssex IN('女','男')),[Sage] SMALLINT CHECK(Sage>=15 AND Sage<=45),[Sdept] [char](20)default('计算机'))2.Course表。
记录课程信息。
表1-2 Course 表结构[Cno] [char](10)PRIMARY KEY,[Cname] [char](20)NOT NULL,[Ccredit] SMALLINT CHECK(Ccredit>0),[Semester] SMALLINT CHECK(Semester>0),[Period] SMALLINT CHECK(Period>0),)3.Sc表。
记录学生选修课程的信息。
表1-3 Sc 表结构[Sno] [char](9)NOT NULL,[Cno] [char](10)NOT NULL,[Grade]SMALLINT CHECK(Grade>=0 and Grade<=100),PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno),FOREIGN KEY(Cno)REFERENCES Course(Cno))二、在查询编辑器中,写出创建表的语句同时写出设置实体完整性、参照完整性和用户自定义完整性的语句。
数据库的完整性实验报告数据库的完整性实验报告引言:数据库的完整性是指数据库中存储的数据必须满足预定的一致性要求,包括实体完整性、域完整性、参照完整性和用户定义的完整性。
本实验旨在通过设计一个简单的数据库,并通过实际操作验证其完整性。
一、实验目的本实验的目的是通过设计和操作数据库,了解数据库的完整性概念,并掌握如何保证数据的完整性。
二、实验环境本实验使用MySQL数据库管理系统,并在Windows操作系统上进行实验。
三、实验步骤1. 创建数据库首先,我们需要创建一个数据库来存储我们的数据。
在MySQL中,可以使用以下命令创建一个新的数据库:```CREATE DATABASE integrity;```2. 创建数据表接下来,我们需要创建一个数据表来存储我们的数据。
假设我们要创建一个学生信息表,包括学生的学号、姓名和年龄。
可以使用以下命令创建该表:```USE integrity;CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT);```3. 插入数据现在,我们可以向刚刚创建的数据表中插入一些数据。
例如,我们可以插入几个学生的信息:```INSERT INTO students (id, name, age) VALUES (1, '张三', 20);INSERT INTO students (id, name, age) VALUES (2, '李四', 22);INSERT INTO students (id, name, age) VALUES (3, '王五', 21);```4. 实体完整性实体完整性是指每个实体都必须具有一个唯一的标识符。
在我们的学生信息表中,学生的学号是唯一的标识符。
为了保证实体完整性,我们可以在创建表时使用PRIMARY KEY约束来定义学号为主键:```CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT);```这样,如果有重复的学号插入到表中,系统会报错并拒绝插入。
数据库完整性心得我学习了数据库的完整性,了解了数据库完整性和安全性的区别,学习了实体完整性、参照完整性和用户自定义完整性,掌握了完整性约束命名子句的方法,掌握了触发器机制和方法。
数据库的完整性和安全性的区别在于,数据库的完整性是防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。
而数据库的安全性是保护数据库防止恶意的破坏和非法的存取。
实体完整性要求基本表的主码值唯一且不允许为空值。
在SQL的create语句里,我们可以用Primary Key短语实现,而在alter语句里,我们可以用Add Primary Key短语实现。
参照完整性为若干个表中的相应元组建立联系。
在SQL的create 语句里可以用Foreign Key和References短语来实现,而在alter语句里,可以用Add Foreign Key短语来实现。
Foreign Key指出定义哪些列为外码,References短语指明这些外码参照哪些关系。
给出Foreign Key定义的关系称为参照关系,由References指明的表称为被参照关系。
用户自定义的完整性就是针对某一具体应用的数据必须满足的语义要求,RDBMS提供了定义和检验用户定义完整性的机制。
create table时需要判断列值非空,判断列值唯一,还要检查列值是否满足一个布尔表达式。
触发器是一种特殊的存储过程,不管什么原因造成的数据变化都可以自动响应。
每条SQL语句,触发器都只执行一次,事务可用于触发器中。
经过这次的学习,我对数据库的完整性有了一定的了解。
意识到完整性是数据库一种很重要的特性,完整性是维持数据库正常运作的重要保障。
数据库完整性实验报告引言数据库完整性是数据库管理系统中的一个重要概念,用于确保数据库中数据的准确性、有效性和一致性。
本实验旨在通过设计和实现一系列完整性约束,来验证数据库完整性的实际应用。
实验目标本实验的目标是设计并实现以下几种完整性约束: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);实验结果通过以上步骤,我们已经成功设计并实现了实体完整性约束、参照完整性约束和用户自定义完整性约束。
大学计算机课程教学大纲College Computer课程编号:适用专业:总学分:3学分总学时:64学时其中:讲授32学时;实验32学时课程性质:通修课先修课程:后续课程:程序设计语言教学目的与要求:通过“大学计算机”课程的教学,使学生对计算机的发展、应用形成较具体的认识,建立起计算机应用意识,掌握计算机的基本知识,培养计算思维,具备操作和使用计算机的初步能力。
“大学计算机”是一门理论与实践并重的课程,要求学生既要掌握一些计算机的基本知识,又要具备操作使用计算机的基本技能。
本课程的内容包括以下几个方面:计算机与计算思维概述、数据编码、数据存储、数据结构、算法设计与分析、数据库、软件开发、网络与信息安全等。
(一)理论教学教学内容与学时安排第一章计算机与计算思维概述第一节计算机系统组成一、硬件系统计算机系统通常由硬件系统和软件系统两大部分组成。
现代计算机采用冯若依曼结构,由五大部件组成,其工作原理是存储程序和程序控制。
CPU的构成、性能指标及常见产品。
存储器的功能及其性能指标。
常见的输入输出设备。
常见的I/O接口。
二、软件系统软件的定义及分类。
操作系统的功能及分类。
常见的操作系统。
第二节计算机的应用一、计算机在商业中的应用电子数据交换。
电子商务。
二、计算机在制造业中的应用计算机辅助设计。
计算机辅助制造。
计算机集成制造系统。
三、计算机在交通运输业中的应用计算机辅助设计。
计算机辅助制造。
计算机集成制造系统。
四、计算机在制农业上的应用农情监测。
专家系统。
农业生产实时控制系统。
农产品质量检测。
农业数据库的建立和使用。
五、计算机在医学中的应用医学专家系统。
远程医疗系统。
数字化医疗仪器。
医院监护与健康护理。
医药研究。
第三节计算模式一、高性能计算模式高性能计算机。
超级计算机及我国超级计算中心。
高性能计算的应用领域。
二、分布式计算模式分布式计算。
分布式计算的应用领域。
三、普适计算普适计算。
普适计算的应用领域。
四、网格计算网格计算。
数据操作和完整性约束的作⽤计算机科学与技术系实验报告专业名称计算机科学与技术课程名称数据库系统及应⽤项⽬名称数据操作和完整性约束的作⽤班级学号姓名实验⽇期 2015/11/3⼀、实验⽬的与要求:(⼀)实验⽬的熟练掌握SQL的INSERT、UPDATE和DELETE命令,深刻理解数据完整性约束的作⽤以及约束机制。
(⼆)实验要求(1)读者⾃⾏设计各个表的记录,其中院系表⾄少10条记录、学⽣表⾄少30条记录、课程表⾄少10条记录、教师表⾄少10条记录、选课表⾄少50条记录。
(2)使⽤INSERT命令完成记录的插⼊操作,要求分别设计若⼲违反实体完整性、参照完整性和⽤户⾃定义完整性和⽤户定义完整性约束的插⼊操作,并分析原因。
(3)设计若⼲删除操作,体会执⾏删除时检查参照完整性规则的效果(要求涉及拒绝删除、空值删除和级联删除等不同的处理⽅式)。
(4)设计若⼲更新操作,体会执⾏更新操作时检查实体完整性规则、参照完整性规则和⽤户⾃定义完整性规则的效果。
(5)在实验报告中要给出具体的记录和设计的操作,并针对各种数据完整性检查给出具体的分析和讨论。
⼆、实验⽅法:(代码)create database 学⽣管理系统use 学⽣管理系统create table yuanxi(编号 smallint primary key,名称 char(20) unique not null,负责⼈ char(10),办公地点 char(20))--drop table yuanxicreate table xuesheng(学号 char(8) primary key,院系 smallint foreign key references yuanxi(编号),姓名 char(10) not null,性别 char(2) check (性别 = '男' or 性别 = '⼥'),⽣源 char(6),状态 char(4) check (状态 = '正常' or 状态 = '留级' or 状态 = '休学' or 状态 = '退学') )create table jiaoshi(教师编号 char(8) primary key,院系 smallint foreign key references yuanxi(编号),姓名 char(10) not null,性别 char(2) check (性别 = '男' or 性别 = '⼥'),职称 char(6) check (职称 = '教授' or 职称 = '副教授' or 职称 = '讲师' or 职称 = '助教'), 专业 char(10))create table kecheng(课程编号 char(8) primary key,课程名称 char(20) not null,负责讲师 char(8) foreign key references jiaoshi(教师编号),学时 smallint not null,课程性质 char(10) check(课程性质 = '公共基础' or 课程性质 = '专业基础' or 课程性质 = '专业选修' or 课程性质 = '任意选修') )create table xuanke(学号 char(8)foreign key references xuesheng(学号),课程编号 char(8) foreign key references kecheng(课程编号),成绩 smallint check(成绩 >= 0 and 成绩 <=100) default null ,primary key(学号,课程编号))--在院系表中插⼊10条记录insert into 院系 values(1,'计科系','马主任','36栋')insert into 院系 values(2,'电⽓系','赵主任','35栋')insert into 院系 values(3,'机械系','钱主任','34栋')insert into 院系 values(4,'园林系','孙主任','33栋')insert into 院系 values(5,'艺术系','李主任','32栋')insert into 院系 values(6,'⼈⽂系','周主任','31栋')insert into 院系 values(7,'物理系','吴主任','30栋')insert into 院系 values(8,'外语系','郑主任','2栋')insert into 院系 values(9,'体育系','王主任','4栋')insert into 院系 values(10,'国贸系','汝主任','8栋')--在学⽣表中插⼊30条记录insert into 学⽣ values('1',1,'王艳','⼥','⾩阳市','正常',NULL) insert into 学⽣ values('2',1,'李婷','⼥','南京市','正常',NULL) insert into 学⽣ values('3',1,'张三','男','⾩阳市','正常',NULL) insert into 学⽣ values('4',2,'赵⽟','男','⾩阳市','正常',NULL)insert into 学⽣ values('5',2,'李雷','男','上海市','正常',NULL) insert into 学⽣ values('6',2,'张琪','⼥','六安市','正常',NULL) insert into 学⽣ values('7',3,'夏⾬','男','上海市','正常',NULL) insert into 学⽣ values('8',3,'李信','男','⾩阳市','正常',NULL) insert into 学⽣ values('9',4,'黎姿','⼥','南京市','正常',NULL) insert into 学⽣ values('10',4,'汝闻闻','⼥','六安市','正常',NULL) insert into 学⽣values('11',4,'翟凤亚','男','六安市','正常',NULL) insert into 学⽣ values('12',5,'郑微','⼥','亳州市','留级',NULL) insert into 学⽣values('13',5,'赵⽴英','⼥','亳州市','留级',NULL) insert into 学⽣ values('14',5,'李晨','男','亳州市','正常',NULL) insert into 学⽣values('15',6,'郭靖','⼥','宿州市','退学',NULL) insert into 学⽣ values('16',6,'陈欣然','⼥','宿州市','正常',NULL) insert into 学⽣values('17',6,'李然','男','郑州市','退学',NULL) insert into 学⽣ values('18',7,'王凯','男','宿州市','正常',NULL) insert into 学⽣values('19',7,'宫正','男','郑州市','退学',NULL) insert into 学⽣ values('20',7,'翟丹丹','⼥','北京市','正常',NULL) insert into 学⽣values('21',8,'陈瑞','⼥','郑州市','正常',NULL) insert into 学⽣ values('22',8,'郝壮','男','北京市','正常',NULL) insert into 学⽣values('23',8,'李毅','男','北京市','正常',NULL) insert into 学⽣ values('24',9,'吴建','男','界⾸市','休学',NULL) insert into 学⽣values('25',9,'习武','男','界⾸市','正常',NULL) insert into 学⽣ values('26',9,'张翠翠','⼥','界⾸市','休学',NULL) insert into 学⽣values('27',10,'郑⾬薇','⼥','芜湖市','正常',NULL)insert into 学⽣ values('28',10,'谌敏','⼥','芜湖市','退学',NULL) insert into 学⽣ values('29',10,'徐松','男','合肥市','休学',NULL) insert into 学⽣ values('30',3,'朱茵','⼥','合肥市','正常',NULL)--在课教师中插⼊10条记录insert into 教师 values('1',1,'赵燕','⼥','教授','汽车与智能',3200.00)insert into 教师 values('2',2,'李敏','⼥','教授','电⼦应⽤',3400) insert into 教师 values('3',3,'王艳艳','⼥','讲师','机械应⽤',2900) insert into 教师 values('4',4,'谭维维','⼥','副教授','园林园艺',3600)insert into 教师 values('5',5,'李佳薇','⼥','副教授','素描',2500) insert into 教师 values('6',6,'杨会伟','男','讲师','⼈⽂',4000) insert into 教师 values('7',7,'王丽玲','⼥','副教授','万有引⼒',3800)insert into 教师 values('8',8,'陶维成','男','教授','英语',3250) insert into 教师 values('9',9,'万振宇','男','助教','乒乓球',2600) insert into 教师 values('10',10,'⽅梁⾬','⼥','助教','商代',4500) --在课程表中插⼊10条记录insert into 课程 values('1','汽车智能与应⽤','1',16,'公共基础') insert into 课程 values('2','模拟电路','2',16,'公共基础')insert into 课程 values('3','器械基础','3',8,'专业基础')insert into 课程 values('4','嫁接技术','4',16,'专业基础')insert into 课程 values('5','素描','5',8,'专业基础')insert into 课程 values('6','⼤学语⽂','6',16,'专业选修') insert into 课程 values('7','万有引⼒','7',8,'任意选修') insert into 课程values('8','⼝语','8',16,'专业选修') insert into 课程 values('9','乒乓球','9',16,'任意选修') insert into 课程 values('10','商代渠道','10',8,'专业基础') --在选课表中插⼊10条记录insert into 选课 values('1','1',100)insert into 选课 values('1','2',99)insert into 选课 values('1','3',95)insert into 选课 values('1','4',89)insert into 选课 values('1','5',89)insert into 选课 values('2','6',78)insert into 选课 values('2','7',78)insert into 选课 values('2','8',78)insert into 选课 values('2','9',78)insert into 选课 values('2','10',78)insert into 选课 values('3','1',98)insert into 选课 values('3','2',98)insert into 选课 values('3','3',98)insert into 选课 values('3','4',98)insert into 选课 values('3','5',98)insert into 选课 values('4','1',90)insert into 选课 values('4','2',90) insert into 选课 values('4','3',90) insert into 选课 values('4','5',90) insert into 选课values('4','4',90) insert into 选课 values('5','5',69) insert into 选课 values('5','6',69) insert into 选课 values('5','7',69) insert into 选课 values('5','8',69) insert into 选课 values('5','9',69) insert into 选课 values('6','1',75) insert into 选课 values('6','2',75) insert into 选课 values('6','3',75) insert into 选课 values('6','4',75) insert into 选课 values('6','5',75) insert into 选课 values('7','7',65) insert into 选课 values('7','8',65) insert into 选课 values('8','9',65) insert into 选课 values('9','7',65) insert into 选课values('10','7',65) insert into 选课 values('8','8',65) insert into 选课 values('9','8',65) insert into 选课 values('10','8',65) --删除操作DELETE 选课 WHERE 学号='1'DELETE 学⽣ WHERE 状态 = '退学'--更新操作UPDATE 选课 SET 成绩=89 WHERE 课程编号 ='6'UPDATE 教师 SET 职称 = '教授' WHERE 职称='助教'三、实验分析与⼩结(⼀)实验分析1.使⽤INSERT命令完成记录的插⼊操作,要求分别设计若⼲违反实体完整性、参照完整性和⽤户⾃定义完整性和⽤户定义完整性约束的插⼊操作1>违反实体完整性规则即主关键字为空或重复。
实验十用户自定义完整性
1、实验目的
学习用户自定义约束,并实践用户自定义完整性,利用SQL语言用短语NOT NULL、UNIQUE、CHECK保证用户定义完整性。
2、实验内容(建议将表改成Teachers,相应属性以T开始命名,如Tname)建
立Teacher表。
建立表Teacher,注意跟前面所建立的Teacher区分开来,
(1)创建Worker,Teacher表,并自定义2个约束U1以及U2,其中U1规定
Wname Tname字段唯一,U2规定Wage, Tage (级别)字段的上限是28。
(2)在Worker, Teacher表中插入一条合法记录。
(3)演示插入违反U2约束的例子,U2规定元组的Wage,Tage属性的值必须
<=28。
(4)去除U2约束。
(5)重新插入(3)中想要插入的数据,由于去除了U2约束,所以插入成功。
(6)创建规则Rule_sex,规定插入或更新的值只能是M或F,并绑定到Worker
Teacher的Wsex Tsex字段。
(7)演示违反规则Rule_sex的插入操作。
3、实验步骤
以系统管理员或sa帐号登录到SSMS,在新建查询窗口下输入如下命令,运行并观察结果。
(1) 在新建查询窗口中输入如下SQL语句:
USE University_Mis
CREATE TABLE Teacher(
Tno CHAR(5),
Tname CHAR(8) CONSTRAINT U1 UNIQUE,
Tsex CHAR(1),
Tage INT CONSTRAINT U2 CHECK (Tage<=28),
Tdept CHAR(20),
CONSTRAINT PK_Teacher PRIMARY KEY(Tno))
(2) 在新建查询窗口中输入如下SQL语句
USE University_Mis
INSERT INTO Teacher (Tno, Tname,Tsex, Tage,Tdept) V ALUES(‘T01’,’李用’,’M’,14,’后勤部’)
SELECT * FROM Teacher
(3) 在新建查询窗口中输入如下SQL语句
USE University_Mis
INSERT INTO Teacher (Tno, Tname,Tsex, Tage,Tdept) Values(‘T02’,’王勇’,’M’,38,’后勤部’)
SELECT * FROM Teacher
(4) 在新建查询窗口中输入如下SQL语句
USE University_Mis
ALTER TABLE teacher DROP U2
(5) 在新建查询窗口中输入如下SQL语句
USE University_Mis
INSERT INTO Teacher (Tno, Tname,Tsex, Tage,Tdept) V ALUES(‘T02’,’王勇’,’M’,38,’后勤部’)
SELECT * FROM Teacher
(6) 在新建查询窗口中输入如下SQL语句
USE University_Mis
Go
CREATE RULE Rule_sex AS @Value IN (‘F’,’M’)
Go
EXEC SP_bindrule Rule_sex, ‘Teacher.[Tsex]’;
(7) 在新建查询窗口中输入如下SQL语句
USE University_Mis
INSERT INTO Teacher V ALUES(‘T03’,’黄号’,’1’,’25’,’后勤部’)
4、实验要求
(1) 实验之前请细细阅读实验总体要求与说明指导书
(2 ) 在SQL Server 2005或2008的SSMS环境中,完成以上实验(1)-(7)步所有SQL 数据定义操作,并将其中奇数步骤的操作窗口剪贴到实验报告中。