实验二 SQLSERVER数据表的设计与完整性约束
实验报告 SQL SERVER 2000的约束、默认和规则
char
9
否
主键
CourseID
课程号
int
4
否
主键
DailyGrade
平时成绩
decimal
5,1
不小于0且不大于20
PracticeGrade
实践成绩
decestGrade
期末成绩
decimal
5,1
不小于0且不大于50
Grade
总评
由平时成绩(20%)、实践成绩(30%)和期末成绩(50%)计算而来
教师
评语
安庆论坛/
(3)使用sp_unbindefault存储过程将DF_GRADE从DailyGrade、PracticeGrade和TestGrade字段上解除。
(4)删除DF_GRADE默认值对象。
实验结果与结论
完成表中的约束、默认和规则等操作,实验很成功.
问题及解决方法
默认值约束和默认值对象是一回事吗?
答:不是一回事.建立和使用约束的目的是保证数据的完整性,约束是SQL Server强制实行的应用规则,他能够限制用户存放到表中数据的格式和可能值。约束作为数据库定义的一部分在CREATE TABLE语句中声明,所以又称做声明完整性约束。约束独立于表结构,可以在不改变表结构情况下,通过ALTER TABLE语句来添加或者删除。在删除一个表时,该表所带的所有约束定义也被随之删除。
grade属性名属性描述数据类型约束备注studentnum学号char主键courseid课程主键dailygrade平时成绩decimal51不小于0不大于20practicegrade实践成绩decimal51不小于0不大于30testgrade期末成绩decimal51不小于0不大于50grade总评由平时成绩20实践成绩30和期末成绩50计算而来2
SQL语言基础:SQL中的数据完整性约束用法
SQL语言基础:SQL中的数据完整性约束用法前言数据库的完整性是指数据库正确性和相容性,是防止合法用户使用数据库时向数据库加入不符合语义的数据,从而保证了数据库中的数据是正确的,避免非法的更新操作。
1、主键约束1.1 完整性约束条件完整性约束条件作用的对象有关系、元组、列三种。
1.2 完整性控制主要有三个方面的功能:定义功能、检测功能、处理功能。
检查是否违背完整性约束的时机有立即执行约束、延时执行约束。
最重要的完整性约束条件是实体完整性、参照完整性。
1.3 实体完整性 Primary Key在关系中只能有一个主键。
声明主键调入方法:•1、将 Primary Key 保留字加在属性类型之后。
比如 Sno char(10) Primary Key•2、在属性列表中引入一个新元素,该元素包含保留字Primary Key 和圆括号括起来的形成该键的属性或属性组列表。
比如:Primary Key (Sno)1.4 外键(Foreign Key)约束语法格式:Foreign Key (属性名) references 表名(属性名)[ON DELETE][CASCADE][SET NULL]说明:•Foreign Key 定义那些列为外码;•references 指明外码属于哪个表的主码;•ON DELETE CASCADE 指明删除记录同时删除关系中的记录;•SET NULL 表示置为空值方式。
比如:Foreign Key Sno references Student (Sno)1.5 属性值上的约束主要包括:•not null 不为空•unique 唯一约束•check 设定属性值需要满足的条件。
比如:age Number(3) check (age>0 and age <180)1.6 全局约束全局约束是值一些比较复杂的完整性约束,这些约束涉及多个属性间的联系或多个不同关系间的联系。
有基于元组的检查子句、断言。
SQL Server约束完整性研究
( 新余高等专科学校 , 江西 新余 3 8 3 ) 3 0 1
【 摘 要 】 约束是S L e e提供的自 保持数据库完 Q r r Sv 动 整性的 一种方法, 约束完 是指数据的正 整性 确性和完 备性。 主 本文
要 阐述 了 S ev r QLS re 约束 完整 性 的分 类 和 S ev r QLS re 约束 完整 性 的 实现 方 法 。
的 I E TT D N I Y属性来实施实体完整性 。
23 域 完 整 性 .
域完整性 即为某列有效值的集合 , 用来约束指定列的取值 范围, 确定哪些 数据是数 据库 可以接受 的 , 哪些数据是非法数 据 。它要求表 中指定列 的数据具有 正确 的数据类型、 格式和有 效 的数据范围。 强制域有效性的方法有 : 限制类 型( 通过数据类 型)格式( 、 通过 C E K约束和规则 ) H C 或可能值 的范围。 域完整 性通 过 F R I NK Y约 束、 H K约束、 E AU T定义 、 O E G E C EC D F L
一
类型完整性约束是用来 判断用户输入 的数据是否满 足数
据库对该数据 的类型要求。 尽管类型完整性与域完整性是两种
独立 的概念 , 但是 , 应用类型完整性一般会涉及到域 。
25 转 换 完 整性 .
致, 如为某产品增加 了一份定单 , 但却没有调整产品的库存
信息 ; 3) ( 将存在 的数据修改为无效 的数据 , 如将某学生 的班
( E A T C N T AI T ) 检 查 约 束 D F UL O S R N S、 (H C O 一 C E K C N
NO U L定 义和 规 则来 实 现 。 TN L
SQL server数据类型和完整性约束
我本来以为这一部分对于有编程基础的人来说很容易就没有详细的研究。
后来,在设计数据库表的时候,用varchar类型写入中文会乱码,之后我将varchar类型改为nvarchar类型时才解决。
我意识到,这部分很简单,但也要仔细区分。
数据类型定义要精确,这样不容易出现意想不到的问题,也节省了内存。
首先解决一个问题:字符与字节(一)“字节”的定义字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位。
(二)“字符”的定义字符是指计算机中使用的文字和符号,比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。
(三)“字节”与“字符”不同编码里,字符和字节的对应关系不同:①ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。
最小值0,最大值255。
②UTF-8编码中,一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。
③Unicode编码中,一个英文等于两个字节,一个中文(含繁体)等于两个字节。
符号:英文标点占一个字节,中文标点占两个字节。
举例:英文句号“.”占1个字节的大小,中文句号“。
”占2个字节的大小。
④UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。
⑤UTF-32编码中,世界上任何字符的存储都需要4个字节。
一:定义列的数据类型字符串1:char [(n)]固定长度,非Unicode字符数据。
(在列数据项的大小一致时使用)n的范围1-8000字节2:varchar [(n|max)]可变长度,非Unicode字符数据。
(在列的数据项的大小差距很大时使用)Max指示最大存储大小2的31次幂-1字节。
3:text服务器代码页中长度可变的非Unicode字符数据,最大长度为2的31次幂-1个字符。
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约束完整性
用户自定义函数
标量型函数 create function fun1(@a int,@b int) returns char(3) as begin
• 删除的关联 • 修改的关联 实体完整性 保证表中的行唯一
域完整性 约束指定列的取值范围
类型完整性 用户输入的数据是否满足数据类型
约束完整性分类
转换的完整性 数据变化时不违反原定规则
事务完整性 数据操作时必须遵循实际的规则才能完成事务
约束的实现方法
默认约束 Alter table stu add constraint def_sex default ‘m’ for sex
默认和规则的应用
默认的存储空间不超长
和它要绑定的列或自定义类型有相同数据类型
符合要绑定列的任何规则和check约束 在一列上至多有一个规则起作用(最后一个起作用) 绑定的默认只适用于受INSERT语句影响的行 绑定的规则只适用于INSERT,UPDATE语句影响的
行
同一个默认或规则同时绑定到了自定义数据类型和 应用这个自定义类型的列上时,绑定到列上的默认 或规则有效。
什么是约束完整性
即数据的正确、有效、完备性
无效数据的添加,如添加一个学生,但其班级错写 了一个不存在班级。
对数据库修改不一致,如修改了班级号但学生表里 没有随之改变。
将存在数据改为无效数据。将班级号改为不存在的 班级号。
约束完整性分类
引用完整性
两个或两个以上的表主键表和外键表的数据对 应eate procedure proc4 @a int as if @a=100 return(100) else return(101) declare @result int exec @result=proc4 105 print @result
数据库SQLServer2012笔记(五)——维护数据的完整性——约束
数据库SQLServer2012笔记(五)——维护数据的完整性——约束1、概念1)约束⽤于确保数据库数据满⾜特定的商业规则。
2)在sql server中,约束包括:not null,unique,primary key,foreigh key,check五种。
2、not null(⾮空)如果在列上定义了not null,那么当插⼊数据时,必须为列提供数据。
3、unique(唯⼀)当定义了唯⼀约束后,该列值是不能重复的,可以为null,但最多只能有⼀个是null。
4、primary key不能重复且不能为null。
⼀张表最多只能有⼀个主键,但是可以有多个unique约束。
表可以有复合主键多个咧构成⼀个主键放在最后:primary key(字段1,字段2)同时相同,才为重复。
5、⾏级定义和表级定义create table test(Id int,name nvarchar(30),age int not null,——>⾏级定义primary key(Id,name)——>表级定义)6、foreign key:定义主表(被引⽤的表)和从表(引⽤外键的表)之间的关系。
1)外键约束要定义在从表。
2)主表必须有主键约束或unique约束。
3)外键列数据必须在主表的主键列存在或为null。
7、check:⽤于强制⾏数据必须满⾜的条件。
8、default:若不赋值,则给默认值create table mes (Id int primary key identiry(1,1), mesDate datatime default getdate())插⼊数据时,若不给出时间,则赋本地时间。
SQL SERVER数据完整性及约束
SQL SERVER数据完整性及约束【摘要】所谓数据完整性,实际上是衡量数据库中数据质量好坏的一种标志,是确保数据库中数据一致,正确以及符合企业规则的一种思想,本文以详细的文字来介绍了什么是数据完整性及约束,以及如何在数据库建设中应用和使用这些约束。
【关键词】SQL Server;约束;数据完整性;一致性在数据库管理系统中,保证数据库中的数据完整性是非常重要的。
所谓数据完整性,就是指存储在数据库的表中数据的一致性和正确性。
约束定义关于列中允许值的规则,是强制完整性的标准机制,对输入数据的取值范围和格式的限制称为约束。
约束是用来保证数据完整性的。
在SQL Server中有6种常设约束:空置约束(NULL)、唯一性约束(unique constraint)、主键约束(primary key constraint)、外键约束(foreign key constraint)、检查约束(check constraint)、缺省约束(default constraint)。
一、SQL Server的数据完整性存储在数据库中的所有数据值均属正确的状态。
如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。
强制数据完整性可确保数据库中的数据质量。
例如,如果有一“教学管理数据库”,学生表中学号一项输入了值为20110101的学生,那么该数据库不应允许其他学生使用同一学号值。
如果计划将选修表中成绩的值范围设定为0到100,则数据库不应接受121。
如果学生表有一列为班级编码,该列存储的班级编码为数据库中允许的有效班级编码。
二、数据完整性分类在SQL Server中,根据数据完整性所作用的数据库对象和范围不同,可以将数据完整性分为实体完整性、域完整性、引用完整性、用户定义完整性四种。
1、实体完整性实体完整性,简单来说,就是将表中的每一行看作一个实体。
实体完整性要求表的标示符列或主键的完整性(主键不能为空)。
SQLServer的数据库完整性和实现方法
2015
数据库的完整性:数据完整性就是指 存储在数据库中的数据正确无误并且相关 数据具有一致性。数据库中是否存在完整 的数据关系到数据库系统能否真实的反映 现实世界。它是衡量数据库中数据好坏的 一种标志,是确保正确的数据被存放在正 确的位置的一种手段。例如:学校的学生 学号必须是唯一的;性别只能为男或女; 学生所在的系必须是学校已开设的系等。
触发器的用途是维护行级数据的完整性,它不能返回结果集。与CHECK 约束相比,触发器能强制实现更加复杂的数据完整性,能执行操作或 级联操作,能实现多行数据间的完整性约束,能维护非正规化的数据。
you
放映结束 感谢各位观看!
谢 谢!
让我们共同进步
2.数据完整性的两种方式
(1)声明数据完整性 声明数据库完整性通过在对象定义、系统本身自动 强制来实现。声明数据完整性包括各种约束、默认 和规则。 (2)过程数据完整性 过程数据完整性通过使用脚本语言定义,系统在执 行这些语言时,强制完整性实现。过程数据完整性 包括触发器和存储过程等。
3.实现数完整性的具体方法
默认和规则与约束相比,功能较低但开支大。所以,如果默认和规则 可以使用约束方法表示,要尽可能采用约束数据完整性方法处理。
(4)触发器
触发器是一个特殊的存储过程。在创建触发器时通过CREATE TRIGGER 语句定义触发器对应的表、执行的事件和触发器的指令。当发生事件 后,会引发触发器执行,通过执行其指令,保证数据完整性。
1.数据库完整性的分类
(1)域完整性
域完整性为列级和元组级完整性。它为列或列组指定一个有效的数据 集,并确定该列是否允许为空。域完整性要求向表中指定列输入的数 据必须具有正确的数据类型、格式以及有效的数据范围。实现域完整 性的方法主要有CHECK约束、外键约束、默认约束、非空定义、规则以 及在建表时设置的数据类型。
SQL Server的数据库完整性及实现方法
插入数据时,如果没有明确提供列值,则用默认值作 为该列的值。
指定某个列或列组可以接受的范围,或指定数据应满 足的条件。 指定主码,确保主码值不重复,并不允许主码为空值。 指出数据应具有唯一值,防止出现冗余。 定义外码、被参照表和主码。 约束类型和完整性功能
3.实现数完整性的具体方法
(2)声明数据完整性约束的定义 声明数据完整性约束可以在创建表和修改表语句中定 义。约束分列级约束和表级约束两种:列级约束定义时, 直接跟在列后,与列定义子句之间无“,”分隔;元组级 约束和表级约束要作为语句中的单独子句,与列定义子句 或其他子句之间用“,”分隔。
1sqlserver约束的类型约束类型和完整性功能完整性类型约束类型完整性功能描述域完整性默认插入数据时如果没有明确提供列值则用默认值作检查指定某个列或列组可以接受的范围或指定数据应满足的条件
SQL Server的数据库完整性及实现方法
2015
数据库的完整性:数据完整性就是指 存储在数据库中的数据正确无误并且相关 数据具有一致性。数据库中是否存在完整 的数据关系到数据库系统能否真实的反映 现实世界。它是衡量数据库中数据好坏的 一种标志,是确保正确的数据被存放在正 确的位置的一种手段。例如:学校的学生 学号必须是唯一的;性别只能为男或女; 学生所在的系必须是学校已开设的系等。
ቤተ መጻሕፍቲ ባይዱ
you
CREATE TABLE 民族
( 民族代码 民族名称 GO char(2) CONSTRAINT pk_mzdm PRIMARY KEY, varchar(30) NOT NULL)
此例题就是建立了一个列级主键
3.实现数完整性的具体方法
(3)默认和规则 默认(DEFAULT)和规则(RULE)都是数据库对象。当它们被创建后,可以 绑定到一列或几列上,并可以反复使用。当使用INSERT语句向表中插 入数据时,如果设有为绑定有DEFAULT的列指定数据,系统就会将 DEFAULT指定的数据插入;如果绑定有RULE的列,则所插入的数据必须 符合RULE的要求。 默认和规则与约束相比,功能较低但开支大。所以,如果默认和规则 可以使用约束方法表示,要尽可能采用约束数据完整性方法处理。 (4)触发器 触发器是一个特殊的存储过程。在创建触发器时通过CREATE TRIGGER 语句定义触发器对应的表、执行的事件和触发器的指令。当发生事件 后,会引发触发器执行,通过执行其指令,保证数据完整性。 触发器的用途是维护行级数据的完整性,它不能返回结果集。与CHECK 约束相比,触发器能强制实现更加复杂的数据完整性,能执行操作或 级联操作,能实现多行数据间的完整性约束,能维护非正规化的数据。
SQL_server_2005完整性约束
数据完整性(UNIQUE)
唯一约束 确保在非主键列中不输入重复的值。 UNIQUE与PRIMARY KEY的区别与联系:
都强制唯一性,PRIMARY KEY约束自动使用 UNIQUE约束。 允许空值的列上可以定义UNIQUE约束,而不能定 义PRIMARY KEY约束。 一个表可以定义多个UNIQUE约束,而只能定义一 个PRIMARY KEY约束。
Goods
g_ID g_name g_price g_number
001
诺基亚
1500
20
002 003
三星 冰箱 劲霸西服
2500 2468
13 15
004
1468
18
数据库完整性
数据库完整性(约束)
(89)
为了保证数据的准确性和一致性,而采取的 限制措施
数据库完整性
(89)
主要有四类数据完整性 实体完整性 规定表的每一行在表中是唯一的 域完整性 数据库表中的列必须满足的某种约束 引用完整性 两个表的主关键字和外关键字的数据对应一致 用户定义的完整性(用户完整性) 由用户定义的特定约束。
数据完整性(PRIMARY KEY)
编号 1 2 3 4 5 6 7 订单号 11012 11012 11430 11430 11132 21850 21850 商品号 010001 060001 060001 010007 010008 010006 020002 价格 1356 37.44 37.44 2070 2700 2720 5344 数量 1 1 1 2 1 1 1
数据完整性(FOREIGN KEY)
商品表(GOODS) 外键 主键 商品类别信息表(Types)
02_数据完整性实验(SQL Server)
第3章实验数据完整性实验(SQL Server) 实验目的:加深对数据完整性的理解。
实验内容:数据库的完整性设置。
实验步骤:可视化界面的操作方法:一、实体完整性1.将student表的sno字段设为主键,如图1所示。
图12.将sc表的sno和cno设置为主键,如图2所示:图2二、域完整性3.将ssex字段设置为只能取“男”,“女”两值,如图3所示。
图3三、参照完整性4.将student表和sc表中的sno字段设为参照,见图6.4。
图4命令方式操作方法:一、实体完整性1.将student表的sno字段设为主键:当student表已存在则执行:alter table student add constraint pk_sno primary key (sno) 当student表不存在则执行:Create table student(sno CHAR(5) primary key ,sname CHAR(10),ssex CHAR(2) ,sage int,sdept CHAR(4))2.添加一身份证号字段,设置其惟一性。
Alter table student add id char(18) unique (id)3.将sc表的sno和cno设置为主键:当sc表已存在则执行:alter table sc add constraint PK_SnoCno primary key (sno,cno)当sc表不存在则执行:Create table sc(sno CHAR(5),cno CHAR(2),grade INT NULL,constraint PK_SnoCno primary key (sno,cno))二、域完整性4.将ssex字段设置为只能取“男”,“女”两值:当student表已存在则执行:alter table student add constraint CK_Sex check (ssex in ('男' ,'女'))当student表不存在则执行:Create table student(sno CHAR(5) primary key ,sname CHAR(10),ssex CHAR(2) check (ssex in ('男' ,'女')) ,sage int, sdept CHAR(4))5.设置学号字段只能输入数字:alter table student add constraint CK_Sno_Format check (sno like '[0-9][0-9][0-9][0-9][0-9]') 6.设置身份证号的输入格式:alter table student add constraint CK_ID_Format check((id like '[0-9][0-9][0-9][0-9][0-9][0-9] [1-2][0-9][0-9][0-9][0-1] [0-9][0-3][0-9] 0-9][0-9] [ [0-9]_') or (id like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]')) 7.设置18位身份证号的第7位到第10位为合法的年份(1900-2050)alter table student add constraint CK_ID_Format2 check( not len(id)=18or ( (convert(smallint,substring(id,7,4) )>=1900) and(convert(smallint,substring(id,7,4) )<=2050)) )8.设置男生的年龄必须大于22,女生的年龄必须大于20。
数据库实验-数据完整性约束
广州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日后。
SQL Server-2(完整性约束)
外键约束(Foreign Key Constraint):用于两表 间建立关系,需要指定引用主表的那列
2013-5-22
8
关系模型的完整性约束
根据上述定义
第二形式声明外:constrain FK_表名简称
foreign key(引用列名)
reference
Key 被引用表名(被引用列)
2013-5-22
9
关系模型的完整性约束
根据上述定义
约束属性列非空、取值唯一、列的取值限制
定义惟一值
一个ID标识列。
2013-5-22
3
关系模型的完整性约束
参照完整性(Foreign
Key)
现实世界中的实体之间往往存在某种联系,
在关系模型中实体及实体间的联系都是用 表来描述的,这样就自然存在着表语表间 的数据引用。
外键:如果F是表R的一个或一组属性,
但F不是表R的键,如果F的值引用表S主 键的值,则称F是表R的外键(Foreign Key)
2013-5-22
6
关系模型的完整性约束
根据上述定义
第二种形式声明主键:constrain PK_表名
简称 primary key(属性列)
2013-5-22
7
关系模型的完整性约束
根据上述定义
第一种形式声明外:属性
数据类型 foreign key reference Key 被引用表名 (被引用列)
默认约束
2013-5-22
12
关系模型的完整性约束
根据上述定义
特殊操作:某些字段的引入只是作为记录的
标识,如何让这个字段值随着记录的插入其 标识值自增。
[SQL]基本表的定义及其完整性约束
[SQL]基本表的定义及其完整性约束在使⽤数据库时,绝⼤多数时间都是在使⽤基本表。
SQL Server数据类型创建基本表基本格式如下:create table <表名>(<列名1> <数据类型> [<列级完整性约束条件>],……<列名n> <数据类型> [<列级完整性约束条件>][, <表级完整性约束条件>])如果完整性约束涉及到多个属性列,则必须定义在表级上,否则可以定义在列级或表级。
如下创建⼀个Persons基本表:use test -- 在该数据库中创建基本表gocreate table Persons(Id_P int primary key, -- Id_P为主键LastName nvarchar(20),FirstName nvarchar(20),Address nvarchar(50),City nvarchar(10))go完整性约束完整性约束的⽤途是限制输⼊到基本表中的值的范围,SQL的完整性约束可分为列级完整性约束和表级完整性约束:列级完整性约束:针对关系属性值的限定条件,只能应⽤在⼀列上表级完整性约束:涉及关系中的多个属性的限制条件,可以应⽤在⼀个基本表中的多个列上。
如果完整性约束涉及到多个属性列,则必须定义在表级上,否则可以定义在列级或表级。
当创建完整性约束之后,它作为基本表定义的⼀部分,存⼊数据字典中。
pri m ary key约束主键(primary key)约束是实体完整性约束,primary key⽤于定义主键,它保证主键的唯⼀性与⾮空性。
⼀个基本表的主键由⼀列或者⼏列构成,可以定义在列级或者表级上,但是不能在两个级别上进⾏定义。
定义主键约束的⽅法如下:1. primary key之间写在列名及其数据类型之后。
例如:create table test(col_name int primary key,……)2. 按照语法在相应的列名及其数据类型后单独列出:constraint <约束名> primary key约束名就是主键的名字。
T-SQL:SQLServer定义数据完整性6大约束(三)
T-SQL:SQLServer定义数据完整性6⼤约束(三)1.创建⼀客户张表1IF OBJECT_ID('dbo.Employees', 'U') IS NOT NULL2DROP TABLE dbo.Employees;34CREATE TABLE dbo.Employees5(6 empid INT NOT NULL,7 firstname VARCHAR(30) NOT NULL,8 lastname VARCHAR(30) NOT NULL,9 hiredate DATE NOT NULL,10 mgrid INT NULL,11 ssn VARCHAR(20) NOT NULL,12 salary MONEY NOT NULL13 );2.主键约束-- Primary keyALTER TABLE dbo.EmployeesADD CONSTRAINT PK_EmployeesPRIMARY KEY(empid);对于主键约束后台将创建⼀个唯⼀索引,以物理机制强制逻辑的唯⼀性约束3.唯⼀约束-- UniqueALTER TABLE dbo.EmployeesADD CONSTRAINT UNQ_Employees_ssnUNIQUE(ssn);4.外键约束创建⼀张订单表插⼊外键IF OBJECT_ID('dbo.Orders', 'U') IS NOT NULLDROP TABLE dbo.Orders;CREATE TABLE dbo.Orders(orderid INT NOT NULL,empid INT NOT NULL,custid VARCHAR(10) NOT NULL,orderts DATETIME2 NOT NULL,qty INT NOT NULL,CONSTRAINT PK_OrdersPRIMARY KEY(orderid));-- Foreign keysALTER TABLE dbo.OrdersADD CONSTRAINT FK_Orders_EmployeesFOREIGN KEY(empid)REFERENCES dbo.Employees(empid);5.CHECK约束-- CheckALTER TABLE dbo.EmployeesADD CONSTRAINT CHK_Employees_salaryCHECK(salary >0.00);6.默认约束-- DefaultALTER TABLE dbo.OrdersADD CONSTRAINT DFT_Orders_ordertsDEFAULT(SYSDATETIME()) FOR orderts;-- CleanupDROP TABLE dbo.Orders, dbo.Employees;。
六,SQLServer完整性约束条件
六,SQLServer完整性约束条件1. 空值约束(NULL或NOT NULL) 空值约束决定属性值是否运⾏为空值(NULL)。
NULL表⽰没有输⼊任何内容,它不是零和空⽩。
不允许为空值⽤NOT NULL表⽰。
eg:新建学⽣表,设置姓名不允许为空,性别允许为空。
CREATE TABLE stu (name CHAR(10) NOT NULL,sex CHAR(2) NULL)2. 主键约束(PRIMARY KEY CONSTRAINT) 主键约束要求主键属性取值必须唯⼀,⼀个表只能包含⼀个主键约束。
如果没有在主健约束中指定CLUSTERED或NONCLUSTERED,并且没有为UNIQUE约束指定聚集索引,则将对该主健约束⽤CLUSTERED。
语法:[CONSTRAINT 约束名] PRIMARY KEY [CLUSTERED | NONCLUSTERED] (列名 [,...n])eg1:新建学⽣表,将id设置为主键 CREATE TABLE stu (id CHAR(12) NOT NULL,name CHAR(10) NOT NULL,sex CHAR(2) NULL,CONSTRAINT pk_stu PRIMARY KEY CLUSTERED (id))eg2:新建学⽣表,将id和name设置为联合主键CREATE TABLE stu (id CHAR(12) NOT NULL,name CHAR(10) NOT NULL,sex CHAR(2) NULL,CONSTRAINT pk_stu PRIMARY KEY CLUSTERED (id,name))3. 唯⼀性约束(UNIQUE CONSTRAINT) 唯⼀性约束⽤于指定⼀个或者多个列的组合的值具有唯⼀性,以防⽌在列中输⼊重复的值。
使⽤唯⼀性约束时,需考虑⼀下因素:使⽤唯⼀性约束的字段允许为空值⼀个表中可以允许有多个唯⼀性约束可以把唯⼀性约束定义在多个字段上唯⼀性约束⽤于强制在指定字段上创建⼀个唯⼀性索引在默认情况下,创建的索引类型为⾮聚簇索引 语法:[CONSTRAINT 约束名] UNIQUE [CLUSTERED | NONCLUSTERED] (列名 [,...n])eg:创建学⽣表,设置id和phone唯⼀ CREATE TABLE stu (id CHAR(12) NOT NULL,name CHAR(10) NOT NULL,phone CHAR(11) NULL,CONSTRAINT uniq_stu UNIQUE (id, phone))4. 检查约束(CHECK CONSTRAINT) 使⽤检查约束时,应该注意:⼀个列级检查约束只能与限制的字段有关,⼀个表级检查约束只能与限制的表中字段有关⼀个表可以定义多个检查约束每个CREATE TABLE语句中每个字段只能定义⼀个检查约束在多个字段上定义检查约束,则必须将检查约束定义为表级约束检查约束中不能包含⼦查询 语法:CONSTRAINT CONSTRAINT_name CHECK [NOT FOR REPLICATION] (logical_expression)eg:新建学⽣表,设置id只接受⾸位⾮0的四位数,性别字段只能设为F或MCREATE TABLE stu (id int NOT NULL,name VARCHAR(10) NOT NULL,sex CHAR(1) NULL,CONSTRAINT chk_id CHECK (id LIKE'[1-9][0-9][0-9][0-9]'),CONSTRAINT chk_sex CHECK (sex IN ('F','M')))5. 默认约束(DEFAULT CONSTRAINT) 使⽤默认约束时,应该注意:每个字段只能定义⼀个默认约束如果定义的默认值长于其字段的最⼤长度,该默认值输⼊到表中将被截断不能加⼊到带有IDENTITY属性或数据类型为timestamp的字段上如果字段定义为⽤户定义的数据类型,并且该数据类型绑定到这个字段上,则不允该字段由默认约束6. 外部键约束(FOREIGN KEY CONSTRAINT) 外部键约束⽤于强制参照完整性,提供单个字段或者多个字段的参照完整性。
实验创建数据库及关系表数据完整性约束
实验创建数据库及关系表数据完整性约束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位长。
数据库实验二建立表和数据完整性
实验二:建立表和数据完整性一、实验目的与要求:1.实验目的(1)掌握建立表、修改表结构等基本操作。
(2)掌握数据完整性的功能,加深对数据完整性的理解。
2.实验要求(1)使用创建数据库技术建立名称为“学生管理”数据库。
(2)建立“院系”、“学生”、“教师”、“课程”、“选课”等5张表,具体要求见实验指导书。
(3)修改表的结构,具体要求如下:①为学生表增加一个“平均成绩”字段,类型为短整型,默认是空值。
②为课程表的“学时”字段重新定义约束:取值为8的倍数,不允许为空值。
③将院系表的“名称”字段的类型修改为varchar(30)。
④为教师表增加一个“工资”字段,类型为5位整数、2位小数的数值型。
二、实验内容1、实验原理基本表是SQL Server的数据库对象,包含了表中的列,计算列和表级约束。
对它的操作有创建、修改和删除。
(1)建立基本表结构的命令:CREATE TABLE [schema_name].table_name({<column_definition>|<computed_ column_definition >}[ < table_constraint> ][,…n])其中列定义(column_definition)的基本格式是:column_name<data_type>[NULL|NOT NULL][[CONSTRAINT constraint_name] PRIMARY KEY|UNIQUE|[FOREIGN KEY]REFERENCES [schema_name.] referenced_table_name [(ref_column)][ON DELETE {NO ACTION|CASCADE|SET NULL|SET DEFAULT}][ON UPDATE {NO ACTION|CASCADE|SET NULL|SET DEFAULT}]|CHECK (logical_expression)][DEFAULT constraint_expression]如果需要还可以定义计算列(computed_column_definition)和表级约束(table_ constraint)●空值约束NOT NULL和NULL●主关键字约束PRIMARY KEY●惟一性约束UNIQUE●参照完整性约束FOREGIN KEY●默认值定义DEFAULT●取值范围约束CHECK(2)修改表结构的命令:ALTER TABLE schema_name.table_name{ ALTER COLUMN column_name <data_type>[NULL|NOT NULL]| ADD< column_definition > | < computed_column_definition >| < table_constraint >| DROP[ CONSTRAINT ] constraint_name COLUMN column_name }(3)删除数据表的命令格式:DROP TABLE table-name2、实验步骤与结果(1)调出SQL Server2005软件的用户界面,进入SQL SERVER MANAGEMENT STUDIO。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
海南热带海洋学院
课程实验报告
(2017 ~2018年度第二学期)
专业网络工程
课程数据库系统原理
班级2016
姓名郭鹏亮
学号16240021
教师陈作聪
海南热带海洋学院电子信息工程学院制
实验报告填写说明
1、填写一律用钢笔或圆珠笔填写或打印,要求字迹工整,条理清晰。
2、“实验题目”可以填写章节名称或用文字表述。
3、“实验目的”要逐条列出,“实验内容”以简练的文字进行概括。
4、“附注”处填写实验注意事项或调试过程,以及实验中出现的异常情况和解决方法。
5、“教师批阅”处由课任老师填写评语,给出实验成绩,并作为平时成绩,参与期末成绩总评。
(2)创建系部信息表:
)学院信息表输入数据:
(3)教研室信息表输入数据:
输入下列T-SQL语句,创建“课程信息表”
)输入下列T-SQL语句,创建“学生信息表”
)输入下列T-SQL语句,创建“教学成绩表”
步骤四:右键单击步骤三新建的表,选择“编辑前200行”录入记录。
(1)专业信息表输入数据:
课程信息表输入数据:
4)教师信息表输入数据:5)学生信息表输入数据:6)学年学期表输入数据:
8)教学成绩表输入数据:9)管理员信息表输入数据:。