zoukankan      html  css  js  c++  java
  • SQLServer约束介绍

    约束定义

    对于数据库来说,基本表的完整性约束分为列级约束条件和表级约束条件:

    列级约束条件

           列级约束条件是对某一个特定列的约束,包含在列定义中,可以直接跟在该列的其他定义之后,用空格分隔,不用指定列名。

    表级约束条件

           表级约束条件与列定义相互独立,不包括在列定义中,通常用于对两个或两个以上的列一起进行约束。

    约束介绍

    在数据库管理系统中,保证数据库中的数据完整性是非常重要的。所谓数据完整性,就是指存储在数据库中数据的一致性和正确性。约束定义关于列中允许值的规则,是强制完整性的标准机制。使用约束优先于使用触发器、规则和默认值。查询优化器也使用约束定义生成高性能的查询执行计划。

    数据完整性分类

    在SQL Server中,根据数据完整新措施所作用的数据库对象和范围不同,可以将数据完整性分为以下几种:

    实体完整性

    实体完整性简单的说,就是将表中的每一行看作一个实体。实体完整性要求表的标示符列或主键的完整性。可以通过建立唯一索引、PRIMARY KEY约束、UNIQUE约束,以及列的IDENTITY属性来实施实体完整性。

    域完整性

    域完整性是指给定列的输入有效性。要求表中指定列的数据具有正确的数据类型、格式和有效的数据范围。强制域有效性的方法有:限制类型(通过数据类型)、格式(通过 CHECK 约束和规则)或可能值的范围。域完整性通过 FOREIGN KEY 约束、CHECK 约束、DEFAULT 定义、NOT NULL 定义和规则来实现。

    引用完整性

    引用完整性又称参照完整性。引用完整性维持被参照表和参照表之间的数据一致性,它通过主键(PRIMARY KEY)约束和外键(FOREIGN KEY)约束来实现。引用完整性确保键值在所有表中一致。这样的一致性要求不能引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改。在被参照表中,当其主键值被其它表所参照时,该行不能被删除也不允许改变。在参照表中,不允许参照不存在的主键值。

    约束分类

    SQLServer中有五种约束类型,分别是 PRIMARY KEY约束、FOREIGN KEY约束、UNIQUE约束、DEFAULT约束、和CHECK约束。查看或者创建约束都要使用到 Microsoft SQL Server Managment Studio。

    PRIMARY KEY约束

    在表中常有一列或多列的组合,其值能唯一标识表中的每一行,这样的一列或多列成为表的主键(PrimaryKey)。

    一个表只能有一个主键,而且主键约束中的列不能为空值。

    只有主键列才能被作为其他表的外键所创建。

    FOREIGN KEY约束 

    外键约束是用来加强两个表(主表和从表)的一列或多列数据之间的连接的。

    创建外键约束的顺序是先定义主表的主键,再对从表定义外键约束。

    只有主表的主键才能被从表用来作为外键使用,被约束的从表中的列可以不是主键,主表限制了从表更新和插入的操作。

    UNIQUE约束

    唯一约束确保表中的一列数据没有相同的值。

    与主键约束类似,唯一约束也强制唯一性,但唯一约束用于非主键的一列或者多列的组合,且一个表可以定义多个唯一约束。

    DEFAULT约束

    若在表中定义了默认值约束,用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果我们不设置默认值,系统默认为NULL

    CHECK约束

    CHECK 约束用于限制列中的值的范围。

    Check约束通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围,在列中更新数据时,所要输入的内容必须满足Check约束的条件,否则将无法正确输入。

    如果对单个列定义 CHECK 约束,那么该列只允许特定的值。

    如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

    约束优缺点

    优点:

    1、保持数据库完整性。

    2、保证列中数据的唯一性。

    3、插入、更新、删除时严格的范围校验机制。

    4、快速。

    5、可以引用其他列。

    6、在命令执行前发生。

    7、遵循ANSI标准。

    缺点:

    1、插入、更新、删除时需要校验规则比较麻烦。

    2、必须对每个表重新定义。

    3、不能引用其他表。

    4、不能绑定到数据类型。

  • 相关阅读:
    关闭当前的子窗口,刷新父窗口,弹出层提示框
    让一个div层于窗口中间位置
    一些技术贴,留待以后研究
    什么才是程序员的核心竞争力?
    自己喜欢的编辑器字体设置
    Ajax请求状态200,却走error的函数
    20141110的alltosun面试
    匹配中文的正则表达式
    数据表损坏:Incorrect key file for table
    oracle union 和 union all
  • 原文地址:https://www.cnblogs.com/vuenote/p/9525925.html
Copyright © 2011-2022 走看看