实验七完整性约束的创建

合集下载

完整性约束

完整性约束

完整性约束实验实验目的:熟悉通迷Q射数据库进行操作完整性控制,包括三类完涮制短语、constrain子句°1. 实体完整性定义表的主码关系模型的实体完整性reate table中用primary keyt义。

定义主码的方法为定义歹U级约束条件和定义为表级约束条件两种。

⑴定义Student并将其中的noli性定义为主码。

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));⑵定义bourse并将其中的no届性定义为主码。

Create table course(cno char(7) primary key,cname char(8) not null);2. 参照完整性关系模型的参照完整性^rfeate table中用foreign key语句来定义的,并references来指明外码参照的是哪些表的主码。

定义衣c,其床nc#照studen饮的主5%nq cn叠照course勺主S^nQCreate 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. 用户自定义完整性用户定义的届性上的约束条件。

⑴ 列值非空。

建立表和定义完整性约束、数据操作 实验报告模板

建立表和定义完整性约束、数据操作 实验报告模板

经济管理学院财务管理专业协作者______________ 教师评定_____________实验题目建立表和定义完整性约束、数据操作一、实验目的与实验方法本实验课程的目的:本实验课程的实验方法:二、实验要求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约束,因为院系表名称不允许重复,而名称为“经济管理学院”的院系已经存在,所以不成功。

四、问题与讨论在创建的过程中没有注意括号是用英文括号还是中文括号,所以出现了错误。

应该使用英文括号的。

在同一个数据库中是不能同时创建两个相同的对象的。

心得体会:数据库是一门很难学的课程,而且,我在平时比较少关注这方面的东西,所以,我在做这个实验的时候就觉得十分的困难。

很多的时候我都需要别人的帮助。

我是一个比较粗心的人,因此,我在做这个实验的时候没有留意输入的时候要用英文符号,要加空格。

所以,我总是出现错误,让我觉得很烦恼。

完整性约束分析

完整性约束分析
TEST_Course表的结构定义如下。
•表名:TEST_Course
包含的列如下:
•课号:CNO CHAR(5);
•课名:CName NVARCHAR(50);
•课时:Ctime TINYINT;
•主键:CNO;
•主键约束名:PK_TEST_Course。
(5)用SQL创建数据表TEST_TC,并以表约束形式创建PRIMARY KEY约束。
(9)ALTER TABLE TEST_TC ADD ID_TC INT IDENTITY;
(11)ALTER TABLE TEST_Course
DROP UNIQUE_CNAME
题目:(1)交互式为现有数据表Teacher创建DEFAULT约束和CHECK约束。
要求:CHECK约束对已有数据不做检查。
);
(5)CREATE TABLE TEST_TC
(TNO CHAR(5)NOT NULL,
CNO CHAR(5)NOT NULL,
CONSTRAINT PK_TEST_TC PRIMARY KEY(TNO,CNO)
);
(7)ALTER TABLE TEST_Course ADD UNIQUE(CNAME);
(8)交互式为现有表TEST_SC增加新列ID_SC,并创建此列属性为IDENTITY。
(9)用SQL为现有表TEST_TC增加新列ID_TC,并创建此列属性为IDENTITY。
(10)交互式删除现有表TEST_TC的主键PK_TEST_TC并取消ID_TC列的标识属
性。
(11)用SQL删除表TEST_Course中CNAME列的UNIQUE约束。
(3)CREATE TABLE TEST_S

完整性约束讲解

完整性约束讲解

数据库实验报告三完整性约束一、实验目的1. 熟悉主键,外键,check等完整性约束;2. 掌握完整性约束的建立,删除,有效化和无效化;3. 熟悉相关的DDL命令。

4. 学会看数据库模型图。

二、实验内容1. 主键约束a. 按图1所示,建立所有表的主键约束。

b. 运行下列SQL语句:in sert in to branch values( ‘ Xia ngta n Uni versity Xiangtan ' ,4000000);in sert in to branch values( ‘ Xia ngta n Uni versity Xiangtan ' ,5000000);记录结果并分析原因。

2. 外键约束a. 按照图1所示,建立所有的外键约束。

b. 运行以下的两条SQL语句:insert into loan values( ‘L-001' , 'Xiangtan University ' ,1000);in sert in to loan values( ‘ L-002' , ' Rai n Lake ' ,2000);记录结果并分析原因。

c. 运行以下的SQL语句:delete bran ch;记录结果并分析原因。

3. unique 约束a. 在loan表上建立一个unique约束,保证amount是唯一的。

b. 运行以下SQL语句:insert into loan values( ‘L-002' , 'Xiangtan University ' ,2000); 记录结果并分析原因。

c. 使得刚才建立的约束无效化,并再次运行上一条SQL语句,记录结果并分析原因。

d. 删除掉这个约束。

4. check 约束a. 在loan表上建立一个check约束,保证amount必须为正数。

b. 运行以下SQL语句:insert into loan values( ‘L-003 ', 'Xiangtan University ' ,-2000); 记录结果并分析原因。

完整性约束实验

完整性约束实验

数据库的完整性约束一、实验目的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条数据。

实验创建数据库及关系表数据完整性约束

实验创建数据库及关系表数据完整性约束

实验创建数据库及关系表数据完整性约束CKBOOD was revised in the early morning of December 17, 2020.实验一创建数据库及关系表、数据完整性约束网工1203 熊健羲 38一、实验目的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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七完整性约束的创建一、实验目的理解数据库完整性约束的概念,掌握SQL Server 2008的完整性约束的类型及相应的创建技术。

二、实验内容1、定义和管理主键约束。

2、定义和管理唯一性约束。

3、定义和管理检查约束。

4、定义和管理外键约束。

5、定义和管理默认值约束。

三、实验指导在关系数据库中,实体完整性约束、参照完整性约束和域完整性约束是必须满足的完整性约束条件。

在SQL Server中,通过建立“约束”等措施来实现数据完整性约束,约束包括:主键(PRIMARY KEY)约束、唯一性(UNIQUE)约束、检查(CHECK)约束、默认值(DEFAULT)约束和外键(FOREIGN KEY)约束。

约束的建立可以通过对象资源管理器进行操作,也可以利用T-SQL语句进行设置。

(一)主键(PRIMARY KEY)约束主键约束指在表中定义一个主键来唯一标识表中每一行数据。

1、在SQL Server Management Studio中设置和修改主键在表设计器中,单击要定义为主键的列的行选择器(如果要选择多列,在单击其他列的行选择器时按住Ctrl键)。

然后右键单击该列的行选择器,选择“设置主键”命令,自动创建名为“PK_”(后跟表名)的主键索引。

如图7.1所示。

2、利用T-SQL语句定义和修改主键实验7.1 在教学管理数据库JXGL中创建学生表S的同时定义主键。

在数据库引擎查询文档中输入以下语句:USE JXGLGOCREATE TABLE S(Sno char(8) PRIMARY KEY,Sname char(8),Sex char(2),Sage smallint,Sdept varchar(50))GO注意:如果要设置多列的组合为主键,需要把主键定义为表级完整性约束。

图7.1 利用表设计器管理主键实验7.2 在定义数据表S时没有定义主键,则需要添加主键。

在数据库引擎查询文档中输入以下语句:USE JXGLGOALTER TABLE SADD CONSTRAINT PK_Sno PRIMARY KEY clustered(Sno)GO单击“执行”按钮则执行该程序段,这样就创建了名字为PK_Sno的主键。

(二)唯一性(UNIQUE)约束为了确保列中的值是唯一的,需要设置唯一性约束。

用户可以对一列或者多列定义唯一性约束,但这些列必须都定义为NOT NULL。

1、在SQL Server Management Studio中设置唯一性约束实验7.3 在学生表S中的Sname列上设置UNIQUE约束。

步骤如下:①在S表设计器中右键单击,在弹出的快捷菜单中选择“索引/键”命令,弹出“索引/键”对话框。

②在弹出的“索引/键”对话框中单击“添加”按钮,添加新的主/唯一键或索引;然后在“常规”栏的“类型”右边选择“唯一键”,在列的右边单击按钮,选择列名Sname和排序规律ASC(升序)或DESC(降序),如图7.2所示。

图7.2 “索引/键”对话框③设置完成后,单击“关闭”按钮返回表设计器窗口,然后单击工具栏中的“保存”按钮,完成唯一性约束的创建。

2、用T-SQL语句定义或修改唯一性约束在创建表时可以将唯一性约束作为CREATE TABLE 语句的一部分来定义,也可以在创建表之后用ALTER TABLE语句添加这些约束。

实验7.4 在课程表C中的Cname列上设置UNIQUE约束。

在数据库引擎查询文档中输入以下语句:USE JXGLGOCREATE TABLE C(Cno char(4) NOT NULL PRIMARY KEY,Cname char(20) NOT NULL CONSTRAINT UN_Cname UNIQUE,Credit float,Pcno char(4),Describe varchar(100))GO执行该SQL语句,在定义表S的同时创建了名称为UN_Cname的唯一性约束。

实验7.5 在定义数据表C时没有定义Cname上的唯一性约束,用SQL语句添加唯一性约束。

在数据库引擎查询文档中输入以下语句:USE JXGLGOALTER TABLE CADD CONSTRAINT UN_Cname UNIQUE (Cname)GO(三)检查(CHECK)约束CHECK约束将用户输入到特定列的数据限制为指定的值。

可以在单列或多列上声明CHECK约束,只有单列CHECK约束可以和列一起定义,而且一列只能定义一个CHECK约束,涉及多列的CHECK约束作为CREATE TABLE语句中单独的元素。

一个约束可以有多种逻辑表达式,它们可以和and或or一起使用。

1、使用SQL Server Management Studio创建CHECK约束实验7.6为学生表S中添加年龄为15~30岁的约束。

打开表设计器窗口,可以单击工具栏中的,此时会弹出一个对话框,用来设置CHECK约束,如图7.3所示。

图7.3 设置Check约束用户可以在表达式中输入设置的约束条件,然后设置该CHECK约束是否强制用于Insert和Update,是否强制用于复制,是否在创建或重新启用时检查现有数据。

选择“是”,然后将该数据表保存。

如果试图向表中插入不符合条件的记录,系统会提示插入不能成功。

2、使用T-SQL语句创建CHECK约束实验7.7 在创建成绩表SC时创建成绩为0~100的约束。

在数据库引擎查询文档中输入以下语句:USE JXGLGOCREATE TABLE SC(Sno char(8),Cno char(4),Grade float CHECK(Grade>=0 and Grade<=100),Primary key(Sno,Cno))GO在创建SC表时创建CHECK约束,约束名由系统自动生成,用户也可以在CREATE TABLE操作时同时命名检查约束,以上SQL语句可改为:USE JXGLGOCREATE TABLE SC(Sno char(8),Cno char(4),Grade float CONSTRAINT CK_Grade CHECK(Grade>=0 and Grade<=100), Primary key(Sno,Cno))GO该语句将检查约束命名为CK_Grade。

实验7.8 在已经创建的表S上,添加性别取值为“男”或“女”的约束。

在数据库引擎查询文档中输入以下语句:USE JXGLGOALTER TABLE SADD CONSTRAINT CK_Sex CHECK(Sex='男' or Sex='女')GO(四)外键(FOREIGN KEY)约束在对两个相关联的表进行数据插入和删除时,通过参照完整性保证它们之间数据的一致性。

通常利用FOREIGN KEY约束定义参照表的外键,利用Primary Key和Unique约束定义主表中的主键或唯一键,可实现主表与从表之间的参照完整性。

1、使用SQL Server Management Studio创建FOREIGN KEY约束实验7.9 定义数据表SC的外键。

步骤如下:①在对象资源管理器中,右键单击JXGL数据库的“数据库关系图”,在弹出的菜单中选择“新建数据库关系图”。

如图7.4所示。

②在弹出的对话框中将所涉及的S表、C表和SC表添加到数据库关系图中。

如图7.5所示。

图7.4 新建数据库关系图图7.5 “添加表”对话框③选中SC表中的Sno字段,将其拖到S表上,此时会弹出“表和列”对话框,如图7.6所示。

用户可以在该对话框中设置外键的名称FK_SC_S,单击“确定”按钮。

图7.6 “表和列”对话框④选中SC表中的Cno字段,将其拖到C表上,在弹出的“表和列”对话框中设置外键名称FK_SC_C,形成如图3.7所示的关系图。

⑤保存该关系图,即创建了SC表和S表、C表的参照关系。

2、使用T-SQL语句创建FOREIGN KEY约束实验7.10 在定义数据表SC时定义外键。

在数据库引擎查询文档中输入以下语句:图7.6 数据库关系图USE JXGLGOCREATE TABLE SC(Sno char(8),Cno char(4),Grade float CONSTRAINT CK_Grade CHECK(Grade>=0 and Grade<=100), PRIMARY KEY(Sno,Cno),CONSTRAINT FK_Sno FOREIGN KEY(Sno) REFERENCES S(Sno),CONSTRAINT FK_Cno FOREIGN KEY(Cno) REFERENCES C(Cno))GO执行该SQL语句,则在创建SC表时创建了名称为FK_Sno和FK_Cno的外键约束,要求SC表中学号Sno参照学生表S中的学号Sno,SC表的课程号Cno 参照课程表C中的课程号Cno。

实验7.11 删除SC表的外键FK_Sno。

在数据库引擎查询文档中输入以下语句:USE JXGLGOALTER TABLE SCDROP CONSTRAINT FK_SnoGO(五)默认值(DEFAULT)约束DEFAULT约束为列提供默认值,它提供了域完整性。

1、使用SQL Server Management Studio创建DEFAULT约束实验7.12 为学生表S中的性别字段Sex设置默认值为“男”。

打开表设计器窗口,单击Sex字段,然后在窗口下部的“默认值或绑定”单元格中输入“男”。

修改完毕,保存该表。

2、使用T-SQL语句创建DEFAULT约束实验7.13 创建课程表C,学分默认值为2。

在数据库引擎查询文档中输入以下语句:USE JXGLGOCREATE TABLE C(Cno char(4) PRIMARY KEY,Cname char(20) ,Credit float CONSTRAINT Credit DEFAULT 2,Pcno char(4),Describe varchar(100))GO。

相关文档
最新文档