[ ON DELETE { CASCADE | NO ACTION } ]

  1. P奥迪Q5IMAPRADOY KEY: 主键约束,钦命该列的值能够唯一地方统一标准识该条记录

  2. FOREIGN KEY: 外键约束,钦命该行记录从属于主表中的一条记下,主要用于有限支撑参照完整性

  3. CHECK(MySQL不辅助): 检查约束,钦点2个布尔表明式,用于内定对应列的值必须知足该表达式

恰恰相反,若是钦命 NO ACTION,若在 Orders 表中最少有1行引用 Customers
表中要刨除的行,则 SQL Server 将产生三个荒唐并回滚 Customers
表中的删除操作

    #创建表时,使用表级语法建立组合列的唯一约束
    create table unique_test3
    (
        id int not null,
        name varchar(255),
        pass varchar(255),
        #指定name和pass两列组合不能重复
        constraint test3_uk unique (name, pass)
    );


    #在修改表时,使用add关键字来增加唯一约束
    alter table unique_test3 add unique (id, name);


    #在修改表时,使用modify关键字,来为单列设置唯一约束
    alter table unique_test3 modify name varchar(100) unique;

 

    MySQL中删除唯一约束:
      语法格式:

    alter table tableName drop index 约束名;

        例句:

    #删除unique_test3表中的test3_uk唯一约束
    alter table unique_test3 drop index test3_uk;

     

| CHECK [ NOT FOR REPLICATION ]

数据库约束:     
  约束是在表上强制执行的数据校验规则,主要用于保证数据库里数据的完整性。     
  除此之外,当表中的数据存在相互依赖性时,可以保证相关的数据不被删除。


根据约束对数据列的限制,约束可分为如下两类:             
  单列约束: 每个约束只约束一列             
  多列约束: 每个约束可以约束多个数据列


为数据表指定约束有如下两个时机:             
  建表的同时为相应的数据列指定约束             
  创建表后,以修改表的方式来增加约束

大部分数据库支持下面5中完整性约束:

是意味着为 P途达IMA奥迪Q7Y KEY 或 UNIQUE 约束创制集中或非集中索引的第3字PQX56IMA汉兰达Y
KEY 约束暗中同意为 CLUSTERED,UNIQUE 约束默以为 NONCLUSTERED

  1. NOT NULL:
    非空约束,钦点某列不能够为空,只可以当做列级约束使用,只可以使用列级约束语法定义。
     SQL中的null值,null不区分轻重缓急写,具备如下特征:
      
    全体数据类型的值都得以是null,包含int、float、boolean等。
        
    空字符串不对等null,0也不等于null。

     建表时为内定列设置非空约束,只需在列定义后扩大not
    null就可以,举个例子:

    create table t_test
    (
        id int not null,
        name varchar(255) default 'xyz' not null,
        gender varchar(2) null
    );
    
    使用alter table修改表时增加或删除非空约束,例如:
    
    #增加非空约束
    alter table t_test modify gender varchar(2) not null;
    
    #取消非空约束
    alter table t_test modify gender varchar(2) null;
    
    #取消非空约束,并指定默认值
    alter table t_test modify name varchar(255) default 'abc' null;
    

     

  2. UNIQUE: 唯1约束,钦命某列或许几列组合不能够再一次

    虽然唯一约束的列不可以出现重复值,但可以出现多个null值,因为在数据库中null不等于null。
    
    同一个表内可创建多个唯一约束,唯一约束也可有多列组合而成。 当为某列创建唯一约束时,MySQL会为该列创建唯一索引, 如果不给唯一约束起名,该唯一约束默认与列名相同。
    
    唯一约束可以使用列级语法建立,也可以使用表级语法建立。 如果是为多列建立组合约束,或者需要为约束指定约束名,则只能使用表级语法。
    
    使用列级语法建立唯一约束,只需要在列定义后增加unique关键字即可:
    
    #创建表时建立唯一约束,使用列级语法建立
    create table unique_test
    (
        #建立非空约束,意味着id不能为null
        id int not null,
        #建立唯一约束,意味着多行数据的该列值不能相等
        name varchar(255) unique
    );
    
    表级语法创建唯一约束的格式:
    
    [constraint 约束名] unique (列名[,列名,...])
    
    上面的表级约束语法格式既可以放在create table语句中与列定义并列,也可以放在alter table语句中使用add关键字添加:
    
    #创建表时,使用表级语法创建唯一约束
    create table uniques_test2
    (
        #为id建立非空约束,意味着id不能为null
        id int not null,
        name varchar(255),
        pass varchar(255),
        #使用表级语法为name建立唯一约束
        unique (name),
        #使用表级语法为pass建立唯一约束,并指定约束名为test2_uk
        constraint test2_uk unique (pass)
    );
    

点名 SQL Server 存款和储蓄索引数据时每一个索引页的满载程度用户内定的 fillfactor
取值范围从 一 到 100一旦未有一点点名 fillfactor,则暗中同意为0创造索引时,fillfactor
的值越低,不必分配新空间就能够由新索引项使用的空间就越来越多

( { < column_definition >

是通过唯一索引对给定的1列或多列强制实体完整性的羁绊对于各个表只好创建1个PLANDIMALX570Y KEY 约束

]

CLUSTERED | NONCLUSTERED

是回来 TRUE 或 FALSE 的逻辑表明式

ON UPDATE {CASCADE | NO ACTION}

< table_constraint > ::= [ CONSTRAINT constraint_name ]

比如,在 Northwind 数据库中,Orders 表和 Customers
表之间有引用关系:Orders.CustomerID 外键引用 Customers.CustomerID 主键

increment

是封锁的名称约束名在数据库内必须是唯壹的

是可选关键字,表示 PLANDIMA途睿欧Y KEY、NOT NULL、UNIQUE、FOREIGN KEY 或 CHECK
约束定义的启幕封锁是异样质量,用于强制数据完整性并可感到表及其列创造索引

column_name

database_name

是 FOREIGN KEY 约束所引述的表中的1列或多列

( logical_expression )

]

}

[4503.com, ON { filegroup | DEFAULT } ]

在 CREATE TABLE 语句中,用户定义数据类型的 NULL/NOT NULL
赋值可被替代但长度标准无法退换;不可能在 CREATE TABLE
语句中钦赐用户定义数据类型的长度

< column_constraint > ::= [ CONSTRAINT constraint_name ]

CHECK

[ASC | DESC]

| FOREIGN KEY

点名列的数据类型能够是系统数据类型或用户定义数据类型用户定义数据类型必须先用
sp_addtype 创立,然后本领在表定义中使用

NOT FO库罗德 REPLICATION CHECK
约束适用于被更新记录的前像和后像,避防在复制范围中增多记录或从复制范围中删除记录将检查有着删除和插入操作;假诺操作在复制范围内,则拒绝实践该操作

意味着当复制登录(如 sqlrepl)向表中插入数据时,不强制 IDENTITY
属性复制的行必须保留发表数据库中所赋予的键值;NOT FO路虎极光 REPLICATION
子句确认保证不向复制进度所插入的行赋予新的标志值其余登陆所插入的行依然具备以普通的法子开创的新标志值建议还要利用具有NOT FO大切诺基 REPLICATION 的 CHECK
约束,以担保赋予的标记值处于当前数据库所需的限制内

NOT FOR REPLICATION

| < table_constraint > ::= [ CONSTRAINT constraint_name ] }

最好答案:

ROWGUIDCOL
属性并不强制列中所存款和储蓄值的唯壹性该属性也不会为插入到表中的新行自动生成值若要为每列生成唯一值,那么依旧在
INSERT 语句中运用 NEWID 函数,可能将 NEWID 函数钦命为该列的暗中认可值

是概念总结列值的表明式总结列是情理上并不存储在表中的虚拟列总括列由同一表中的别的列通过表明式计算获得举个例子,总括列能够如此定义:cost
AS price *
qty表达式可以是非计算列的列名、常量、函数、变量,也足以是用三个或七个运算符连接的上述因素的轻松组合表达式不能够为子查询

是象征 text、ntext 和 image 列存款和储蓄在钦定文件组中的重要字假使表中没有text、ntext 或 image 列,则不能够使用 TEXTIMAGE ON假使未有一点点名
TEXTIMAGE_ON,则 text、ntext 和 image 列将与表存款和储蓄在坚贞不屈文件组中

{ [ { PRIMARY KEY | UNIQUE }

是新表的名目表名必须符合标记符规则数据库中的 owner.table_name
组合必须唯一table_name 最多可含蓄 1二十8个字符,但本地一时表的表名(名称前有1个编号符 #)最七只好分包 1拾陆个字符

代表新列是标记列当向表中增多新行时,Microsoft? SQL Server?
将为该标记列提供二个唯一的、递增的值标记列常常与 P奥迪Q5IMA卡宴Y KEY
约束共同用作表的无与伦比行标记符能够将 IDENTITY 属性指派给
tinyint、smallint、int、bigint、decimal(p,0) 或 numeric(p,0)
列对于每种表只可以成立三个标记列无法对标志列使用绑定暗中认可值和 DEFAULT
约束必须同时钦命种子和增量,恐怕双方都不点名如若双方都未钦点,则取暗中认可值
(壹,一)

相反,借使钦点 NO ACTION,若在 Orders 表中最少有一行引用 Customers
行,则 SQL Server 将发出2个荒唐并回滚对 Customers 行的立异操作

ref_table

constant_expression

[ TEXTIMAGE_ON { filegroup | DEFAULT } ]

[ON {filegroup | DEFAULT} ] ]

DEFAULT

[ CLUSTERED | NONCLUSTERED ]

点名参预到表约束中的一列或多列的排序次序暗许设置为 ASC

[ database_name.[ owner ] .| owner.] table_name

collation_name

假诺对标记符列使用此约束,则当复制用户更新标识列时,SQL Server
将同意不必再度计算表标记列的种子值

是为列中的数据提供引用完整性的封锁FOREIGN KEY
约束供给列中的种种值在被引述表中对应的被引用列中都存在FOREIGN KEY
约束只好引用被引用表中为 PCR-VIMA卡宴Y KEY 或 UNIQUE 约束的列或被引述表中在
UNIQUE INDEX 内引用的列

钦点当要成立的表中的行具备引用关系,并且从父表中删去该行所引述的行时,要对该行利用的操作暗中认可设置为
NO ACTION

是增加到前1行的标志值的增量值

是用来防止在复制所使用的分发进程中威迫 CHECK
约束的着重字当表是复制宣布的订户时,请不要平昔更新订阅表,而要更新发表表,然后让复制进程将数据分发回订阅表能够在订阅表上定义
CHECK 约束,防止用户修改订阅表不过只要不采纳 NOT FOOdyssey REPLICATION
子句,CHECK 约束同样会幸免复制进度将修改从透露表分发给订阅表NOT FO景逸SUVREPLICATION 子句表示对用户的修改(而不是对复制进度)强加约束

seed

constrain_name

[ ON UPDATE { CASCADE | NO ACTION } ]

计算列的为空性是由 SQL Server
依据使用的表明式自动明确的固然唯有不足为空的列,大多数表明式的结果也感觉是可为空的,因为大概的下溢或溢出也将生成
NULL 结果使用 COLUMNPROPERTY 函数(AllowsNull
属性)查看表中任何计算列的为空性通过点名 ISNULL(check_expression,
constant),当中常量为代表任何 NULL 结果的非 NULL 值,可为空的表明式 expr
能够转移为不可为空的表明式

computed_column_expression

在 CREATE TABLE 语句中只好为三个封锁内定 CLUSTERED假使在为 UNIQUE
约束钦赐 CLUSTERED 的同时又钦定了 P奔驰G级IMASportageY KEY 约束,则 PHighlanderIMA兰德酷路泽Y KEY
将默以为 NONCLUSTERED

代表新列是行的全局唯一标记符列对于每一个表只好指派贰个 uniqueidentifier
列作为 ROWGUIDCOL 列ROWGUIDCOL 属性只好指派给 uniqueidentifier
列如若数据库兼容等级小于或等于 6五,则 ROWGUIDCOL
关键字无效有关越多音讯,请参见 sp_dbcmptlevel

TEXTIMAGE_ON

是规定列中是还是不是允许空值的要紧字从严苛意义上讲,NULL
不是封锁,但能够运用与钦点 NOT NULL 同样的措施内定

是 FOREIGN KEY 约束所引述的表名

n

| [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]

table_name

总括列无法看做 INSERT 或 UPDATE 语句的靶子

CONSTRAINT

ON DELETE {CASCADE | NO ACTION}