实验8 数据完整性实验
数据控制_实验报告

一、实验目的1. 理解数据控制的基本概念和原理;2. 掌握数据控制技术的应用方法和技巧;3. 培养实际操作能力和分析问题、解决问题的能力。
二、实验环境1. 操作系统:Windows 102. 数据库管理系统:MySQL 5.73. 开发工具:Visual Studio 20194. 实验数据:学生信息表(包括姓名、性别、年龄、班级、成绩等字段)三、实验内容1. 数据库设计2. 数据插入与查询3. 数据更新与删除4. 数据完整性控制5. 数据并发控制四、实验步骤1. 数据库设计(1)创建数据库:打开MySQL,创建一个名为“DataControl”的数据库。
(2)创建表:在“DataControl”数据库中创建一个名为“student”的表,包含以下字段:字段名 | 类型 | 说明--- | --- | ---id | int | 学生ID(主键)name | varchar(50) | 学生姓名gender | varchar(10) | 学生性别age | int | 学生年龄class | varchar(50) | 学生班级score | float | 学生成绩2. 数据插入与查询(1)插入数据:使用SQL语句向“student”表中插入数据。
INSERT INTO student (id, name, gender, age, class, score) VALUES (1, '张三', '男', 20, '计算机科学与技术1班', 90.5);INSERT INTO student (id, name, gender, age, class, score) VALUES (2, '李四', '女', 21, '计算机科学与技术2班', 85.0);INSERT INTO student (id, name, gender, age, class, score) VALUES (3, '王五', '男', 20, '计算机科学与技术3班', 92.0);(2)查询数据:使用SQL语句查询“student”表中的数据。
2016《数据库原理》实验指导书SQL-Server2012

网络数据库技术实验指导书南京工业大学经济与管理学院2017年9月目录实验目的 (2)实验要求 (2)实验环境 (2)实验一、常用数据库管理系统介绍 (3)实验二、SQL Sever 数据库管理系统的基本操作 (10)实验三、基本表的定义 (26)实验四、基本表与删除索引的修改与删除 (30)实验五、条件及统计汇总查询 (35)实验六、数据表连接查询与数据更新操作 (39)实验七、视图的定义、查询与维护 (42)实验八、数据库的完整性实验 (43)实验九、触发器实验 (46)实验十、数据的导出与导入实验 (55)实验十一数据库备份与数据库还原技术 (72)实验十二、数据库用户管理技术 (77)实验十三、数据库综合设计与实现 (77)实验目的数据库原理是一门理论和实践很强的课程。
学生学习这门课程要求掌握两方面内容:数据库设计和上机实践。
因此数据库的实验要围绕这两方面进行。
通过对 Access、SQL Server 数据库管理系统的学习帮助学生巩固和加深理解所学过的理论知识,树立工程的观点和严谨的科学作风,使学生熟练掌握基本的 SQL 语句,熟悉 SQL Server 数据库管理系统的功能、数据管理、应用和开发技术。
熟练使用 SQL 语句创建数据库、表、索引、修改表结构,以及进行数据的查询、更新、定义视图等操作。
掌握 SQL Server 中触发器的创建方法,学会数据的导入和导出操作。
通过实验,培养学生的动手能力以及在实践中发现问题并能及时解决问题的能力,锻炼学生的逻辑思维能力,提高数据库应用开发能力。
为学生毕业后从事计算机应用职业做好必要的准备。
实验要求给出一个现实世界的应用问题要求学生在正确分析问题的基础上,完成以下任务:1、熟悉概念数据库的概念;2、熟悉运用 SQL操纵数据库;3、熟悉 SQL Server数据库管理系统环境,学会用该数据库管理系统创建数据库;4、理解范式的意义,能判断其能达到第几范式。
数据库实验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系统中,定义表的主键可以在创建表的同时定义,也可以给已有的表添加主键。
实验 触发器设计

实验8 触发器设计一、实验目的:通过本实验了解数据库触发器的概念,掌握触发器完整性设计方法。
二、实验原理触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程,由服务器自动激活可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力。
创建触发器语法格式CREATE TRIGGER <触发器名>{BEFORE | AFTER} <触发事件> ON <表名>FOR EACH ROW[WHEN <触发条件>]<触发动作体>触发时间:Before, AFTER触发事件:insert,update, delete删除触发器:drop trigger <触发器名>显示创建触发器脚本>show create trigger <触发器名>>show triggers;三、实验内容及方法实验平台操作系统:win7,数据库管理平台:mysql5.6或者mysql8,实验用数据库:老师提供的数据库脚本TradeDBSQL.txt(一)触发器应用于数据库完整性设计实体完整性-PK参照完整性-FK用户定义完整性1.参照完整性级联约束在订单表Orders(主表)与订单细节表OrderDetails(副表)中实现更新、删除级联是通过下列方式实现的foreign key(OrderID) references Orders (OrderID)on delete cascade on update cascade用下面的更新、删除触发器实现上面的更新、删除级联1)更新级联触发器orderd_updDELIMITER %% /* 用%% 代替; 作为命令结束符*/Create trigger orderd_upd /* 创建触发器名为orderd_upd */after update on Orders /* 在表orders 上建立更新后触发器*/for each row /* 对于每一行*/begin/* 在表orders上更新后自动更新OrderDetails 表*/ update OrderDetails set OrderID = new.OrderID where OrderID=old.OrderID; end %%特别要注意new,old 的区别old 表示更新前的一行记录(for each row)new 表示更新为新的数据的一行记录。
实验五索引和数据完整性

实验五索引和数据完整性1、目的与要求(1)掌握索引的使用方法。
(2)掌握数据完整性的实现方法。
2、实验准备(1)了解索引的作用与分类。
(2)掌握索引的创建方法。
(3)理解数据完整性的概念及分类。
(4)掌握各种数据完整性的实现方法。
3、实验容(1)建立索引。
①使用CREATE INDEX语句创建索引。
A、对YGGL数据库的Employees表中的DepartmentID列建立索引。
在“查询分析器”窗口中输入如下程序并执行。
B、在Employees表的Name列和Address列上建立复合索引。
C、对Department表上的DepartmentName列建立唯一非聚集索引。
【思考与练习】A、索引创建后在对象资源管理器中查看表的索引。
上面分别创建了Employees表和Department表的索引,在对象资源管理器中的表中将相应的表打开,在“索引”中显示该表中建立的索引。
详细结果如上面截图中显示。
B、了解索引的分类情况。
按索引的组织方式能够将索引分为聚集索引和非聚集索引两种类型。
聚集索引将数据行的键值在表排序并存储对应的数据记录,使得数据表物理顺序与索引顺序一致。
非聚集索引完全独立于数据行的结构。
C、使用CREATE INDEX语句能够创建主键吗?D、在什么情况下能够看到建立索引的好处?数据库索引是为了增加查询速度而对表字段附加的一种标识。
数据库的索引并不是只有好处或者只有坏处的。
当我们的数据库足够大,恰当的建立索引就会大大的提高查询搜索的速度;在这里举个反例,像查询性别这种大量重复的字段时候,是否建立索引是没有多大区别的;还有当表数据不是很多的时候建立索引也是没有多大意义的,因为索引也是要占用资源的。
但是当我们数据库非常大时候,经常进行GROUP BY查询时候,若将GROUP BY字段上建立索引就会很大程度上面较少查询搜索所花费的时间。
②使用界面方式创建索引。
使用界面方式在Employees表的PhoneNumber列上创建索引。
数据库原理实验报告-实验三-数据完整性与安全性控制

《数据库原理》实验报告题目:实验三数据完整性与安全性控制学号班级日期2016.10.18一、实验容、步骤以及结果1.利用图形用户界面对实验一中所创建的Student库的S表中,增加以下的约束和索引。
(18分,每小题3分)(1)非空约束:为出生日期添加非空约束。
非空约束:取消表S中sbirth的勾。
可能需要重建表。
(2)主键约束:将学号(sno)设置为主键,主键名为pk_sno。
设主键:单击数据库Student-->单击表-->单击S-->右击sno-->选择‘修改’命令-->对话框中右击sno-->选择‘设置主键’-->修改主键名为‘pk_sno’-->保存(3)唯一约束:为(sname)添加唯一约束(唯一键),约束名为uk_sname。
唯一约束:单击数据库Student-->单击表-->单击S-->右击sname-->选择‘修改’命令→右击sname-->选择‘索引和键’命令-->打开‘索引和键’框图-->添加-->是否唯一改为‘是’-->名称改为‘us_sname’-->关闭。
(4)缺省约束:为性别(ssex)添加默认值,其值为“男”。
设默认约束:单击数据库Student→单击表→单击S→右击sno→选择‘修改’命令→单击cno-->在默认值栏输入‘男’→保存(5)CHECK约束:为SC表的成绩(grade)添加CHECK约束,约束名为ck_grade,其检查条件为:成绩应该在0-100之间。
(6)外键约束:为SC表添加外键约束,将sno,cno设置为外键,其引用表分别是S表和C表,外键名称分别为fk_sno,fk_cno。
2.在图形用户界面中删除以上小题中已经创建的各种约束,用SQL语言分别重新创建第1题中的(2)-(6)小题.(15分,每小题3分,提示:alter table add constraint)删除约束:单击数据库Student-->表-->单击S-->展开键、约束。
第二章数据库的完整性控制数据完整性(DataIntegrity)是指数据的精确

第二章数据库的完整性控制数据完整性(Data Integrity)是指数据的精确性(accuracy)和可靠性(reliability),它是防止数据库中存在不符合语义规定的数据和防止因错误的信息的输入造成无效操作或错误信息而提出的,保证在一个应用程序更新数据的过程中数据的语义正确性。
数据完整性主要分为三类:实体完整性(Entity Integrity),参照完整性(Referential Integrity)以及用户定义的完整性(User-defined Integrity),其中用户定义的完整性主要包括域完整性(Domain Integrity)和其他自定义完整性。
为维护数据库德完整性,数据库管理系统(DBMS)必须提供一种机制来检查数据库中的数据,看其是否满足语义规定的条件。
这些加在数据库数据上的语义约束条件称为数据库完整性规则,它们作为模式的一部分存入数据库中。
完整性控制是指对数据库进行更新操作,要遵守完整性规则,才能保证数据的语义正确性,防止数据库中存在不符合语义的数据。
目的是在合法用户访问数据库的过程中,保证数据的正确性和准确性。
完整性检查机制是指在DBMS中检查数据是否满足完整性条件的机制。
由DBMS在执行更新动作时,检查是否满足预定的完整性约束条件,来进行控制。
广义的完整性控制包括故障恢复、并发控制。
而一般所指的完整性控制是指基于数据库的完整性约束规则,如:实体完整性、引用完整性等。
SQL中两种主要的数据完整性控制机制是指完整性约束规则的定义和检查以及触发器(Trigger)机制。
完整性控制机制应具有三个功能:(1)定义功能,即提供定义完整性约束条件的机制;(2)检查功能,即检查用户发出的操作请求书否违反了约束条件;(3)如果发现用户操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
完整性控制机制的工作原理基本上分为两类,一种是定义完整性时就立刻进行检查的,例如实体完整性的定义;另外一种是定义完整性之后进行检查的,例如参照完整性的定义。
数据库原理与设计(MySQL版)实验指导

数据库原理与设计(MySQL版)附录A MySQL实验指导实验一数据库和表的管理一、实验目的1. 了解MySQL数据库的逻辑结构和物理结构的特点。
2. 学会使用SQL语句创建、选择、删除数据库。
3. 学会使用SQL语句创建、修改、删除表。
4. 学会使用SQL语句对表进行插入、修改和删除数据操作。
5. 了解MySQL的常用数据类型。
二、实验内容1. 使用SQL语句创建数据库studentsdb。
2. 使用SQL语句选择studentsdb为当前使用数据库。
3. 使用SQL语句在studentsdb数据库创建数据表student_info、curriculum、grade,三个表的数据结构如表1-表3所示。
表1 student_info表结构表2 curriculum表结构列名数据类型允许NULL值主键课程编号char(4) 否是课程名称varchar(50) 是否学分int 是否表3 grade表结构列名数据类型允许NULL值主键学号char(4) 否是课程编号char(4) 否是分数int 是否4. 使用SQL语句INSERT向studentsdb数据库的student_info、curriculum、grade 表插入数据,各表数据如表4-表6所示。
表4 student_info表的数据表6 grade表的数据学号课程编号分数0001 0001 800001 0002 910001 0003 880001 0004 850001 0005 770002 0001 730002 0002 680002 0003 800002 0004 790002 0005 730003 0001 840003 0002 920003 0003 810003 0004 820003 0005 755.使用SQL语句ALTER TABLE修改curriculum表的“课程名称”列,使之为空。
6. 使用SQL语句ALTER TABLE修改grade表的“分数”列,使其数据类型为decimal(5,2)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验8 数据完整性实验(4学时)
1.实验目的
本实验的目的是通过实验使学生加深对数据完整性的理解,学会创建和使用触发器。
2.实验内容
本实验的内容为:
使用SQL设计触发器,通过SQL Server企业管理器定义它们。
1.具体完成下面例题:利用触发器来保证学生选课库中选课表的参照完整性,以维护其外码与参照表中的主码一致。
CREATE TRIGGER SC_inserted ON 选课
FOR INSERT
AS IF(SELECT COUNT(*)
FROM 学生,inserted,课程
WHERE 学生.学号= inserted.学号AND inserted.课程号= 课程.课程号)=0 ROLLBACK TRANSACTION
代码:
截图:
2.把课件第5章中卷烟数据库及其触发器的例子在Sql server中完成。
建立卷烟库存表代码:
建立卷烟库存表截图:
建立卷烟销售表代码:
建立卷烟销售表截图:
创建触发器[T_INSERT_卷烟库存表]代码:
创建触发器[T_INSERT_卷烟库存表]截图:针对[卷烟库存表],插入测试数据:
创建触发器[T_INSERT_卷烟销售表]代码:
输入数据
3.创建一个规则,使成绩大于等于零。
并将其绑定到成绩列上。
规则代码:
规则截图:
绑定代码:
绑定截图:
4.创建一个默认值,并绑定到学分列上,使学分默认为4个学分。
默认值代码:
默认值截图:
绑定代码:
绑定截图:
5.建立一个update触发器,当更新sc表中的score列时,触发器检查成绩是否提高10%。
如果成绩超过了10%,将以ROLLBACK语句复原触发器和调用触发器语句,并打印“成绩升幅太大,更新失败!”,否则,打印“成绩更新成功!”。
代码:
截图:
检验:
3.实验步骤
1、在企业管理器中创建触发器
1)在企业管理器中,由服务器开始逐步扩展到触发器所属表的数据库(本例为学生选课数据库),打开表文件夹,在表窗口中用鼠标右击触发器所属的表(本例为选课表)。
2)在弹出菜单上选择“所有任务”“管理触发器”项,则弹出如图所示的触发器属性对话框。
图触发器属性对话框
如果要新建触发器,在文本[T]的文本框中输入创建触发器的SQL语句(见实验内容),单击“检查语法”按钮进行语法的检查,检查无误后,单击确定按钮。
3)如果要修改触发器,则在名字弹出项中选择要修改的触发器名(本例为SC_inserted),然后在文本[T]的文本框中对已有的内容进行修改,检查无误后单击“确定”按钮。
4)如果要删除触发器,则在名字弹出项中选择要删除的触发器名(本例为SC_inserted),并检查文本[T]的文本框中的内容,看是否选得正确,最后单击“删除”按钮。
2、验证触发器
1)在企业管理器中,由服务器开始逐步扩展到触发器所属表的数据库(本例为学生选课数据库)。
此时,可在选课表中输入一条记录(学号:’96001’,课程号:’C8’,成绩:88)。
显然,这条记录是不符合参照完整性的。
通过企业管理器输入时,会出现错误提示,违反了数据库的约束(如果约束C5和C6同时存在的话)。
2)如果约束C5和C6存在,则删除之(参见实验一)
3)打开SQL查询分析器,输入语句“INSERT INTO 选课V ALUES(‘96001’,‘C8’,88)”,查看执行结果。
删除触发器(本例为SC_inserted),重复步骤3。
4.收获体会:。