实验一创建数据库及关系表数据完整性约束
- 格式:docx
- 大小:22.90 KB
- 文档页数:4
数据库中的数据完整性与约束数据完整性是数据库设计和管理中的重要概念,它确保数据库中存储的数据准确、一致、可靠。
为了保证数据的完整性,数据库引入了各种约束,限制数据的输入和操作,以避免对数据库造成不一致或错误的影响。
一、实体完整性实体完整性是指数据库中的实体必须具有唯一性。
在数据库中,每个记录都代表一个实体,通过定义主键来确保每个实体都能唯一标识。
主键是一个或多个字段的组合,它们的值在整个表中必须唯一。
通过主键约束,确保了每个实体在数据库中的唯一性。
二、域完整性域完整性是指数据库中的每个字段都必须满足一定的约束条件。
常见的域完整性包括数据类型、长度、格式等方面的限制。
例如,在一个存储用户信息的表中,手机号字段的数据类型必须是数字,长度必须是11位,以保证数据的有效性。
三、参照完整性参照完整性是指两个表之间的引用关系必须满足一定的约束条件。
在关系型数据库中,通过外键约束可以实现参照完整性。
外键是一种引用另一个表中主键的字段,用于建立表之间的关联关系。
通过外键约束,确保了数据在引用表和被引用表之间的一致性。
四、用户定义的完整性用户定义的完整性是指根据业务需求,用户对数据库添加的约束。
例如,用户可以定义检查约束来限制某个字段的取值范围,确保数据的合法性。
用户还可以定义触发器来在插入、更新、删除数据时执行一些特定操作,从而保证数据的一致性。
综上所述,数据库中的数据完整性与约束是确保数据准确性和一致性的重要手段。
通过实体完整性、域完整性、参照完整性和用户定义的完整性等约束,可以有效地保证数据库中存储的数据的有效性和可靠性。
数据库管理员和开发人员在设计和管理数据库时,应合理利用这些约束,以确保数据的完整性。
数据库中数据完整性与约束的设计与实现要点数据完整性和约束是数据库设计和实现中非常重要的方面。
通过定义和实施适当的数据完整性约束,可以确保数据库中的数据准确、一致和可靠。
本文将针对数据库中数据完整性和约束的设计与实现要点进行探讨。
1. 数据库中的数据完整性数据完整性是指数据的正确性和一致性。
在数据库中,数据完整性可以通过以下几种方式来保证:1.1 主键约束主键是一个唯一标识数据库表中每一行数据的字段(或字段组合)。
通过为每个表选择合适的主键并将其定义为主键约束,可以确保每一行数据的唯一性。
1.2 外键约束外键用于关联两个表,它可以用来确保表之间的关系的正确性。
通过为引用外键的表添加外键约束,可以防止在关联的表中插入无效的数据,从而维护数据的一致性。
1.3 唯一约束唯一约束用于确保某个字段或一组字段的唯一性。
它可以防止在同一表中插入具有相同值的字段值,从而保持数据的一致性。
1.4 非空约束非空约束用于确保某个字段不为空。
通过将非空约束应用于必填字段,可以防止插入丢失重要数据的空值。
2. 数据库中的数据约束数据约束是一种用于约束数据值范围、格式和类型的方法。
它可以保证数据库中的数据满足预定义的规则和要求。
2.1 默认约束默认约束用于为字段提供默认值。
当插入新行时,如果未给定该字段的值,则默认值将自动应用。
2.2 检查约束检查约束用于对字段的值进行条件限制。
通过定义检查约束,可以确保插入到表中的数据满足指定的条件。
2.3 唯一约束如前所述,唯一约束可用于确保字段或字段组合的唯一性。
2.4 外键约束外键约束不仅用于维护表之间的一致性,还可以通过引用被引用表中的主键来保持数据的完整性。
3. 数据库中的数据完整性和约束的实现要点为了实现数据的完整性和约束,需要注意以下几个重要的实现要点:3.1 合理选择主键选择合适的主键非常重要。
主键应该是唯一的、稳定的并且不可更改的。
设计时应该考虑主键的用途和特性,同时避免过度依赖可能发生变化的字段。
经济管理学院财务管理专业协作者______________ 教师评定_____________实验题目建立表和定义完整性约束、数据操作一、实验目的与实验方法本实验课程的目的:本实验课程的实验方法:二、实验要求1.用CREATE DATABSE命令建立数据库2.用CREATE SCHEMA命令创建模式(自己命名模式名称)3.在定义的模式下,参照教材内容,使用SQL语言创建教材P43—P44面的样本数据库及定义完整性约束4.使用Insert命令完成记录的插入操作,要求分别设计若干违反实体完整性、参照完整性和用户自定义完整性的插入操作,并分析原因。
三、实验结果和数据1.用CREATE DATABSE命令建立数据库2.用CREATE SCHEMA命令创建模式(自己命名模式名称)3.在定义的模式下,参照教材内容,使用SQL语言创建教材P43—P44面的样本数据库及定义完整性约束4.使用Insert命令完成记录的插入操作,要求分别设计若干违反实体完整性、参照完整性和用户自定义完整性的插入操作,并分析原因。
违反实体完整性:违反参照完整性:在执行插入操作时,系统会自动计算院系系列值是7,而院系列参照院系表的编号值,此时在院系表中找不到编号为7的院系。
所以插入操作失败。
违反用户自定义完整性:结果是违反了unique约束,因为院系表名称不允许重复,而名称为“经济管理学院”的院系已经存在,所以不成功。
四、问题与讨论在创建的过程中没有注意括号是用英文括号还是中文括号,所以出现了错误。
应该使用英文括号的。
在同一个数据库中是不能同时创建两个相同的对象的。
心得体会:数据库是一门很难学的课程,而且,我在平时比较少关注这方面的东西,所以,我在做这个实验的时候就觉得十分的困难。
很多的时候我都需要别人的帮助。
我是一个比较粗心的人,因此,我在做这个实验的时候没有留意输入的时候要用英文符号,要加空格。
所以,我总是出现错误,让我觉得很烦恼。
实验名称:数据完整性验证实验实验日期:2023年4月10日实验地点:XX大学计算机实验室实验目的:1. 了解数据完整性的概念和重要性。
2. 掌握数据完整性验证的方法和工具。
3. 提高对数据质量控制和数据管理的认识。
实验原理:数据完整性是指数据的准确、一致和可靠。
在数据管理过程中,数据完整性是保证数据质量的基础。
数据完整性验证是指通过各种方法对数据进行检查,确保数据的准确性和一致性。
实验器材:1. 实验计算机:一台配置较高的计算机,用于运行数据完整性验证工具。
2. 数据库管理系统:如MySQL、Oracle等,用于存储实验数据。
3. 数据完整性验证工具:如SQL Profiler、DataGrip等,用于检测数据完整性问题。
实验步骤:1. 数据准备(1)创建一个数据库,并在数据库中创建一个表,用于存储实验数据。
(2)向表中插入一些数据,包括正常数据和异常数据。
2. 数据完整性验证(1)使用SQL Profiler工具对数据库进行数据完整性验证。
(2)在SQL Profiler中配置监控参数,如监控类型、监控对象等。
(3)启动SQL Profiler,运行数据库操作,如插入、更新、删除等。
(4)观察SQL Profiler的输出结果,检查数据是否发生异常。
3. 结果分析(1)分析SQL Profiler的输出结果,找出数据完整性问题。
(2)根据问题类型,提出解决方案。
实验结果:1. 数据完整性问题(1)在插入异常数据时,发现部分数据未满足数据类型约束。
(2)在更新数据时,发现部分数据未满足唯一性约束。
2. 解决方案(1)针对数据类型约束问题,修改数据类型,确保数据满足约束条件。
(2)针对唯一性约束问题,修改数据,确保数据满足唯一性条件。
实验结论:1. 数据完整性验证对于保证数据质量至关重要。
2. 使用SQL Profiler等工具可以有效检测数据完整性问题。
3. 通过数据完整性验证,可以及时发现并解决数据质量问题,提高数据管理水平。
实验创建数据库表与约束
一、实验目的
1、掌握创建数据库表的方法;
2、学会设置表的主键、外键和建立表之间的关系;
3、学会为表增加约束
二、实验内容
1、创建“StudentDB”数据库,并在数据库中创建三个表:课程表Lessons,学生表Students,成绩表Scores。
各表主要字段如下图所示:
Students:
Lessons:
Scores:
2、设置上述三个表的主键。
建议:Students用“sno”做主键,Lessons用“lno”做主键,Scores用(sno,lno)做主键。
3、分别打开三个表,输入记录数据。
4、为表增加约束:重要列非空,性别sex为“男”或“女”,学分credit在1到5之间,成
绩score在0到100之间。
5、为Scores表设置外键sno和lno,建立三个表之间的主外键关系,并创建数据关系图“guanxi1”。
数据库实验报告姓名学号目录一.实验标题:2二.实验目的:2三.实验内容:2四.上机软件:3五.实验步骤:3(一)SQL Server 2016简介3(二)创建数据库 4(三)创建数据库表 7(四)添加数据17六.分析与讨论: 19一.实验标题:创建数据库和数据表二.实验目的:1.理解数据库、数据表、约束等相关概念;2.掌握创建数据库的T-SQL命令;3.掌握创建和修改数据表的T-SQL命令;4.掌握创建数据表中约束的T-SQL命令和方法;5.掌握向数据表中添加数据的T-SQL命令和方法三.实验内容:1.打开“我的电脑”或“资源管理器”,在磁盘空间以自己的姓名或学号建立文件夹;2.在SQL Server Management Studio中,使用create database命令建立“学生-选课”数据库,数据库文件存储在步骤1建立的文件夹下,数据库文件名称自由定义;3.在建立的“学生-选课”数据库中建立学生、课程和选课三张表,其结构及约束条件如表所示,要求为属性选择合适的数据长度;4.添加具体数据;四.上机软件:SQL Server 2016五.实验步骤:(一)SQL Server 2016简介1.SQL Server 2016的界面2.启动和退出SQL Server 20161)双击图标,即出现SQL Server2016的初始界2)选择“文件”菜单中的“退出”命令,或单击控制按钮中的“×”即可注意事项:1.在退出SQL Server 2016之前,应先将已经打开的数据库进行保存,2.如果没有执行保存命令,系统会自动出现保存提示框,根据需要选择相应的操作(二)创建数据库方法一:1.点击“新建查询”,出现如下对话框2.在空白区域输入创建数据库“学生选课”的代码命令,点击“执行”3.消息框中出现“命令已成功完成”即表示数据库创建成功,在“对象资源管理器”中,右击“数据库”,打开快捷菜单,选择“刷新”命令,在“数据库”向下会出现新创建的数据库“学生选课”方法二:1.右击数据库,在弹出的快捷菜单中选择“新建”2.在弹出的对话框中输入“学生选课”3. 在“对象资源管理器”中,右击“数据库”,打开快捷菜单,选择“刷新”命令,在“数据库”向下会出现新创建的数据库“学生选课”注意事项:数据库名称在服务器中必须唯一,并且符合标识符的规则(三)创建数据库表1.左键点击“学生选课”数据库,再点击“新建查询”,在出现的空白对话框中输入如图代码后点击“执行”,消息框中出现“命令已成功执行”即成功建立好学生、课程、选课三张表2.建立成功后的表格如图所示注意事项:1.T-SQL中创建数据库表的指令格式为:Create table 表名(字段名1 数据类型{identify | not null | null},字段名2 数据类型{identify | not null | null},……)null表示该字段的值可以为控制,空值意味着没有任何存储数据,这是默认参数,当所定义的字段允许空值时,参数null可以忽略not null表示该字段的值不能为空值identify称为计数器,表示该字段的值是一组递增的证书数据。
实验一创建数据库和表以及表操作一、实验目的1.了解SQL Server数据库的逻辑结构和物理结构,表的结构特点;2.了解SQL Server的基本数据类型,空值概念;3.学会在企业管理器中创建数据库和表;4.学会使用T—SQL语句创建数据库和表;5.学会在企业管理器中对数据表进行插入、修改、删除数据操作;6.学会使用T-SQL对数据表进行插入、修改、删除数据操作;二、实验内容1.实验题目(1)创建用于企业管理的员工管理数据库,数据库名为YGGL,包含员工的信息、部门信息以及员工的薪水信息。
数据库YGGL包含下列3个表。
(1)Employees:员工自然信息表。
(2)Departments:部门信息表。
(3)Salary:员工薪水情况表。
各表的结构分别如表T2.1,表T2.2,表T2.3所示。
表T2.1 Employees表结构表T2.2 Departments表结构实验步骤1.在企业管理器中创建数据库YGGL要求:数据库YGGL初始大小为10MB,最大大小为50MB,数据库自动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB(默认为不限制),按1MB增长(默认是按5%比例增长)。
数据库的逻辑文件名和物理文件名均采用默认值,分别为 YGGL_data 和e:\sql\data\MSSQL\Data\YGGL.mdf,其中e:\sql\data\MSSQL为SQL Server 的系统安装目录;事务日志的逻辑文件名和物理文件名也均采用默认值分别为YGGL—LOG 和 e:\sql\data\MSSQL\Data\YGGL_Log.1df。
以系统管理员Administrator是被授权使用CREATE DATABASE语句的用户登录SQL Server服务器,启动企业管理器一>在服务器上单击鼠标右键一>新建数据库一>输入数据库名“YGGL”一>选择“数据文件”选项卡一>设置增长方式和增长比例一>选择“事务口志”选项卡一设置增长方式和增长比例。
数据库的完整性约束一、实验目的1.掌握主键约束、外键约束及及check约束的用法;2.掌握默认值约束的应用;二、实验环境已安装SQL Server 企业版的计算机;具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1.熟悉数据库完整性相关概念及约束;2.了解约束、默认值及规则;3.完成实验报告;五、实验内容及步骤以系统管理员身份登录到SQL Server服务器,并使用T-SQL语句实现以下操作;1.请用至少2种方法定义stu数据库中student表的主键sno;2.将数据库stu的表course的cno字段定义为主键,约束名称为cno_pk;3.为表course中的字段cname添加唯一值约束;4.将数据库stu的表sc的sno及cno字段组合定义为主键,约束名称为sc_pk;5.对于数据表sc的sno、cno字段定义为外码,使之与表student的主码sno及表course的主码cno对应,实现如下参照完整性:1)删除student表中记录的同时删除sc表中与该记录sno字段值相同的记录;2)修改student表某记录的sno时,若sc表中与该字段值对应的有若干条记录,则拒绝修改;3)修改course表cno字段值时,该字段在sc表中的对应值也应修改;4)删除course表一条记录时,若该字段在在sc表中存在,则删除该字段对应的记录;5)向sc表添加记录时,如果该记录的sno字段的值在student中不存在,则拒绝插入;6. 定义check约束,要求学生学号sno必须为9位数字字符,且不能以0开头,第二三位皆为0;(不用做)7. 定义stu数据库中student表中学生年龄值在16-25范围内;8. 定义stu数据库中student表中学生姓名长度在2-8之间;9. 定义stu数据库中student表中学生性别列中只能输入“男”或“女”;10. 定义stu数据库student表中学生年龄值默认值为20;11. 修改student表学生的年龄值约束可以为15-30范围内;(不用做)12. 删除上述唯一值约束、外键约束及check约束;13.向下列三个表中分别插入如下数据:SC表Course 表14、在上面的基础上分别向studentinfo 数据库中的student, course, sc 表中添加少8条数据。
关系数据库的完整性约束关系数据库是一种常用的数据库模型,它使用表格来存储和组织数据。
在关系数据库中,完整性约束是一种重要的机制,用于确保数据的一致性和准确性。
本文将介绍关系数据库的完整性约束的定义、类型以及它们在数据库设计和数据管理中的作用。
一、完整性约束的定义完成性约束是指定义在关系数据库表上的规则,用于保证数据的完整性。
它可以限制某些列的取值范围、规定表之间的关系、强制规则和业务规则等。
通过定义完整性约束,可以防止不一致、不准确或不符合业务规则的数据进入数据库。
二、完整性约束的类型1. 实体完整性约束实体完整性约束用于确保每一行数据在主键列上具有唯一的值,并且不为空。
主键是关系数据库中用于唯一标识每一行数据的列或列组合。
2. 引用完整性约束引用完整性约束用于确保表之间的关系的一致性。
它结合了外键和主键的概念,确保在外键列中的值必须在参照表的主键列中存在。
这样可以防止不一致的关系建立或错误的数据引用。
3. 域完整性约束域完整性约束用于限制某些列的取值范围。
可以通过定义数据类型、长度、格式等约束来确保数据的准确性和一致性。
4. 用户自定义完整性约束用户自定义完整性约束是根据特定业务需求定义的约束规则。
可以使用触发器、存储过程或触发器等数据库对象来实现自定义完整性约束。
5. 断言完整性约束断言完整性约束是在SQL标准中定义的,用于在关系数据库中表示某种条件必须成立。
断言可以在表创建时定义或随后添加,以确保数据满足特定条件。
三、完整性约束的作用1. 数据的一致性和准确性:通过完整性约束,可以限制数据的取值范围和关系,确保数据的准确性和一致性。
2. 数据的安全性:完整性约束可以防止数据被非法篡改、删除或插入不符合规定的数据。
3. 业务规则的保护:通过完整性约束,可以确保数据库中存储的数据符合特定的业务规则。
4. 避免错误的数据关联:引用完整性约束可确保外键的合法性,防止不一致的数据关联。
5. 数据的可靠性和可维护性:通过定义完整性约束,可以为数据库提供可靠的结构和规范,便于数据的管理和维护。
数据库的完整性实验报告数据库的完整性实验报告引言:数据库的完整性是指数据库中存储的数据必须满足预定的一致性要求,包括实体完整性、域完整性、参照完整性和用户定义的完整性。
本实验旨在通过设计一个简单的数据库,并通过实际操作验证其完整性。
一、实验目的本实验的目的是通过设计和操作数据库,了解数据库的完整性概念,并掌握如何保证数据的完整性。
二、实验环境本实验使用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);```这样,如果有重复的学号插入到表中,系统会报错并拒绝插入。
实验一创建数据库及关系表数据完整性约束精编版MQS system office room 【MQS16H-TTMS2A-MQSS8Q8-MQSH16898】实验一创建数据库及关系表、数据完整性约束网工1203熊健羲一、实验目的1.???掌握SQLServer数据库管理系统的使用,能够在该环境中进行日常数据库操作;2.???掌握在SQLServer中使用图形化工具创建数据库的方法;3.掌握建立关系表的语句,掌握定义主码约束及外码约束的语句;4.掌握修改表结构的语句。
5.掌握数据完整性约束的功能。
二、实验内容和步骤1.创建符合如下条件的数据库:数据库的名字为:Students数据文件的逻辑文件名为:Students_dat,存放在用户盘某目录下;文件的初始大小为:5MB;增长方式为自动增长,每次增加1MB。
实验结果:2.在已建立的Students数据库中,确定出各表中的数据类型,写出创建满足下述条件的四张表的SQL语句,并查看执行结果。
实验结果:3.写出实现如下操作的SQL语句,并查看执行结果:(1)在选课表中添加一个新的修课类别列:列名为:选课类别,类型为char(4)。
(2)将课程表中的学分列的类型改为:tinyint(微整型,取值范围在0~255)。
(3)删除学生表的专业列。
(4)为教师表添加主码约束,其主码列为:教师号。
实验结果:4.在Students数据库中,编写建立满足完整性要求的定义表的SQL语句,执行并观察执行结果。
(1)图书表,结构如下:书号:统一字符编码定长类型,长度为6,主码,书名:统一字符编码可变长类型,长度为30,非空,第一作者:普通编码定长字符类型,长度为10,非空,出版日期:小日期时间型,小于等于当前系统日期,(用getdate()实现)印刷数量:小整型,取值范围:1000~5000,默认为4000,价格:定点小数,小数部分一位,整数部分3位。
实验结果:(2)书店表,结构如下:书店编号:统一字符编码定长类型,长度为6,主码,店名:统一字符编码可变长类型,长度为30,非空,电话:普通编码定长字符类型,12位长,取值形式:010-8位数字地址:普通编码可变长字符类型,40位长。
理学院信科08—2班陈先国实验1 创建数据库与数据表下面写出实现如下操作的SQL语句:(1)创建供应系统“GYXT”数据库。
CREATE DATABASE GYXTON(NAME=GYXT_data,FILENAME=’D:\GYXT.mdf’,SIZE=10,MAXSIZE=50,FILEGROWTH=5)LOG ON(NAME=GYXT_Log,FILENAME=’D:\GXTYData.ldf’,SIZE=5,MAXSIZE=25,FILEGROWTH=5);(2) 建立供应商表S。
CREATE TABLE S( SNO char(5)not null unique,SNAME char(20)not null unique,CITY char(20));INSERT INTO S VALUES('S1','精益','天津');INSERT INTO S VALUES('S2','万胜','北京');INSERT INTO S VALUES('S3','东方','北京');INSERT INTO S VALUES('S4','丰泰隆','上海');INSERT INTO S VALUES('S5','康健','南京');(3) 建立零件表P。
CREATE TABLE P(PNO char(2)not null PRIMARY KEY(PNO),PNAME char(20),COLOR char(20),WEIGHT smallint);INSERT INTO P V ALUES('P1','螺母','红',12);INSERT INTO P V ALUES('P2','螺栓','绿',17);INSERT INTO P V ALUES('P3','螺丝刀','蓝',14); INSERT INTO P V ALUES('P4','螺丝刀','红',14); INSERT INTO P V ALUES('P5','凸轮','蓝',40); INSERT INTO P V ALUES('P6','齿轮','红',30);(4) 建立工程项目表J。
实验一创建数据库及关系表、数据完整性约束一、实验目的1.???掌握SQL Server数据库管理系统的使用,能够在该环境中进行日常数据库操作;2.???掌握在SQL Server中使用图形化工具创建数据库的方法;3.掌握建立关系表的语句,掌握定义主码约束及外码约束的语句;4.掌握修改表结构的语句。
5.掌握数据完整性约束的功能。
二、实验内容和步骤1.创建符合如下条件的数据库:数据库的名字为:Students数据文件的逻辑文件名为:Students_dat,存放在用户盘某目录下;文件的初始大小为:5MB;增长方式为自动增长,每次增加1MB。
实验结果:2.在已建立的Students数据库中,确定出各表中的数据类型,写出创建满足下述条件的四张表的SQL语句,并查看执行结果。
实验结果:3.写出实现如下操作的SQL语句,并查看执行结果:(1)在选课表中添加一个新的修课类别列:列名为:选课类别,类型为char(4)。
(2)将课程表中的学分列的类型改为:tinyint(微整型,取值范围在0~255)。
(3)删除学生表的专业列。
(4)为教师表添加主码约束,其主码列为:教师号。
实验结果:4.在Students数据库中,编写建立满足完整性要求的定义表的SQL语句,执行并观察执行结果。
(1)图书表,结构如下:书号:统一字符编码定长类型,长度为6,主码,书名:统一字符编码可变长类型,长度为30,非空,第一作者:普通编码定长字符类型,长度为10,非空,出版日期:小日期时间型,小于等于当前系统日期,(用getdate()实现)印刷数量:小整型,取值范围:1000~5000,默认为4000,价格:定点小数,小数部分一位,整数部分3位。
实验结果:(2)书店表,结构如下:书店编号:统一字符编码定长类型,长度为6,主码,店名:统一字符编码可变长类型,长度为30,非空,电话:普通编码定长字符类型,12位长,取值形式:010-8位数字地址:普通编码可变长字符类型,40位长。
完整性约束完整性约束实验实验目的:熟悉通过SQL对数据库进行操作完整性控制,包括三类完整性、check短语、constrain 子句。
1.实体完整性定义表的主码关系模型的实体完整性在create table中用primary key定义。
定义主码的方法为定义列级约束条件和定义为表级约束条件两种。
(1)定义表student,并将其中的sno属性定义为主码。
Create table student(Sno char(7) primary key,Sname char(8) not null,Ssex char(2),Sage smallint,Sdept char(20));或者:Create table student(Sno char(7),Sname char(8) not null,Ssex char(2),Sage smallint,Sdept char(20),Primary key(sno));(2)定义表course,并将其中的cno属性定义为主码。
Create table course(cno char(7) primary key,cname char(8) not null);2.参照完整性关系模型的参照完整性是在create table中用foreign key语句来定义的,并用references 来指明外码参照的是哪些表的主码。
定义表sc,其中sno参照student表的主码sno,cno参照course的主码cno。
Create table sc(Sno char(7) not null,Cno char(7) not null,Grade smallint,Primary key(sno,cno),Foreign key(sno) references student(sno),Foreign key(cno) references course(cno))3.用户自定义完整性用户定义的属性上的约束条件。
大连海事大学数据库原理课程实验大纲实验名称:实验七完整性实验学时: 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数据库模式设计各种完整性约束,每种类型完整性约束至少要设计一个,描述清楚完整性约束要求,设计和运行触发完整性约束检查的数据更新语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。
数据库完整性实验报告引言数据库完整性是数据库管理系统中的一个重要概念,用于确保数据库中数据的准确性、有效性和一致性。
本实验旨在通过设计和实现一系列完整性约束,来验证数据库完整性的实际应用。
实验目标本实验的目标是设计并实现以下几种完整性约束: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);实验结果通过以上步骤,我们已经成功设计并实现了实体完整性约束、参照完整性约束和用户自定义完整性约束。
实验一创建数据库及关系表数据完整性约束集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#实验一创建数据库及关系表、数据完整性约束一、实验目的1.掌握SQL Server数据库管理系统的使用,能够在该环境中进行日常数据库操作;2.掌握在SQL Server中使用图形化工具创建数据库的方法;3.掌握建立关系表的语句,掌握定义主码约束及外码约束的语句;4.掌握修改表结构的语句。
5.掌握数据完整性约束的功能。
二、实验内容和步骤1.创建符合如下条件的数据库:数据库的名字为:Students数据文件的逻辑文件名为:Students_dat,存放在用户盘某目录下;文件的初始大小为:5MB;增长方式为自动增长,每次增加1MB。
实验结果:2.在已建立的Students数据库中,确定出各表中的数据类型,写出创建满足下述条件的四张表的SQL语句,并查看执行结果。
实验结果:3.写出实现如下操作的SQL语句,并查看执行结果:(1)在选课表中添加一个新的修课类别列:列名为:选课类别,类型为char(4)。
(2)将课程表中的学分列的类型改为:tinyint(微整型,取值范围在0~255)。
(3)删除学生表的专业列。
(4)为教师表添加主码约束,其主码列为:教师号。
实验结果:4.在Students数据库中,编写建立满足完整性要求的定义表的SQL语句,执行并观察执行结果。
(1)图书表,结构如下:书号:统一字符编码定长类型,长度为6,主码,书名:统一字符编码可变长类型,长度为30,非空,第一作者:普通编码定长字符类型,长度为10,非空,出版日期:小日期时间型,小于等于当前系统日期,(用getdate()实现)印刷数量:小整型,取值范围:1000~5000,默认为4000,价格:定点小数,小数部分一位,整数部分3位。
实验结果:(2)书店表,结构如下:书店编号:统一字符编码定长类型,长度为6,主码,店名:统一字符编码可变长类型,长度为30,非空,电话:普通编码定长字符类型,12位长,取值形式:010-8位数字地址:普通编码可变长字符类型,40位长。
一、实验目的
1.???掌握SQL Server 数据库管理系统的使用,能够在该环境中进行日常数据库操作;
2.???掌握在SQL Server 中使用图形化工具创建数据库的方法;
3.掌握建立关系表的语句,掌握定义主码约束及外码约束的语句;
4.掌握修改表结构的语句。
5.掌握数据完整性约束的功能。
二、实验内容和步骤
1.创建符合如下条件的数据库:
数据库的名字为:Students 数据文件的逻辑文件名为:Students_dat ,存放在用户盘某目录下;
文件的初始大小为:5MB增长方式为自动增长,每次增加1MB
实验结果:
2.在已建立的Students 数据库中,确定出各表中的数据类型,写出创建满足下述条件的四张表的SQL 语句,并查看执行结果。
实验结果:
3 .写出实现如下操作的SQL 语句,并查看执行结果:
1)在选课表中添加一个新的修课类别列:列名为:选课类别,类型为char (4)
2)将课程表中的学分列的类型改为:tinyint(微整型,取值范围在0〜255)。
3)删除学生表的专业列。
4)
为教师表添加主码约束,其主码列
为:
教师号。
实验结果:
4.在Students 数据库中,编写建立满足完整性要求的定义表的SQL 语句,执行并观察执行结果。
( 1 )图书表,结构如下:
书号:统一字符编码定长类型,长度为6,主码,书名:统一字符编码可变长类型,长度为30 ,非空,第一作者:普通编码定长字符类型,长度为10,非空,
岀版日期:小日期时间型,小于等于当前系统日期,(用getdate()实现)
印刷数量:小整型,取值范围:1000〜5000,默认为4000 ,
价格:定点小数,小数部分一位,整数部分 3 位。
实验结果:
( 2 )书店表,结构如下:书店编号:统一字符编码定长类型,长度为6,主码,店名:统一字符编码可变长类型,长度为30,非空,电话:普通编码定长字符类型,12 位长,取值形式:010-8 位数字地址:普通编码可变长字符类型,40 位长。
前两个字符必须是:北京。
实验结果:
( 3 )图书销售表,结构如下:
书号:统一字符编码定长类型,长度为6,非空,
书店编号:统一字符编码定长类型,长度为6,非空,销售日
期:小日期时间型,非空,默认值为系统当前日期,
销售数量:微整型,取值大于0,主码(书号,书店编号,销售日期);书号为引用“图书表”的外码;书店编号为引用“书店表”的外码。
实验结果:
5.执行下列两条数据插入语句,是否都能执行成功?为什么?
INSERT INTO Book
VALUES ('T0001','数据库系统基础','张三','2010-2-1' , 3000 ,28.0 )实验结果:能执行
INSERT INTO Book
VALUES ( 'T0002','计算机网络','张三','2010-1-1' , 500 , 36.0 )
实验结果:不能执行,原因:印刷数量小于1000
6.执行下列数据插入语句,是否执行成功?为什么?
INSERT INTO Store VALUES ( 'S001','新华书店',,'北京市海淀区')
实验结果:不能执行,原因:电话号码不符合标准
7.执行一条数据插入语句,是否执行成功?为什么?
INSERT INTO Sale (书号,书店编号,销售数量)VALUES ('T0001' , 'S001' , 20)实验结果:不能执行,原因:store是sale外键,其中store并没有添加进数据。
* 如丁II—
L INSERT INTO Sale (43号,书店编耳销售数景;VALUES ( 'T0001' , SCO11,20)
j港展
消息沁级别16:.狀态6 行
INSERT普句与FOMIOT EEY -FK_Sli号—丄FCD葩阳叶印突.谍神突夏生于数据库"牝wi CREATE table Student (
学号CHAR(7) primary key ,
姓名NCHAR(5) n ot n ull,
性别NCHAR( 1) ,
年龄TINYINT ,
所在系NVARCHAR( 20),
专业NVARCHAR( 20)
)
CREATE table Course (
课程号CHAR( 6) primary key ,
课程名NVARCHAR( 20) NOT NULL, 学时数TINYINT
,
学分TINYINT
)
CREATE TABLE SC(
学号CHAR(7) NOT NULL,
课程号CHAR(6) NOT NULL, 成绩TINYINT ,
PRIMARY KEY (学号,课程号),
FOREIGN KEY (学
号)REFERENCES Student (学号),
FOREIGN KEY (课程
号)REFERENCES Course (课程
号)
CREATE table Teather (
教师号CHAR(7) not n ull, 教师名NCHAR( 5) not n ull,
、实验源码
VALUES ( 'T0001' , ' 数据库系统基础 ' , ' 张三 ' , '2010-2-1' , 3000 , 28.0 ) INSERT INTO Book
VALUES ( 'T0002' , ' 计算机网络 ' , ' 张三 ' , '2010-1-1' , 500 , 36.0 ) INSERT INTO Store VALUES ( 'S001' , ' 新华书店 ' ,, ' 北京市海淀区 ' )
INSERT INTO Sale ( 书号 , 书店编号 , 销售数量 ) VALUES ( 'T0001' , 'S001' , 20 )
四、实验心得
经过这次实验 ?掌握 SQL Server 数据库管理系统的基本使用,复习了建立关系表的语 句,定义主码约束及外码约束的语句,和修改表结构的语句。
了解了数据完整性约束的功 能。
希望下次实验能够学到更多数据库的知识。
书号 NCHAR( 6) not NULL, 书店编号 Nchar ( 6) not NULL, 销售日期 Smalldatetime default getdate (), 销售数量
tinyint check ( 销售数量 > 0 ), primary key ( 书号 , 书店编号 , 销售日期 ), foreign key ( 书号 ) references Book ( 书号 ), foreign key ( 书店编 号 ) references Store ( 书店编号 RT INTO Book
) )
所在部门
NVARCHAR( 20) 工资 Smallmoney 出生日期
Smalldatetime
select
* from Student select
* from Course select * from SC
select * from Teather ALTER TABLE SC
ADD 选课类别
char (4) ALTER TABLE Course
ALTER COLUMN 学分 tinyint ALTER
TABLE Student DROP COLUMN 专业
ALTER TABLE Teather
CREATE table Book (
书号
NCHAR( 6) primary key , 书名
Nvarchar ( 30) not null, 第一作者
CHAR( 10 ) not null, 出版日期
smalldatetime check ( 出版日期 < getdate ()), 印刷数量
Smallint check ( 印刷数量 < 5000 and 印刷数量 价格
decimal ( 3, 1) )
CREATE table Store ( 书店编号
NCHAR( 6) primary key ,
店名
NVARCHAR( 30) NOT NULL, 电话 Char ( 12) check ( 电话 like
'010-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
), 地址
Varchar ( 40) check ( 地址 like ' 北京 %' ) ( 4000 ), table Sale ) ADD constraint
> 1000 ) default )
Create
ys primary key ( 教师号 )。