SQL Server实验4:数据完整性与视图
SQLServer数据完整性

我们在学习数据库的过程中,经常会听到两个概念:数据冗余和数据完整性。
数据冗余是指数据库中存在一些重复的数据,数据完整性是指数据库中的数据能够正确反应实际情况,我们说,为了性能着想,数据库中允许有一些数据冗余,但是要保持数据的完整性。
数据完整性=可靠性+准确性,这里我们要清楚以下几点:•数据存放在表中•“数据完整性的问题大多是由于设计引起的”•创建表的时候,就应当保证以后数据输入是正确的——错误的数据、不符合要求的数据不允许输入本质而言,保证数据的完整性= 实施完整性约束完整性包括1.实体完整性a)数据行不能存在重复2.域完整性a)实现了对输入到特定列的数值的限制3.引用完整性a)要求子表中的相关项必须在主表中存在b)如果建立了主表和子表的关系,则:i.子表中的相关项目的数据,在主表中必须存在;ii.主表中相关项的数据更改了,则子表对应的数据项也应当随之iii.更改;iv.在删除子表之前,不能够删除主表;4.自定义完整性实际上,SQL Server创建表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性等)保证的过程。
创建表包括选择字段名称、数据类型、定义是否为空、设置默认值、主键和外键关系、检查约束等。
表中没有合适的列作为主键,可以创建标识列。
SQL Server中存在五种约束:•约束的目的:确保表中数据的完整型•常用的约束类型:–主键约束(Primary Key Constraint):要求主键列数据唯一,并且不允许为空–唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值。
–检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束–默认约束(Default Constraint):某列的默认值,如我们的男性学员较多,性别默认为“男”–外键约束(Foreign Key Constraint):用于两表间建立关系,需要指定引用主表的那列添加约束的语法:ALTER TABLE 表名ADD CONSTRAINT 约束名约束类型具体的约束说明❑约束名的取名规则推荐采用:约束类型_约束字段❑主键(Primary Key)约束:如PK_stuNo❑唯一(Unique Key)约束:如UQ_stuID❑默认(Default Key)约束:如DF_stuAddress❑检查(Check Key)约束:如CK_stuAge❑外键(Foreign Key)约束:如FK_stuNo下面我们来给前面建立的学员信息表stuInfo添加约束:/*添加主键约束(stuNo作为主键)*/ALTER TABLE stuInfo ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo)/*添加唯一约束(因为每人的身份证号全国唯一)*/ALTER TABLE stuInfo ADD CONSTRAINT UQ_stuID UNIQUE (stuID)/*添加默认约束(如果地址不填,默认为“地址不详”)*/ALTER TABLE stuInfo ADD CONSTRAINT DF_stuAddress DEFAULT ('地址不详') FOR stuAddress/*添加检查check约束,要求年龄只能在15-40岁之间*/ALTER TABLE stuInfo ADD CONSTRAINT CK_stuAgeCHECK(stuAge BETWEEN 15 AND 40) /*添加外键约束(主表stuInfo和从表stuMarks建立关系,关联字段为stuNo)*/ALTER TABLE stuMarks ADD CONSTRAINT FK_stuNo FOREIGN KEY(stuNo) REFERENCES stuInfo(stuNo)GO如果错误地添加了约束,我们还可以删除约束删除约束的语法ALTER TABLE 表名DROP CONSTRAINT 约束名例如:删除stuInfo表中地址默认约束ALTER TABLE stuInfo DROP CONSTRAINT DF_stuAddressOK,有了完整性约束,数据完整性就有了保障,数据库中的数据也就能够正确地反应实际情况了。
数据库原理-理论教学-SQLServer数据完整性

SQL Server数据完整性一、完整性的概念之所以要引入数据完整性是为了在数据的添加、删除、修改等操作中不出现数据的破坏或多个表数据不一致数据完整性是指存储在数据库中的数据正确无误并且相关数据具有一致性二、完整性的类型1)实体完整性实体:表中的记录,一个实体就是指表中的一条记录。
实体完整性:在表中不能存在完全相同的记录,且每条记录都要具有一个非空且不重复的主键值。
实现实体完整性的方法:设置主键、惟一索引、惟一约束2)域完整性域完整性:向表中添加的数据必须与数据类型、格式及有效的数据长度相匹配。
实现域完整性的方法:CHECK约束、外键约束、默认约束、非空定义、规则以及在建表时设置的数据类型3)参照完整性参照完整性:又称为引用完整性。
是指通过主键与外键相联系的两个表或两个以上的表,相关字段的值要保持一致。
实现实体完整性的方法:外键约束4)用户定义的完整性用户定义的完整性:是根据具体的应用领域所要遵循的约束条件由用户自己定义的特定的规则。
三、约束的类型约束:SQL Server提供的自动强制数据完整性的一种方法。
它通过定义列的取值规则来维护数据的完整性。
常用约束:NOT NULL,CHECK、UNIQUE、PRIMARY KEY、FOREIGN KEY、D EFAULT1)主键约束:在表中定义一个主键来惟一标识表中的每行记录特点:每个表中只能有一个主键,主键可是一列,也可是多列;主键不能为空;主键值不能重复2)UNIQUE约束:它主要用来限制表的非主键列中的值不能重复。
特点:一个表中可以定义多个惟一约束3)NOT NULL约束:它用来设定某列值不能为空。
特点:如果设定某列为NOT NULL,则在添加记录时,则此列必须插入数据。
4)CHECK约束:它使用逻辑表达式来限制表中的列可以接受哪些数据值。
例如:成绩值应该在0-100之间,则可以为成绩字段创建CHECK约束,使取值在正常范围内。
5)DEFAULT约束:它为表中某列建立一个默认值,当为表中添加记录时,如果没有提供输入值,则自动以默认值赋给该列。
实验四 SQL_Serve的数据更新、视图

实验四SQL Serve的数据更新、视图一、实验目的:1.掌握采用Transact-SQL实现嵌套查询。
2.掌握采用Transact-SQL实现数据更新。
3.掌握采用Transact-SQL实现视图的定义、删除、查询与更新。
二、实验内容及截图按照《数据库系统概论》P82页中的学生课程数据库和P75页中的SPJ数据库完成以下操作:(一)数据更新--1) 插入一个学生:张红,女,,信息系,岁insert into STUDENTvalues('200215135','张红','女',20,'CS')select*from STUDENT--2) 插入一个选课录:成绩未定insert into SCvalues(200215135,1,null)--3) 将计算机系所有学生的年龄加岁update STUDENTset Sage=Sage+1where Sdept='CS'1)--4) 删除所有200215130学生的选课记录delete from scwhere Sno=200215130--5) 删除所有姓张的同学的信息delete from SCwhere Sno in(select Sno from studentwhere Sname LIKE'张%')delete from studentwhere Sname LIKE'张%'6)请自行设计案例对学生-课程数据库的数据更新,并观察是否有违反数据的完整性约束。
update studentset Sno='200215124'where Sname='王敏'没有(二)视图--1)创建一个学生成绩统计视图,包括学号,姓名,选课门数,平均分,最高分,最低分create view vi_studentasselect Sname,tempDT.*from STUDENT inner join(select Sno,COUNT(1) CNT,MAX(GRADE) MAXGrade,MIN(grade) minGrade,A VG(grade) avgGradefrom Sc GROUP BY SNO) tempDTon tempDT.Sno=STUDENT.Snogoselect*from vi_student--①查询成绩高于自己平均成绩的选课记录select SC.*from SC left join vi_studenton SC.sno=vi_student .snowhere grade>avgGrade--②查询每个同学获得最高分的选课记录select SC.*from SC left join vi_studenton SC.sno=vi_student .snowhere grade=MaxGrade3)--请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。
实验四SQLServer的视图、存储过程和触发器

实验四SQLServer的视图、存储过程和触发器实验四 SQL Server的视图、存储过程和触发器一、实验目的本实验主要了解SQL Server视图、存储过程和触发器的基本概念和使用方法。
通过本实验,读者将掌握视图的创建、修改和删除的操作方法和T-SQL语句;学会在SSMS中创建、修改、执行和删除存储过程的操作及相关的T-SQL语句;掌握触发器的创建、修改和删除的操作方法和T-SQL语句。
二、实验环境●Microsoft SQL Server Managerment Studio●Book数据库三、实验内容1. 创建视图view_book1,使其包含预订数量最高的20%的教材信息。
要求显示教材代号(BookCode)、教材名称(BookName)、ISBN号(ISBNCode)和出版社名称(Publisher)。
2. 创建视图view_book2,查询预订了教材名中含有“程序”一词的教师姓名(T eacherName)和所在学院名称(AcadName)。
3. 创建视图view_book3,使其包含“学院名称(AcadName)”、“教师姓名(TeacherName)”、“预订书名(BookName)”、“是否领走(TakeAway)”。
4. 创建存储过程proc_book1,查询指定学院的教师预订教材的情况。
要求显示教材名称(T_ame)、教师姓名(T_erName)和教材数量(T_okNum+T_okNum)。
(1) 查询条件为:学院代码(2) 查询条件为:学院名称5. 创建存储过程proc_book2,查询指定教材的预订数量。
6. 创建添加教材信息的存储过程proc_book3。
7. 创建存储过程proc_book4,查询指定教材名称和出版社名称的教材所对应的教材代号和库存。
8. 创建触发器tri_book1,在对T_Teacher表进行插入、修改和删除记录时,都会自动显示表中的内容。
9. 创建触发器tri_book2,当修改T_Teacher表中的TeacherCode字段值时,该字段在T_BookOrder表中的对应值也作修改。
新SQL——SERVER实验练习答案

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 的信息。
SQL-04数据完整性

练习4 约束、默认和规则4.1上机目的1、练习使用企业管理器和T-SQL命令在查询分析器中创建表,管理表,熟悉并逐步掌握其中的步骤和对应语句。
2、在企业管理器和查询分析器中练习约束、规则、默认的设置,通过练习逐步掌握约束的种类,作用和创建方法3、了解数据库关系图的作用,掌握数据库关系图的建立方法。
4.2 上机练习预备知识点4.2.1 数据完整性1、数据完整性是指数据库中数据的正确性和一致性,是衡量数据库质量的一个重要标准。
2、数据完整性包括:实体完整性、区域完整性、参照完整性、自定义完整性。
①实体完整性:确保数据库中所有实体的唯一性,也就是不应有完全相同的数据记录。
实现方法:设定主键、设定唯一键、设定唯一索引、设置标识②区域完整性:要求数据表中的数据位于某一个特定的允许范围内。
实现方法:设定默认值、设定核查约束、设定外键约束、设定规则③参照完整性:用来维护相关数据表之间数据一致性的手段,避免因一个数据表的记录改变而造成另一个数据表内的数据变成无效的值。
实现方法:设定外键约束、核查约束、触发器和存储过程④用户自定义完整性:由用户根据实际应用中的需要自行定义。
实现方法:规则、触发器、存储过程等。
4.2.2 约束1、实现数据完整性最重要的方法,主要目的是限制输入到表中的数值的范围。
字段级约束:是数据表中字段定义的一个部分,只能应用于数据表中的一个字段。
如:为性别设置核查约束,只能输入“男”或者“女”,不能输入其他内容。
数据表级约束:独立于数据表的字段定义之外,它可以应用于数据表中的多个字段。
如将表中的几个字段组合设置为主键。
2、约束的种类:①主键(PRIMARY KEY)约束唯一标识表中的每一行的列或者列的组合,可以强制表的实体完整性。
主键不允许为空。
②外键(FOREIGN KEY)约束若列或者列的组合不是本表的关键字,而是另一个表的关键字,则称这些列或者列的组合是外键。
一般表与表之间通过主键和外键进行连接,通过它可以强制表与表之间实现参照完整性。
SQLServer第4章(第二部分)设计数据完整性

REFERENCES 参照主键表[ (参照列) ] [ ON DELETE CASCADE | ON UPDATE CASCADE ][,...])
说明:语法格式1定义单列外键约束 。ON DELETE CASCADE表示级联删除,即父表中删除被引用行时, 也将从引用表中删除引用行; ON UPDATE CASCADE表示级联更新,即父表中更新被引用行时, 也将在引用表中更新引用行。
第4章 设计数据的完整性
1数据完整性 实体完整性 域完整性 参照完整性 自定义完整 性 完整性实现 2使用约束 3默认技术 4使用规章 5标识列 6实训 7小结
1数据完整性的概念〔4〕
➢1.4用户定义完整性 〔User- defined Integrity〕
这是由用户定义的完整性。 用户定义完整性可以定义不属于其他 任何完整性分类的特定业务规章
➢ 解除绑定默认
➢ 删除默认
4使用规章
➢ 创立规章 ➢ 绑定规章
➢ 解除绑定规章
➢ 删除规章
5使用IDENTITY〔标识符〕列 ➢ 创立IDENTITY列 ➢ 使用 IDENTITY函数
第4章 设计数据的完整性
1数据完整性 2使用约束 3默认技术 4使用规章 5标识列 6实训 7小结
➢定义 ➢类型
➢ [NOT ]NULL〔非空〕约束
2 使用约束实施数据完整性 ➢ PRIMARY KEY〔主键〕约束
➢ UNIQUE〔惟一性〕约束 ➢ CHECK〔检查〕约束 ➢ DEFAULT〔默认〕约束 ➢ FOREIGN KEY〔外键〕约束
第4章 设计数据的完整性
SQLServer的数据库完整性和实现方法

2015
数据库的完整性:数据完整性就是指 存储在数据库中的数据正确无误并且相关 数据具有一致性。数据库中是否存在完整 的数据关系到数据库系统能否真实的反映 现实世界。它是衡量数据库中数据好坏的 一种标志,是确保正确的数据被存放在正 确的位置的一种手段。例如:学校的学生 学号必须是唯一的;性别只能为男或女; 学生所在的系必须是学校已开设的系等。
触发器的用途是维护行级数据的完整性,它不能返回结果集。与CHECK 约束相比,触发器能强制实现更加复杂的数据完整性,能执行操作或 级联操作,能实现多行数据间的完整性约束,能维护非正规化的数据。
you
放映结束 感谢各位观看!
谢 谢!
让我们共同进步
2.数据完整性的两种方式
(1)声明数据完整性 声明数据库完整性通过在对象定义、系统本身自动 强制来实现。声明数据完整性包括各种约束、默认 和规则。 (2)过程数据完整性 过程数据完整性通过使用脚本语言定义,系统在执 行这些语言时,强制完整性实现。过程数据完整性 包括触发器和存储过程等。
3.实现数完整性的具体方法
默认和规则与约束相比,功能较低但开支大。所以,如果默认和规则 可以使用约束方法表示,要尽可能采用约束数据完整性方法处理。
(4)触发器
触发器是一个特殊的存储过程。在创建触发器时通过CREATE TRIGGER 语句定义触发器对应的表、执行的事件和触发器的指令。当发生事件 后,会引发触发器执行,通过执行其指令,保证数据完整性。
1.数据库完整性的分类
(1)域完整性
域完整性为列级和元组级完整性。它为列或列组指定一个有效的数据 集,并确定该列是否允许为空。域完整性要求向表中指定列输入的数 据必须具有正确的数据类型、格式以及有效的数据范围。实现域完整 性的方法主要有CHECK约束、外键约束、默认约束、非空定义、规则以 及在建表时设置的数据类型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
云南大学软件学院
实验报告
课程:数据库原理与实用技术任课教师:张艳实验指导教师(签名):
姓名:学号:专业:日期:成绩:
SQL Server 实验4 数据完整性与视图
4-1 数据完整性
一、实验目的
(1)理解数据完整性的概念与分类
(2)掌握规则、默认的使用方法。
(3)掌握用户自定义完整性的使用。
二、实验内容
1、创建规则(用语句方法创建)
(1)创建入学日期规则“Enter_University_date_rule”,假定该学校于1923年4月30日创建。
要求:入学日期必须大于等于学校创建日期,并且小于等于当前日期
(2)创建学生年龄规则“Age_rule”。
要求:学生年龄必须在15~30岁之间
(3)创建学生性别规则“Sex_rule”。
要求:性别只能为“男”或“女”
(4)创建学生成绩规则“Score_rule”。
要求:学生成绩只能在0~100之间
2、使用存储过程对规则进行绑定与解除绑定操作
(1)修改“学生管理数据库”中的“学生情况表”,添加属性“入学日期”。
将规则Enter_University_date_rule与入学日期进行绑定
(2)在该表中插入数据记录
(3)解除绑定,再次插入该数据,查看执行结果。
3、用语句的方法查看规则
4、删除规则Enter_University_date_rule
5、创建默认(会用图形和语句方法创建)
(1)创建默认时间“Time_default”为当前系统时间
(2)创建默认入学年龄“Age_default”为18岁
6、使用存储过程对默认进行绑定与解除绑定操作
(1)将默认对象“Time_default”和“Age_default”与上表中的“入学日期”和“年龄”进行绑定,并插入数据
(2)解除绑定,再次插入该数据,查看执行结果。
7、用图形和语句的方法查看默认
8、删除默认
9、创建声明式默认:在创建表的过程中创建声明式默认
(1)创建表“default_example”,表中包含字段pid、name、sex、age。
要求设定sex的默认值为“男”、age的默认值为18。
查看执行结果。
(2)在表中增加新的默认,将编号默认为100。
插入一条记录,查看执行结果
(3)修改默认值
例如:将性别默认值更改为“女”
Alter Table default_example
Replace sex default “女”
请将年龄默认值更改为19。
10、创建三张表“学生信息”、“课程”、“选课”,在表中建立相应的主键、外键、惟一值、以及check 约束,要求:学生的年龄必须是两位数,其中第一位是1或2。
删除check 约束
11、完成课后习题[7.12]、[7.15]
7.12
7.15
4-2 视图的创建与使用
一、实验目的
(1)理解视图的概念
(2)掌握创建视图的方法。
(3)掌握用视图管理数据的方法。
二、实验内容
1.创建一个名为stud_view1的视图,从JWGL数据库的学生表中查询出性别为男的所有学生的学号,姓名,性别,班级,家庭住址,入学时间和出生年月。
2.创建一个名为stud_view2的视图,查询出选修了《数据库开发技术》的所有同学的选课信息,包括学号,姓名,成绩。
3.从视图stud_view1中查询出99402班张红的资料。
4.向视图stud_view2中插入一行数据:学号为9940210,姓名为钱丽,成绩为71,结果是什么?
5.修改视图stud_view1,将9940201号同学的性别更改为女。
然后再次查询学生表和视图stud_view1,看结果有何改变,为什么?。