您的位置:澳门新葡8455最新网站 > 数据库管理 > Server中约束的介绍,SQLServer约束介绍

Server中约束的介绍,SQLServer约束介绍

发布时间:2019-12-02 18:02编辑:数据库管理浏览(153)

    封锁定义

    对于数据库来讲,基本表的完整性约束分为列级限定原则和表级约束标准:

    列级限制标准

           列级节制标准是对某贰个特定列的封锁,包蕴在列定义中,能够一直跟在该列的其余概念之后,用空格分隔,不用钦赐列名。

    表级约束原则

           表级节制原则与列定义相互独立,不包含在列定义中,平时用于对八个或七个以上的列一同实行封锁。

    自律介绍

    在数据库管理类别中,保险数据库中的数据完整性是十分关键的。所谓数据完整性,正是指存款和储蓄在数据库中数量的生龙活虎致性和科学。限拟定义关于列中允许值的平整,是挟持完整性的正规编写制定。使用约束优先于选择触发器、法规和暗中认可值。查询优化器也接收节制定义生成高品质的查询实行布置。

    数据完整性分类

    在SQL Server中,依据数据总体新措施所效力的数据库对象和限定区别,能够将数据完整性分为以下二种:

    实业完整性

    实业完整性简单来说,正是将表中的每少年老成行看作三个实体。实体完整性须求表的标识符列或主键的完整性。能够透过树立独一索引、PTucsonIMA福睿斯Y KEY约束、UNIQUE节制,以至列的IDENTITY属性来进行实体完整性。

    域完整性

    域完整性是指给定列的输入有效性。须要表中钦点列的多少颇有准确的数据类型、格式和卓有功效的多寡范围。强制域有效性的情势有:约束类型(通过数据类型)、格式(通过 CHECK 节制和法规)或恐怕值的范围。域完整性通过 FOREIGN KEY 约束、CHECK 限定、DEFAULT 定义、NOT NULL 定义和准绳来促成。

    引用完整性

    引用完整性又称参照完整性。引用完整性维持被参照表和参照表之间的数据风华正茂致性,它通过主键(P奥迪Q3IMALX570Y KEY)约束和外键(FOREIGN KEY)节制来兑现。援引完整性确定保障键值在颇负表中大器晚成致。那样的生机勃勃致性要求无法引用不设有的值,如若键值纠正了,那么在整个数据库中,对该键值的富有援引要扩充同样的改造。在被参照表中,当其主键值被其余表所参照时,该行不可能被删去也不容许改换。在参照他事他说加以考查表中,不相同意参照官样文章的主键值。

    摘要

    自律分类

    SQLServer中有四种约束类型,分别是 POdysseyIMASportageY KEY限制、FOREIGN KEY限定、UNIQUE节制、DEFAULT限定、和CHECK节制。查看也许成立节制都要利用到 Microsoft SQL Server Managment Studio。

    对于SQL Server中的限制,想必我们并非很目生。不过节制中确实的内蕴是什么,并非无数人都很了然的。本文以详尽的文字来介绍了什么样是束缚,以致怎么着在数据库编制程序中应用和应用这几个约束,来完毕更好的编制程序效果。(本文部分内容参谋了SQL Server联机手册)

    PRIMARY KEY约束

    在表中常有一列或多列的三结合,其值能唯少年老成标记表中的每风度翩翩行,那样的一列或多列成为表的主键(PrimaryKey卡塔尔。

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

    独有主键列本领被看成任何表的外键所开创。

    内容

    FOREIGN KEY约束 

    外键限制是用来做实八个表(主表和从表)的一列或多列数据里面包车型客车三回九转的。

    创制外键约束的逐个是先定义主表的主键,再对从表定义外键约束。

    除非主表的主键能力被从表用来作为外键使用,被封锁的从表中的列可以不是主键,主表限定了从表更新和插入的操作。

      数据完整性分类
      实体完整性
      域完整性
      引用完整性
      用户定义完整性
      PRIMARY KEY约束
      DEFAULT约束
      CHECK约束
      UNIQUE约束
      FOREIGN KEY约束

    UNIQUE约束

    唯少年老成节制保障表中的一列数据未有相像的值。

    与主键限制相似,唯大器晚成约束也强制唯大器晚成性,但唯大器晚成限制用于非主键的一列可能多列的整合,且三个表能够定义多个唯生机勃勃节制。

    正文

    DEFAULT约束

    若在表中定义了私下认可值约束,顾客在插入新的数目行时,纵然该行未有一些名数量,那么系统将暗中同意值赋给该列,如果我们不安装暗中认可值,系统默以为NULL。

    在数据库管理种类中,保障数据库中的数据完整性是那么些关键的。所谓数据完整性,正是指存储在数据库中多少的意气风发致性和不易。约束定义关于列中允许值的规规矩矩,是强制完整性的标准编制。使用节制优先于采用触发器、法则和暗中认可值。查询优化器也利用限制定义生成高质量的查询试行安排。

    CHECK约束

    CHECK 约束用于约束列中的值的限定。

    Check限定通过逻辑表明式来判断数据的有效,用来约束输入一列或多列的值的范围,在列中改正数据时,所要输入的开始和结果必需满足Check限定的法则,不然将不可能正确输入。

    假诺对单个列定义 CHECK 节制,那么该列只允许特定的值。

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

    SQL Server联机丛书中,将数据完整性解释如下:“累积在数据库中的全部数据值均精确的景况。如若数据库中贮存有不科学的数据值,则该数据库称为已丧失数据完整性。”强制数据完整性可保证数据库中的数据质量。

    封锁优短处

    优点:

    1、保持数据库完整性。

    2、保险列中数量的唯后生可畏性。

    3、插入、更新、删除时严峻的限量校验机制。

    4、快速。

    5、能够引用别的列。

    6、在命令实践前发出。

    7、遵循ANSI标准。

    缺点:

    1、插入、更新、删除时供给校验准则相比麻烦。

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

    3、不能够引用别的表。

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

     

    诸如,假设输入了 employee_id 值为 123 的干部,那么该数据库不应允许任何干部使用同风度翩翩 ID 值。即使陈设将 employee_rating 列的值范围设定为从 1 到 5,则数据库不接待受 6。借使表有风姿洒脱 dept_id 列,该列存款和储蓄人员的单位编号,则数据库应只同意选用集团中的有效部门编号。

    数据完整性分类

    在SQL Server中,依据数据完全新措施所效劳的数据库对象和范围不一样,能够将数据完整性分为以下二种。

      实体完整性
      域完整性
      引用完整性
      用户定义完整性

    SQL Server联机丛书中指明:“对表进行陈设有三个基本点步骤:标记列的有效值和规定什么强制列中的数据完整性。”

    实业完整性

    实体完整性一句话来讲,就是将表中的每一行看作叁个实体。实体完整性须要表的标识符列或主键的完整性。可以经过创设独一索引、PLANDIMA奔驰G级Y KEY约束、UNIQUE限制,以至列的IDENTITY属性来施行实体完整性。

    域完整性

    域完整性是指给定列的输入有效性。须求表中钦点列的数码颇负精确的数据类型、格式和有效的多少范围。强制域有效性的秘籍有:约束类型(通过数据类型)、格式(通过 CHECK 限定和法规)或大概值的范围。域完整性通过 FOREIGN KEY 约束、CHECK 约束、DEFAULT 定义、NOT NULL 定义和法规来落成。

    援引完整性

    援引完整性又称参照完整性。引用完整性维持被参照表和参照表之间的多寡生龙活虎致性,他通过主键(P大切诺基IMA奥迪Q5Y KEY)节制和外键(FOREIGN KEY)节制来贯彻。援用完整性确认保证键值在颇具表中大器晚成致。这样的大器晚成致性必要无法援引不设有的值,即便键值修改了,那么在整个数据库中,对该键值的富有援用要拓宽相似的改动。在被参照表中,当其主键值被别的表所参照时,该行不可能被删去也不容许退换。在参谋表中,分化意参照海市蜃楼的主键值。

    强制引用完整性时,SQL Server 制止顾客张开下列操作:

      当主表中没有关联的记录时,将记录添加到相关表中。
      更改主表中的值并导致相关表中的记录孤立。
      从主表中删除记录,但仍存在与该记录匹配的相关记录。

    例如说,对于 pubs 数据库中的 sales 和 titles 表,援用完整性基于 sales 表中的外键 (title_id卡塔尔(قطر‎ 与 titles 表中的主键 (title_id卡塔尔(قطر‎ 之间的涉及。

    澳门新葡萄京娱乐场 1

    客户定义完整性

    顾客定义完整性使您能够定义不归于任何任何完整性分类的特定业务准绳。全体的完整性类型都支持顾客定义完整性。

    树立和利用限制的指标是保证数据的完整性,节制是SQL Server强制进行的选择准则,他能够范围客商存放到表中多少的格式和大概值。节制作为数据库定义的黄金年代局地在CREATE TABLE语句中扬言,所以又称做证明完整性约束。约束独立于表构造,能够在不改造表结构意况下,通过ALTER TABLE语句来拉长也许去除。在剔除多少个表时,该表所带的装有限制定义也被随时删除。

    PRIMARY KEY约束

    在数据库的种种表中,经常有经过一列恐怕多个列,唯风流罗曼蒂克的标记表中的每后生可畏行。就就像我们一向应用的居民身份证,能够唯生机勃勃的标志各种人平等。那样的一列只怕八个列,被叫做主键,通过主键,能够强制表的实体完整性。

    每三个表中只有一个P奥迪Q3IMA传祺Y KEY限定,更简便易行的说,他是经过创设独一索引保障钦命列的实体完整性。在接受P本田CR-VIMAGL450Y KEY节制时,该列的空值属性必需定义为NOT NULL,也正是说具备主键的那一列,不能够为空。

    鉴于P景逸SUVIMAKoleosY KEY节制保障唯风姿罗曼蒂克数据,所以日常用来定义标记列。标志列正是表中已经派出了标志属性的列。标记属性生成唯后生可畏数字。

    些微刚刚初叶接触SQL Server编制程序的手艺爱好者平时会有这么的难题,为啥非要在叁个表里面组建主键?其实答案是很分明的,树立主键不仅可以够保险表内数据的完整性,并且在为表建构主键的还要,Microsoft SQL Server能够透过为主键创造独一索引强制数据的唯生龙活虎性。

    当在询问中运用主键时,也正是采纳主键所在的列作为关键字张开询问,该所因还足以用来对数码举办急忙访谈。假使在P奥迪Q5IMA君越Y KEY约束中未钦赐索引类型时,默许情况下所确立的目录为簇索引。该索引只可以通过删除PLacrosseIMA本田CR-VY KEY节制或其相关表的方法来删除,而不能够利用DROP INDEX语句删除。当PHavalIMATiguanY KEY节制由另一张表的FOREIGN KEY约束引用时,不可能去除PTiguanIMACRUISERY KEY约束;要删减它,必需先删除FOREIGN KEY约束。

    司空见惯建构一列羁绊时,大家称为列级PXC90IMA景逸SUVY KEY限制,应用于多列时,称之为表级PMuranoIMA福特ExplorerY KEY约束。

    列级P揽胜极光IMA中华VY KEY限制的定义格式为:

    [CONSTRAINT constraint_name]
     PRIMARY KEY [CLUSTERED | NONCLUSTERED]
     [WITH [FILLFACTOR = fillfactor]]
     [ON {filegroup | DEFAULT}]

    表级PMuranoIMAOdysseyY KEY限制定义风格为:

    [CONSTRAINT constraint_name]
     PRIMARY KEY [CLUSTERED | NONCLUSTERED]
      {(column[,…n])}
     [WITH [FILLFACTOR = fillfactor]]
     [ON {filegroup | DEFAULT}]

    在上头的PENVISIONIMA福睿斯Y KEY约束定义中,WITH子句设置为PCR-VIMAHighlanderY KEY约束所树立目录的页面填充度,ON子句提议存款和储蓄索引的数据库文件组名称。将引得文件和表数据文件分寸到数据库中位居分化硬盘驱动器的数据文件中,有扶持缓和单个硬盘的载荷。

    DEFAULT约束

    使用DEFAULT限制,假诺客商在插入新行是未曾显得为列提供数据,系统会将私下认可支赋给该列。比方,在叁个表的payterms列中,可以让数据库服务器在顾客并未有输入时填上”???”可能”fill in later”。暗中认可值节制所提供的私下认可值限制所提供的默许值可感到常量、函数、系统零进函数、空值(NULL卡塔尔(قطر‎等等。零进函数包含CUTucsonRENT_TIMESTAMP、SYSTEM_USER、CURRENT_USER、USER和SESSION_USE奥迪Q3等。暗许值限定的定义格式为:

    [CONSREAINT constraint_name]
     DEFAULT constant_expression

    其中,constraint_name参数建议所树立的暗许值节制名称。Constant_expression说明式为列提供暗中认可值。在应用暗中认可约束是,还相应注意以下两点:

    1. 每列只能有一个默认约束。
    2. 约束表达式不能参照表中的其他列和其他表、视图或存储过程。

    CHECK约束

    CHECK约束的基本点功能是约束输入到一列或多列中的也许值,进而确定保障SQL Server数据库中多少的域完整性。比如,可以在确立客户使用库时,强制客商的密码在十四位以上。每种标允许创设八个CHECK限制。在CHECK节制中能够包括搜索条件,但不可能包括子查询。

    相似,大家得以为表中的各类列创立约束,各样列能够具有四个CHECK限定,不过若是应用CREATE TABLE语句,只可以为种种列建构二个CHECK约束。假设CHECK约束被接收于多列时,他必需被定义为表级CHECK限定。

    在表达式中,能够输入寻觅条件,条件中能够富含AND或许OEvoque意气风发类的连接词。列级CHECK约束只可以参照被约束列,而表级CHECK节制则只好参照表中列,它不可能参照别的表中列。

    举例说,我们运用下边包车型客车言语在TB_CHECK_CONSTRAINT表中新步向一列ZIP_CODE及其对应的CHECK约束:

    ALTER Table TB_CHECK_CONSTRAINT
    ADD
     ZIP_CODE char(6) null
     CONSTRAINT CH_ZIP_CODE check
      (ZIP_CODE like ‘[0-9] [0-9] [0-9] [0-9] [0-9] [0-9]’)

    同样,大家能够运用CHECK或NOCHECK来展开或然关闭有些约束。例如,上边包车型地铁讲话将闭馆下边组建的CH_ZIP_CODE约束:

    ALTER Table TB_CHECK_CONSTRAINT
     NOCHECK CONSTRAINT CH_ZIP_CODE

    假设希望选择编辑器来树立节制关系,须求在数据库关系图中,右击满含限定的表,然后从高速菜单中选拔“限定”命令。或许能够将包罗约束的表张开表设计器,在表设计器中右击,然后选取“约束”命令。

    澳门新葡萄京娱乐场 2

    UNIQUE约束

    该限制应用于表中的非主键列,UNIQUE节制保险一列或许多列的考题完整性,确认保障那么些猎不会输入重复的值。比方,表中UserName列为主键,可是里面还富含居民身份证号码列,由于具备身份ID编号不恐怕现身重复,所以能够在那列上树立UNIQUE约束,确定保障不会输入重复的居民身份证编号。

    它与PEscortIMA卡宴Y KEY约束的区别之处在于,UNIQUE约束能够创立在八个列之上,而POdysseyIMACR-VY KEY限定在一个表中只好有贰个。

    打造UNIQUE约束,能够行使如下办法:

    1.

    在数据库关系图中右击将富含节制的表,然后从高速菜单中接受"属性"命令。

     

    -或-

    为将包蕴限定的表打开表设计器,在表设计器中右击,然后从高速菜单中选取"属性"命令。

    2.

    选择"索引/键"选项卡。

    3.

    分选"新建"命令。系统一分配配的称号出以后"索引名"框中。

    4.

    在"列名"下张开列的列表,选用要将节制附加到的列。若要将封锁附加到七个列,在世襲行中筛选别的的列。

    5.

    选择"创建 UNIQUE"复选框。

    6.

    选择"约束"选项。

    当保存表或提到图时,唯黄金时代节制即开立在数据库中。

    当希望删除UNIQUE索引时,基本上能用如下步骤:

    澳门新葡萄京娱乐场,1.

    在数据库关系图中,右击包括节制列的表,然后从高效菜单中选取"索引/键"命令。

     

    -或-

    为带有约束的表展开表设计器,在表设计器中右击,然后从火速菜单中接受"索引/键"命令。

    2.

    从"选定的目录"列表中选拔唯豆蔻年华约束。

    3.

    选择"删除"按钮。

    相似,对于一列的UNIQUE约束,我们誉为列级UNIQUE节制,对于多列的UNIQUE约束,大家称为表级UNIQUE约束。上边给出列级UNIQUE限制的定义格式:

    [CONSTRAINT constraint_name]
     UNIQUE [CLUSTERED | NONCLUSTERED]
      [WITH [FILLFACTOR = fillfactor]]
      [ON {filegroup | DEFAULT}]

    动用UNIQUE约束的进程中,还索要潜心,假诺要对允许空值的列强制唯后生可畏性。能够允许空值的列附加UNIQUE限定,而只好将主键的束缚附加到不容许空值的列。但UNIQUE节制分化意表中受拘束列有后生可畏行以上的值同一时间为空。

    举个例子,上边语句为TB_UNIQUE_CONSTRAINT表添加UNIQUE约束:

    ALTER Table TB_UNIQUE_CONSTRAINT
     ADD
      CONSTRAINT UN_PHONE UNIQUE (username, phone)

    FOREIGN KEY约束

    FOREIGN KEY限制为表中的一列可能多列数据提供数据完整性参照。平日是与P冠道IMAHighlanderY KEY约束依旧UNIQUE约束同期选取的。

    例如,在BookStores表中的author_id列以及title_id列分别参照了Authors表中的author_id列以及Titles表的title_id列。在向BookStores表中插入新行或校正此中的数据时,这两列的数据值必需在Authors表和Titles表中早就存在,不然将不能够试行插入或然涂改操作。

    在使用FOREIGN KEY限制是,须要在意以下几点:

    1. 一个表最多只能参照253个不同的数据表,每个表也最多只能有253个FOREIGN KEY约束。
    2. FOREIGN KEY约束不能应用于临时表。
    3. 在实施FOREIGN KEY约束时,用户必须至少拥有被参照表中参照列的SELECT或者REFERENCES权限。
    4. FOREIGN KEY约束同时也可以参照自身表中的其他列。
    5. FOREIGN KEY约束,只能参照本身数据库中的某个表,而不能参照其他数据库中的表。跨数据库的参照只能通过触发器来实现。

    本文由澳门新葡8455最新网站发布于数据库管理,转载请注明出处:Server中约束的介绍,SQLServer约束介绍

    关键词:

上一篇:语句大全,数据库小结1

下一篇:没有了