实验七完整性约束的创建
完整性约束
完整性约束实验实验目的:熟悉通迷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
包含的列如下:
•课号: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数据库模式设计各种完整性约束,每种类型完整性约束至少要设计一个,描述清楚完整性约束要求,设计和运行触发完整性约束检查的数据更新语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。
数据库实验6 -数据完整性约束(表约束)
实验六数据完整性约束姓名:学号:专业:网络工程班级:20网络工程同组人:无实验日期:2022.5【实验目的与要求】1.熟练掌握实体完整性的实现。
2.熟练掌握参照完整性的实现。
3.熟练掌握域完整性的实现。
【实验内容与步骤】实验准备:(1)对于SalesDB数据库,若在产品表、销售表和客户表上已有约束,请先删除之;(2)删除掉表中重复的行。
6.1.实体完整性的实现(1) 对产品表,定义主键约束(用企业管理器实现)。
写出相应过程:(1)在对象资源管理器中的数据库节点下找到数据库SalesDB,找到表Product。
右击-修改(2)按住Ctrl键选中Price和Stocks,右键-设置主键-保存测试:试着对产品表插入一条与原表中数据行具有相同主键值的数据。
给出测试结果:(2)客户表(CUSTOMER),定义名为PK_Cstm的主键约束,设定客户号(Cno)为主键。
(用SQL语句实现,写出相应语句)。
给出相应的SQL语句:alter table Customeraddconstraint PK_Cstm primary key(Cno)给出测试结果:(3)对销售表,定义名为PK_Sales的主键约束,设定主键为(Pno,Cno)的组合(用SQL语句实现,写出相应语句)。
给出相应的SQL语句:alter table Salesaddconstraint PK_Sales primary key(Pno,Cno)给出测试结果:(1)利用企业管理器建立产品表(Product)与销售表(Sales)之间的参照关系,当对主表产品表进行更新和删除操作时,从表Sales采用NO ACTION方式,写出其过程。
给出相应的过程:测试:试着删除主表中与从表有关联的一条记录,而后分别查看主表和从表中数据记录,给出测试结果。
(2)利用SQL语句建立销售表(SALES)与客户表(CUSTOMER)之间的参照关系,设定外键约束名为FK_SC,使得当对主表客户表(CUSTOMER)进行更新和删除操作时,从表销售表(SALES)采用CASCADE(级联)方式处理,给出相应的SQL语句和测试结果。
数据库系统原理完整性约束
数据库系统原理完整性约束数据库系统原理实验报告实验名称:完整性约束指导教师:叶晓鸣刘国芳专业:计算机科学与技术班级:10级(1)班姓名:文科学号:100510107 完成日期: 2012-10-12 成绩:一、实验目的:1.认识完整性约束对数据库的重要性.2.掌握实体完整性的创建,修改,维护.3.掌握域完整性的创建,修改,维护.4.掌握参照完整性的创建,修改,维护.5.掌握用户定义的完整性的创建,修改,维护.二、实验内容及要求:内容:1.完整性约束(1) 交互式为数据库表S创建PRIMARY KEY约束.(2)交互式创建数据库表TEST_SC,并创建PRIMARY KEY约束.(3)用SQL为现有表T在TNO列上创建PRIMARY KEY约束.(4)用SQL创建数据库表TEST_TC,并以列约束形式创建PRIMARY KEY约束束(5) 用SQL创建数据库表TEST_TC,并以表约束形式创建PRIMARY KEY约束束(6)交互式为现有表TEST_TC中的CNO和TNO列创建”UNIQUE”约束(7)用SQL为现有表C中的CN列创建”UNIQUE”约束(8) 交互式为现有表TEST_SC增新列ID_SC,并创建此列属性为IDENTITY.(9) 用SQL为现有表TEST_TC增新列ID_TC, 并创建此列属性为IDENTITY.(10) 交互式删除现有表TEST_SC的主键PK_TEST_SC并取消ID_SC列的标识属性(11) 用SQL删除表C中CN列的UNIQUE约束UNIQUE_C.2. 域完整性约束(1)交互式为现有数据库表T创建DEFAULT和CHECK约束.(2)用SQL为现有数据库表S创建CHECK约束.(3)用SQL创建一数据库表TEST_S,包含DEFAULT和CHECK约束(4) ) 用SQL删除表T中列PROF和COMM之间的CHECK约束CHECK_T.(5)交互式删除表TEST_S中列SEX的DEFAULT约束及列AGE的CHECK约束.3. 参照完整性约束(1)交互式创建表S与表SC之间的参照关系.(2)用SQL创建表T与表TC之间的参照关系.(3)创建数据库jxsk1中5个表之间的关联关系图。
完整性约束——精选推荐
完整性约束⼀、实体完整性:是指保证表中所有的⾏唯⼀。
实体完整性要求表中的所有⾏都有⼀个唯⼀标识符。
这个唯⼀标识符可能是⼀列,也可能是⼏列的组合,称为主键。
也就是说,表中的主键在所有⾏上必须取唯⼀值。
强制实体完整性的⽅法有:索引、约束、PRIMARY KEY约束或IDENTITY属性。
如:stu表中sid(学号)的取值必须唯⼀,它唯⼀标识了相应记录所代表的学⽣,学号重复是⾮法的。
学⽣的姓名不能作为主键,因为完全可能存在两个学⽣同名同姓的情况。
1、主键(Primary Key):主键列的值不能为NULL,也不能重复创建表:定义列时指定主键:CREATE TABLE stu(sid CHAR(6) PRIMARY KEY,sname VARCHAR(20),age INT,gender VARCHAR(10));创建表:定义列之后独⽴指定主键:CREATE TABLE stu(sid CHAR(6),sname VARCHAR(20),age INT,gender VARCHAR(10),PRIMARY KEY(sid));修改表时指定主键:ALTER TABLE stu ADD PRIMARY KEY(sid);删除主键(只是删除主键约束,⽽不会删除主键列):ALTER TABLE stu DROP PRIMARY KEY;2、主键⾃增长MySQL提供了主键⾃动增长的功能!这样⽤户就不⽤再为是否有主键是否重复⽽烦恼了。
当主键设置为⾃动增长后,在没有给出主键值时,主键的值会⾃动⽣成,⽽且是最⼤主键值+1,也就不会出现重复主键的可能了。
创建表时设置主键⾃增长(主键必须是整型才可以⾃增长):CREATE TABLE stu(sid INT PRIMARY KEY AUTO_INCREMENT,sname VARCHAR(20),age INT,gender VARCHAR(10));修改表时设置主键⾃增长:ALTER TABLE stu CHANGE sid INT AUTO_INCREMENT;修改表时删除主键⾃增长:ALTER TABLE stu CHANGE sid INT;⼆、域完整性:是指⼀个列的输⼊有效性,是否允许为空值。
实验7 SQL Server2005的完整性约束
实验7 SQL Server2005的完整性约束1.实验目的1)掌握数据库约束的概念;2)熟悉SQL SERVER 的完整性约束技术。
3)了解SQL SERVER 的违反完整性处理措施。
2.实验内容1)掌握实体完整性约束(PRIMARY KEY)的定义及其使用;2)掌握参照完整性约束(FOREIGN KEY)约束的定义及其使用;3)掌握唯一性(UNIQUE)约束的定义及其使用;4)掌握CHECK约束的定义及其使用;3.实验内容本实验中涉及两张表:部门表、职工表。
部门表包括部门号、名称、经理名、地址、电话号以及一个部门号主键约束和一个名称的唯一性约束。
职工表包括职工号、姓名、年龄、职务、工资、部门号以及一个职工号的主键约束、一个部门好的外键约束和一个年龄的检查约束。
本次实验通过对这两张表的操作来验证数据库约束的相关概念。
1)建立数据库和相关表结构首先创建一个数据库:Create database ZGGLGO然后执行下列创建表的语句:USE ZGGLcreate table 部门(部门号char(4),名称varchar(20) not null,经理名varchar(8),地址varchar(50),电话号varchar(20),constraint PK_部门 primary key(部门号),constraint UQ_名称 unique(名称))create table 职工(职工号char(4) ,姓名varchar(8) not null ,年龄int ,职务varchar(10) ,工资money,部门号char(4),constraint PK_职工 primary key(职工号),constraint FK _职工_部门 foreign key(部门号) references 部门(部门号)on delete cascade,constraint CK_年龄 check(年龄<=60))2)验证主键(PRIMARY KEY)约束执行下列SQL语句:insert into 部门 values('0001','财务科','张三','湖北汽车工业学院','8238787') 如果用户再次执行insert into 部门 values('0001','财务科','张三','湖北汽车工业学院','8238787')语句,则会违反了 PRIMARY KEY 约束 'PK__部门'。
完整性约束讲解
数据库实验报告三完整性约束一、实验目的1.熟悉主键,外键, check等完整性约束;2. 掌握完整性约束的建立,删除,有效化和无效化;3.熟悉相关的DDL 命令。
4. 学会看数据库模型图。
二、实验内容1.主键约束a.按图1所示,建立所有表的主键约束。
b.运行下列SQL语句:insert into branch values(‘Xiangtan University’,’Xiangtan’,4000000);insert into branch values(‘Xiangtan University’,’Xiangtan’,5000000);记录结果并分析原因。
2.外键约束a. 按照图1所示,建立所有的外键约束。
b. 运行以下的两条SQL语句:insert into loan values(‘L-001’,’Xiangtan University’,1000); insert into loan values(‘L-002’,’Rain Lake’,2000);记录结果并分析原因。
c.运行以下的SQL语句:delete branch;记录结果并分析原因。
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、建立所有表的主键约束。
数据库实验-数据完整性约束
广州XX学院数据库管理及应用实验报告专业班级计算机181 实验日期2020.4.18 姓名李XX 学号2018132 实验名称数据完整性约束指导教师王琢(报告内容包括实验目的、实验设备及器材、实验内容、实验步骤、实验结果、实验小结等)一、实验目的(1)理解数据完整性约束概念。
(2)掌握SQL Server的数据完整性约束技术。
(3)了解SQL Server的违反数据完整性约束的处理措施。
二、实验设备及器材Windows平台、SQL Server 2012。
三、实验内容4.1在数据库EDUC中创建下列完整性约束。
1)为数据库Course_info创建CHECK约束:当插入或修改一个记录时确保此记录的授课学时在10-80。
2)为教师信息表Teacher_info创建CHECK约束:男教师的出生日期在1960年1月1日后,女教师的出生日期在1965年1月1日后。
3)为教师上课信息表TC_info创建CHECK约束:学生成绩在0-100。
4)为教师上课信息表TC_info创建外键约束:tcid、tno、classno和cno。
4.2在数据库TSGL中创建下列完整性约束。
1)创建CHECK约束:readers表的RederType在0-9。
2)利用SSMS删除readers表的约束。
3)创建主键约束:为readers表的字段ReaderID添加主键。
4)创建多个字段的主键:为borrowinf表的ReaderID、BookID字段定义主键。
四、实验步骤4.11)为数据库Course_info创建CHECK约束:当插入或修改一个记录时确保此记录的授课学时在10-80。
USE EDUCGOALTER TABLE Course_infoWITH NOCHECK ADD CONSTRAINT CK_lecture CHECK(lecture>=10 AND lecture <=80)GO2)为教师信息表Teacher_info创建CHECK约束:男教师的出生日期在1960年1月1日后,女教师的出生日期在1965年1月1日后。
完整性约束
deptNo 列;14. 添加约束:允许stuInfo 中的姓名可以为空;允许stuInfo 中的姓名不能重复;创建deptName_check ,要求department 的系名称列的内容,必须大于4个字符长度; 15.删除约束:删除刚才建立的department 表上的deptName_check 约束,删除主键被引用的表department 。
实 验 过 程 及 步 骤1. 登录Oracle ,进入HR 方案,使用DESC 和SELECT 命令查看employees,departments 表的结构和所有数据;desc employees ; desc departments ; select * from departments ; select * from employees ;2.创建一个名为manager的表,它由编号EMPLOYEE_ID,名FIRST_NAME,姓LAST_NAME,邮箱EMAIL,电话号码PHONE_NUMBER,部门编号JOB_ID,薪资SALARY,部门经理编号MANAGER_ID八个属性组成,利用employees表的列和值进行创建;create table manager(EMPLOYEES_ID number(25),FIRST_NAME char(25),LAST_NAME char(25),EMAI number(25),PHONE_NUMBER number(25),JOB_ID number(25),SALARY number(25),MANAGER_ID number(25));3.向manager表中增加“住址”列,长度为30,修改住址列长度为50:7.使用GROUP BY子句对薪金记录进行分组,使用SQL函数计算每个JOB_ID的平均薪金(AVG)、所有薪金的总和(SUM),以及最高薪金(MAX)和各组的行数;select JOB_ID,avg(SALARY),sum(SALARY),max(SALARY),count(JOB_ID)from employees group by JOB_ID;8.使用子查询查看所有部门在某一地区(1700)的雇员信息;select*from employees where DEPARTMENT_ID in(select DEPARTMENT_ID from departments where LOCATION_ID=1700);9.查询EMPLOYEES表,将薪金大于本职位平均薪金的雇员信息显示出来:select*from employees e left join(select JOB_ID,avg(SALARY)as avg_salary from employees group by JOB_ID)b on e.JOB_ID=b.JOB_ID where SALARY>avg_salary;10.用INSERT语句向countries表添加一条记录;insert into countries values('ZZ','China',3);11.从countries表中将france的信息删除;12.使用TRUNCATE语句删除manager表中所有的记录。
数据库的完整性约束-包含答案
数据库的完整性约束-包含答案实验八:数据库的完整性约束一、实验目的1.掌握主键约束、外键约束及及check约束的用法;2.掌握默认值约束的应用。
二、实验环境已安装SQL Server 2008 企业版的计算机;具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1.熟悉数据库完整性相关概念及约束;2.了解约束、默认值;3.完成实验报告;五、实验准备知识1、创建primary key约束(1)在创建数据表时创建primary key约束CREATE TABLE table_name(column_name data_type [PRIMARY KEY | unique | NOT NULL] [, column_name data_type [PRIMARY KEY | unique | NOT NULL]...[PRIMARY KEY(column [,...n])])(2)在修改表时同时创建primary key约束ALTER TABLE table_nameADD primary key(column [,...n])2、创建Foreign key约束(1)创建表时同时定义Foreign key约束CREATE TABLE table_name(column_name data_type [FOREIGN KEY] REFERNCES ref_table(ref_column)[, column_name data_type [FOREIGN KEY] REFERNCES ref_table(ref_column)...[FOREIGN KEY] (column) REFERNCES ref_table(ref_column) )(2)通过修改表定义Foreign key约束ALTER TABLE table_nameADD [FOREIGN KEY] (column)REFERNCES ref_table(ref_column )3、创建check约束(1)创建数据表时创建check约束CREATE TABLE table_name(column_name data_type [NOT NULL | CHECK (logical_expression)] ...CHECK (logical_expression)])(2)在修改数据表时添加check约束ALTER TABLE table_nameADD CHECK (logical_expression)4、创建default约束(1)创建数据表时创建default约束Create table table_name( column_name datatype [not null | DEFAULT (constraint_expression)] …)(2)修改数据表时添加一个字段的同时创建default约束Alter table table_nameADD column_name datatype [not null |DEFAULT (constraint_expression)] with values(3)对表中指定的列定义默认值约束Alter table table_nameADD [ DEFAULT (constraint_expression)] For column5、完整性约束命名子句CONSTRAINT <完整性约束条件名>[PRIMARY KEY 短语︱FOREIGN KEY 短语︱CHECK 短语]6、删除primary key约束或unique约束ALTER TABLE table_nameDROP CONSTRAINT constraint_name [, ...n]六、实验内容及步骤使用T-SQL语句实现以下操作;1.请用至少2种方法定义stu数据库中student表的主键sno;方法1:CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20),Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20))方法2:CREATE TABLE Student(Sno CHAR(9),Sname CHAR(20),Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY(Sno))2.将数据库stu的表course的cno字段定义为主键,约束名称为cno_pk;Alter table courseAdd constraint cno_pk primary key (cno)3.为表course中的字段cname添加唯一值约束;Alter table courseAdd constraint cname_pk unique (cname)4.将数据库stu的表sc的sno及cno字段组合定义为主键,约束名称为sc_pk;Alter table scAdd constraint sc_pk primary key (sno,cno)5.对于数据表sc的sno、cno字段定义为外码,使之与表student 的主码sno及表course的主码cno对应,实现如下参照完整性:1)删除student表中记录的同时删除sc表中与该记录sno字段值相同的记录;2)修改student表某记录的sno时,若sc表中与该字段值对应的有若干条记录,则拒绝修改;3)修改course表cno字段值时,该字段在sc表中的对应值也应修改;4)删除course表一条记录时,若该字段在在sc表中存在,则删除该字段对应的记录;Use stuCreate table student(Sno CHAR(9),Sname CHAR(20),Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY(Sno))Create table course(cno char(4),cname char(40),cpno char(4),ccedit smallint,foreign key (cpno) references course(cno),primary key (cno))Create table sc(sno char(9),cno char(4),Grade smallint,foreign key (sno) references student(sno)on delete cascade on update no action,foreign key (cno) references course (cno)on delete cascade on update cascade)6.定义check约束,要求学生学号sno必须为9位数字字符,且不能以0开头,第二三位皆为0;Alter table studentAdd CONSTRAINT sno_ckCheck (sno like ‘[1-9]00 [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]’)7.定义stu数据库中student表中学生年龄值在16-25范围内;CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20),Ssex CHAR(2),Sage SMALLINT Check (sage>=16 and sage<=25),Sdept CHAR(20))8.定义stu数据库中student表中学生性别列中只能输入“男”或“女”;CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20),Ssex CHAR(2) Check(Ssex in (‘男’,’女’)),Sage SMALLINT,Sdept CHAR(20))9.定义stu数据库student表中学生年龄值默认值为20;CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20),Ssex CHAR(2),Sage SMALLINT Default 20,Sdept CHAR(20))七、出现问题及解决办法如:某些操作无法执行,如何解决?。
数据库实验报告完整性约束
海事大学数据库原理课程实验大纲实验名称:实验七完整性实验学时: 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数据库模式设计各种完整性约束,每种类型完整性约束至少要设计一个,描述清楚完整性约束要求,设计和运行触发完整性约束检查的数据更新语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。
数据库完整性约束的使用与实践(七)
数据库完整性约束的使用与实践一、引言数据库是现代信息管理和存储的重要工具,而数据库完整性约束则是保证数据库数据的正确性和准确性的关键机制之一。
数据库完整性约束定义了数据的有效性规则,限制了对数据库中数据的非法操作和插入。
本文将探讨数据库完整性约束的使用与实践。
二、唯一性约束唯一性约束是数据库完整性约束的一种常用形式,它要求某列的值在整个数据库中是唯一的。
在实际应用中,我们经常会遇到需要保证某些数据的唯一性,例如学生的学号、商品的条形码等。
通过在数据库表的相应列上设置唯一性约束,可以有效地避免重复数据的插入和错误操作。
三、主键约束主键约束是一种特殊的唯一性约束,它对某列或某组列的值进行唯一性限制,并将其定义为数据库表的主键。
主键用于唯一地标识表中的每一行数据,方便数据的检索和操作。
在实践中,我们通常会选择具有唯一性且不可更改的列作为主键。
主键约束的使用可以有效地保证数据的完整性和一致性。
四、外键约束外键约束用于建立表与表之间的关联关系,确保引用到其他表的数据的有效性。
通过外键约束,我们可以定义两张表之间的父子关系或者关联关系,从而实现数据的完整性和一致性。
例如,在一个学生选课系统中,学生表和课程表之间可以通过学生表中的学号和课程表中的课程编号来建立外键约束,确保只有已有的学生和课程才能进行选课操作。
五、检查约束检查约束用于限制某列的取值范围,确保数据的有效性和合法性。
通过检查约束,可以在插入或修改数据时对其进行条件判断,仅允许符合规定条件的数据被操作。
例如,在一个商品销售系统中,价格列的取值范围应该是非负数,通过设置检查约束可以有效地避免用户录入负数的价格数据。
六、默认值约束默认值约束用于定义某列在没有指定值时的默认取值。
通过设置默认值约束,可以在插入数据时省去省略该列的麻烦,并避免因此产生的错误。
例如,在一个用户注册系统中,可以设置用户名列的默认值为“未命名”,这样当用户没有输入用户名时,默认使用该值进行注册。
实验七完整性约束的创建
实验七完整性约束的创建一、实验目的理解数据库完整性约束的概念,掌握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的主键。
实训7 数据完整性操作
实训7 数据完整性操作目的和要求1. 学会使用primary key(主键)约束,unique(唯一)约束保证表完整性2. 学会使用check(检查)约束,default(默认)约束,default(默认值),rule(规则)保证列数据完整性3. 学会使用primary key(主键)约束、foreign key(外键)约束保证表与表之间的参照完整性。
实验环境Windows XP和SQL Server 2005的运行环境实验原理SQL Server 2005数据库原理实验内容与步骤任务1 使用Management studio 为student表创建primary key 约束。
任务2 使用Management studio 为stucou表创建一个primary key 约束,保证不会出现学号和课程编号都相同任务3使用Management studio 删除student表的primary key 约束。
任务4使用transact-sql语句为department表创建基于departNO列的约束,为course表创建基于couNO列的约束。
为class创建基于classNO列的约束。
use xkgo--为department表创建基于departNO列的名为:pk_department的主键约束。
alter table departmentadd constraint pk_department primary key (departNO)go--为course表创建基于couNO列的名为:pk_course的主键约束。
alter table courseadd constraint pk_course primary key (couNO)go--为class表创建基于classNO列的名为:pk_class的主键约束。
alter table classadd constraint pk_class primary key (classNO)go以下为:在创建表的同时创建主键约束。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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。