`

数据库总结十完整性约束

阅读更多
 定义
    数据完整性用于保证数据库中数据的正确性、一致性和可靠性。
    类型
• 实体完整性(Entity Integrity)
• 域完整性(Domain Integrity)
• 参照完整性(Referential Integrity)
• 用户定义完整性(User-defined Integrity)
 图示

实体完整性(Entity Integrity)
实体完整性用于保证数据库中数据表的每一个特定实体的记录都是唯一的
域完整性(Domain Integrity)
域完整性是指保证指定列的数据具有正确的数据类型、格式和有效的数据范围。
参照完整性(Referential Integrity)
当增加、修改或删除数据库表中记录时,可以借助参照完整性来保证相关联表之间数据的一致性
用户定义完整性 (User- defined Integrity)
这是由用户定义的完整性。用户定义完整性可以定义不属于其他任何完整性分类的特定业务规则
数据完整性的实现方式
声明数据完整性和过程数据完整性
使用IDENTITY(标识符)列
语法格式:
CREATE TABEL 数据表名
(列名 列数据类型 IDENTITY [(种子, 增量)] [,…])
说明:标识种子为标识列的起始值,标识递增量为每次增加的数,二者的默认值均为1。
使用IDENTITY函数
语法格式:
IDENTITY ( 数据类型 [ , 种子 , 递增量 ] ) AS 列名
说明:只用在带有 INTO table 子句的 SELECT 语句中,可以将标识列插入到新表中。
尽管类似,但是 IDENTITY 函数不是与 CREATE TABLE 和 ALTER TABLE 一起使用的 IDENTITY 属性。

完整性类型 约束类型 描述
域 DEFAULT 指定列的默认值
CHECK 指定列的允许值
FOREIGN KEY 指定必须存在值的列
NULL 指定是否允许为NULL
实体 PRIMARY KEY 唯一标识每一行
UNIQUE 防止非主键重复
引用 FOREIGN KEY 定义值与同一个表或另一个表的主键值匹配的一列或多列组合
CHECK 指定根据同一个表中其他列的值可在列中接受的数据值
     
在SQL SERVER中,对于基本表的约束分为列约束和表约束。
完整性约束的基本语法格式为:
         [CONSTRAINT constraint_name(约束名)] <约束类型>
         约束不指定名称时,系统会给定一个名称。
         在SQL Server 2005中有6种约束:主键约束(primary key constraint)、惟一性约束(unique constraint)、检查约束(check constraint)、默认约束(default constraint)、外部键约束(foreign key constraint)和空值(NULL)约束。
PRIMARY KEY 约束
PRIMARY KEY约束用于定义基本表的主键,它是惟一确定表中每一条记录的标识符,其值不能为NULL,也不能重复,以此来保证实体的完整性。PRIMARY KEY与UNIQUE约束类似,通过建立唯一索引来保证基本表在主键列取值的唯一性,但它们之间存在着很大的区别:
①一个表只能有一个 PRIMARY KEY 约束 ,但可定义多个UNIQUE约束;
②对于指定为PRIMARY KEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。
注意:不能为同一个列或一组列既定义UNIQUE约束,又定义PRIMARY KEY约束;
PRIMARY KEY既可用于列约束,也可用于表约束。
(2)使用Transact-SQL语句操作法设置主键约束,其语法形式如下:
   PRIMARY  KEY 
   CONSTRAINT  constraint_name  PRIMARY  KEY  ( column_name )
举例:建立一个SC表,定义SNO,CNO共同组成SC的主键
程序清单如下:
create table sc(
     sno char(5) not null,
cno char(5) not null,
score numeric (3),
constraint sc_prim primary key(sno,cno)
)
UNIQUE约束
         惟一性约束用于指定一个或者多个列的组合值具有惟一性,以防止在列中输入重复的值。定义了UNIQUE约束的那些列称为唯一键,系统自动为唯一键建立唯一索引,从而保证了唯一键的唯一性。
当使用惟一性约束时,需要考虑以下几个因素:
• 使用惟一性约束的字段允许为空值;
• 一个表中可以允许有多个惟一性约束;
• 可以把惟一性约束定义在多个字段上;
• 惟一性约束用于强制在指定字段上创建一个惟一性索引;
• 默认情况下,创建的索引类型为非聚集索引。
使用Transact-SQL语句完成惟一性约束的操作,其语法形式如下:
•     UNIQUE
•     CONSTRAINT  constraint_name UNIQUE ( column_name )
CHECK 约束
         检查约束对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。
当使用检查约束时,应该考虑和注意以下几点:
• 一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关;
• 一个表中可以定义多个检查约束;
• 每个CREATE TABLE语句中每个字段只能定义一个检查约束;
• 在多个字段上定义检查约束,则必须将检查约束定义为表级约束;
• 当执行INSERT语句或者UPDATE语句时,检查约束将验证数据;
• 检查约束中不能包含子查询。
用Transact-SQL语句创建检查约束。其语法形式如下:
•    CONSTRAINT  constraint_name  CHECK  (logical_expression)
•    CHECK  (logical_expression)
create table sc(
     sno char(5) not null,
cno char(5) not null,
     score numeric(5,1) constraint score_chk check(score>=0 and score <=100),
constraint sc_prim primary key(sno,cno),
    
)
drop table sc
insert into sc values('1','2',3)
DEFAULT 约束
         默认约束指定在插入操作中如果没有提供输入值时,则系统自动指定值。默认约束可以包括常量、函数、不带变元的内建函数或者空值。
使用默认约束时,应该注意以下几点:
(1)每个字段只能定义一个默认约束;
(2)如果定义的默认值长于其对应字段的允许长度,那么输入到表中的默认值将被截断;
(3)不能加入到带有IDENTITY属性或者数据类型为timestamp的字段上;
(4)如果字段定义为用户定义的数据类型,而且有一个默认绑定到这个数据类型上,则不允许该字段有默认约束。
创建默认约束的Transact-SQL语句操作法。其语法形式如下:
•     CONSTRAINT  constraint_name  DEFAULT  constraint_expression  [FOR  column_name]
•      DEFAULT  constraint_expression  [FOR  column_name]
举例:为 dept字段创建默认约束。
程序清单如下:
constraint  con_dept  default  ‘计算机’  for  dept
NULL 约束
空值约束用来控制是否允许该字段的值为NULL。NULL值不是0也不是空白,更不是填入字符串的“NULL”字符串,而是表示“不知道”、“ 不确定”或“没有数据”的意思。
       当某一字段的值一定要输入才有意义的时候,则可以设置为NOT NULL。如主键列就不允许出现空值,否则就失去了唯一标识一条记录的作用。空值约束只能用于定义列约束。
FOREIGN KEY 约束
     FOREIGN KEY约束是用于建立和加强两个表数据之间的链接的一列或多列。外部键约束用于强制参照完整性。

FOREIGN KEY 约束确保同一个表或者不同表之间的引用完整性
必须引用一个PRIMARY KEY或者UNIQUE约束
用户必须在应用表上具有REFERENCES权限
一个表中最多可以有31个外部键约束;
在临时表中,不能使用外部键约束;
主键和外部键的数据类型必须严格匹配 。

使用Transact-SQL语句设置外部键约束 ,其语法形式如下:
  CONSTRAINT  constraint_name
  FOREIGN  KEY  (column_name[,…n])
  REFERENCES  ref_table  [(ref_column[,…n])]
ALTER TABLE [Sales].[SalesOrderHeader]  WITH CHECK
ADD CONSTRAINT [FK_SalesOrderHeader_Customer_CustomerID]
FOREIGN KEY([CustomerID])
REFERENCES [Sales].[Customer] ([CustomerID])
禁用 CHECK 和 FOREIGN KEY 约束:
 当运行大型批处理作业时提高性能
 当向表中添加新的约束的时候避免检查已经存在的数据
分享到:
评论

相关推荐

    更新数据库、视图及数据库完整性.doc

    1、熟练update,delete,insert语句进行更新数据库操作 2、创建视图以及操作视图的基本使用方法, ...熟悉通过SQL语句更新数据库、创建视图以及操作视图的基本使用方法,熟悉DBMS系统关于数据库完整性的约束限制。

    实验一_完整性约束_sql_

    2020年数据库实验一的完整代码,完整性约束

    数据库概念总结

    考试和学习用 数据是描述事物的符号记录。 数据库是长期存储(永久存储)在计算机内、有组织的、可共享的大量数据的...数据模型构成:数据结构、数据操作、完整性约束。 数据库操作:查询、更新(插入、删除、修改)。

    数据库实验报告 视图的定义及使用实验(详细版有截图的)

    1. 启动数据库服务软件SQL Server 2000的查询分析器,用CREATE VIEW语句建立视图,语法格式如下: CREATE VIEW &lt;视图名&gt; [(&lt;属性列1&gt;[,&lt;属性列2&gt;]…)] AS &lt;子查询&gt; [WITH CHECK OPTION]; 2.用DROP VIEW语句删除,...

    数据库+研究生复试+求职+面试题

    2. 关系完整性约束 3. 一些基本术语关系、属性、值域、元组、分量、关系模式 5. 描述三类关系完整性约束规则 6. 关系完整性约束的作用 7. 不符合范式的关系,会产生哪些异常 1. sql语言的特点和功能 2. 三种模式与...

    数据库原理实验4-数据的安全性与完整性控制(实验报告含总结体会、代码)

    (5) 掌握实体完整性、参照完整性和用户自定义完整性约束的创建方法。 (6) 掌握完整性约束的运行检查机制。 (7) 掌握参照完整性的级联删除和修改方法。 (8) 掌握正确设计关系模式完整性约束的方法。 2 实验...

    数据库系统及应用课程总结.docx

    包括关系数据模型的数据结构和基本术语,关系模型的完整性约束和关系代数运算。重点是关系模式完整性的分类和功能,以及关系代数中集合运算和关系运数据库系统及应用课程总结全文共6页,当前为第2页。数据库系统及...

    海大数据库原理综合实验六

    (3) 要设计良好的数据库完整性约束。 (4) 思考题:数据库设计通常由哪些辅助工具?各有哪些优缺点? 4 实验步骤 4.1 数据库概念模型设计 (1) 进行需求分析。 (2) 设计数据库概念模型,画出E-R图。 4.2 ...

    数据库系统概念复习总结.pdf

    4.2.4 视图更新 4.3 事务 4.4 完整性约束 4.5 SQL的数据类型和模式 4.6 模式的授权 第六章、 形式化关系查询语⾔ 6.1 关系代数 6.1.1 基本运算 6.1.2 关系运算的形式化定义 6.1.3 附加的关系代数运算 6.1.4 扩展的...

    数据库系统概论【史嘉权】

    2.5.3 引用完整性 2.5.4 其他类型的约束 小结 习题 第3章 关系模型和关系运算 3.1 关系模型的基本概念 3.1.1 属性 3.1.2 模式 3.1.3 元组 3.1.4 域 3.1.5 关系的等价表示法 3.1.6 关系的实例 3.2 从ODL设计到关系...

    数据库概念的复习总结

    10、关系三类完整性约束 11、等值连接、自然连接区别与联系 12、SQL特点 16、数据模型根据应用的不同目的可以分为两类 14、外模式/模式映像(逻辑独立性) 15、模式/内模式映像(物理独立性) 13、使用视图的优点: ...

    数据库课程设计题目汇总.doc

    建立数据库相关表之间的参照完整性约束。 (2)高校学籍管理系统 功能要求: 实现学生信息、班级、院系、专业等的管理; 实现课程、学生成绩信息管理; 实现学生的奖惩信息管理; 创建规则用于限制性别项只能输入...

    数据库课程设计.教务管理系统

    5. 数据库完整性设计 () 5.1. 主键及唯一性索引 () 5.2. 参照完整性设计 () 5.3. Check约束 () 5.4. Default约束 () 5.5. 触发器设计 () 6. 数据库视图设计 () 7. 数据库存储过程设计 () 8. 权限设计 () 9. 总结 () ...

    数据库原理概论理论知识点总结.pdf

    数据模型由数据结构,数据操作,数据的完整性约束三个部分组成。 1.3 数据库系统的结构 在数据模型中有型和值的概念,型是对某⼀类数据的结构和属性的说明,值是型的⼀个具体赋值。⼀个具体值也是⼀个实例。模式是...

    数据库系统概论第四版答案

    的静态特性、动态特性和完整性约束条件。因此数据模型通常由数据结构、数据操作和完整 性约束三部分组成。 ( l )数据结构:是所研究的对象类型的集合,是对系统静态特性的描述。 ( 2 )数据操作:是指对数据库中...

    数据库实验报告

    掌握数据库的完整性约束定义,完整性检查及违约处理方式。 掌握触发器的定义及使用。 实验内容: 1. 定义S, C表的完整性约束 2. 定义SC表的完整性约束,要求当其被参照表发生删除操作时,违约处理的方式为级联,...

    数据库实验报告 玩具系统

    创建表、更新表和实施数据完整性 1. 运行给定的SQL Script,建立数据库GlobalToyz。 2. 在企业管理器中建立所有表的关系图。 3. 利用系统定义的存储过程sp_helpdb查看数据库的相关信息,例如所有者、大小、创建...

    关系型数据库管理系统之MySql学习总结

    文章目录数据库介绍MySql介绍添加数据导入数据查询数据内连接左外...概述:操作和管理数据库的软件,用于建立,使用,维护数据库,对数据库进行统一管理,以确保数据库的安全性和完整性,用户通过数据库管理系统访问

    数据库资料

    SQL Server中存在五种约束,分别是:主键约束、外键约束、检查约束、默认约束和唯一性约束(唯一性约束将在后续课程中使用SQL语句实现)总结创建数据库表需要:确定表的列名、数据类型、是否允许为空,还需要确定...

Global site tag (gtag.js) - Google Analytics