第6章 键与约束

1.更新数据表

1.1给数据表某一行添加主键约束

USE 数据库ALTER TABLE 数据表ADD CONSTRAINT 主键约束名(必须)PRIMARY KEY (主键字段)

1.2给数据表添加一行或多行

USE 数据库 ALTER TABLE 数据表 ADD 

字段1 数据类型 约束

字段2 数据类型 约束

、、、 、、、

字段n 数据类型 约束 

1.3给数据表某一行添加外键约束

USE 数据库ALTER TABLE 数据表ADD CONSTRAINT 外键约束名(必须)FOREIGN KEY  (外键字段)  REFERENCES 引用表名(引用字段)

1.4给数据库表添加复合主键

USE 数据库名 ALTER TABLE 数据表 ADD CONSTRAINT 主键名 PRIMARY KEY (字段1,字段2,、、、、、、字段n)

1.5在新建数据表时添加复合主键

USE 数据库 CREATE TABLE  数据表

( 

字段1 数据类型 约束

字段2 数据类型 约束

、、、 、、、

字段n 数据类型 约束

CONSTRAINT 主键名 PRIMARY KEY (字段1,字段2,、、、、、、字段n)

)

其中,CONSTRAINT 主键名可以省略。

1.6在新建表时添加外键约束(约束无先后顺序)

USE 数据库 CREATE TABLE 数据表

( 

字段1 数据类型 约束

字段2 数据类型 约束

字段3 数据类型 其他约束 FOREIGN KEY REFERENCES 引用表名(引用字段)

、、、 、、、

字段n 数据类型 约束

)

2.约束类型

实体约束(包括主键约束【Primary Key】、唯一约束,该类约束要求对于某一列或列的组合,每一行都有唯一的值。即对于某一行,相同的值不能出现在其他行)、域约束(包括CHECK约束、规则、DEFAULT约束、默认值该类约束要求每一列都必须满足特定的格式或遵守特定的约束条件)、参照完整性约束(外键约束【Foreign Key】)。

2.1主键约束PIRMARY KEY

一张表只能定义一个主键,主键可以包含一个或一个以上的字段,并且主键的值必须是唯一的。除了主键的字段不允许为空外,其它方面主键和唯一性索引很相似。

主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键; 是不可能(或很难)更新;主键列上没有任何两行具有相同值(即重复值),不允许空(NULL);主健可作外健,唯一索引不可。

2.2唯一约束 UNIQUE

 唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段,一个表上可以放置多个唯一性约束;只要唯一就可以更新;即表中任意两行在  指定列上都不允许有相同的值,允许空(NULL); 一个表上可以放置多个唯一性约束。

2.3CHECK约束

CHECK 约束是指约束表中某一个或者某些列中可接受的数据值或者数据格式。

2.4规则

2.5DEFAULT约束

2.6默认值

2.7外键约束 FOREIGN KEY

3.Cascade 英[kæˈskeɪd]美[kæˈsked] n.串联;倾泻;小瀑布,瀑布状物 vi.流注;大量落下。

4.Identity 英[aɪˈdentəti]美[aɪˈdɛntɪti]n.身份;[逻]同一性;个性;[数]恒等(式)。

5.Constraint 英[kənˈstreɪnt]美[kənˈstrent] n.约束;限制;强制

6.唯一约束UNIQUE

6.1新建表时创建唯一约束

USE 数据库 CREATE TABLE 数据表

( 

字段1 数据类型 约束

字段2 数据类型 约束

字段3 数据类型 其他约束 UNIQUE

、、、 、、、

字段n 数据类型 约束

)

6.2在已存在的表中添加唯一约束

USE 数据库 ALTER TABLE 数据表 ADD CONSTRAINT 约束名 UNIQUE (字段)

7.DEFAULT约束

7.1在创建表时,创建DEFAULT约束

USE 数据库 CREATE TABLE 数据表

( 

字段1 数据类型 约束

字段2 数据类型 约束

字段3 数据类型 其他约束 DEFAULT DEFAULT值

、、、 、、、

字段n 数据类型 约束

)

7.2在已存在的表中创建DEFAULT约束

USE 数据ALTER TABLE 数据表ADD 

CONSTRAINT 约束名1 DEFAULT DEFAULT值1 FOR 字段1,

CONSTRAINT 约束名2 DEFAULT DEFAULT值2 FOR 字段2,

、、、、、、

CONSTRAINT 约束名n DEFAULT DEFAULT值n FOR 字段n

8.禁用约束

8.1SQL SERVER只允许禁用外键约束或CHECK约束,不能禁用主键约束或唯一约束。

8.2在创建约束时忽略无效数据(在ALTER语句中使用WITH NOCHECK选项)

USE 数据ALTER TABLE 数据表

WITH NOCHECK

ADD CONSTRAINT 约束名 CHECK(约束条件)

8.3临时禁用已存在的约束

可以采用NOCHECK选项在执行ALTER语句时禁用约束。

USE 数据ALTER TABLE 数据表

NOCHECK

CONSTRAINT 约束名

8.4SQL SERVER 提供一个过程(sp_helpconstraint)来显示约束的状态

在数据表中执行过程:EXEC sp_helpconstraint 数据表名。

9.数据完整性决策矩阵

限制

优点

缺点

约束

快速

可以引用其他列

在命令指向之前发生

遵循NASI标准

必须对每个表重新定义

不能引用其他表

不能绑定到数据类型

规则

默认值

独立的对象

可重用

在命令执行前发生

可绑定数据类型

稍慢

不能跨列引用

不能引用其他表

实际上只能向后兼容

触发器

非常灵活

可以引用其他列或其他表

可以通过.NET引用SQL SERVER外部的其他信息

在命令执行之后发生

系统开销很大

 

10.本章内容总结

主题

概念

约束类型

SQL SERVER 提供了实体约束(引用一行中的列)、域约束(比较不同行中的列)和参照完整性约束(比较相关表间的相同列)

键约束

主键、外键和唯一约束(替换键)构成了参照完整性

CHECK

约束

通过添加CHECK约束拒绝违反规则的行为,防止无效数据从任意来源进入数据库

DEFAULT

约束

使用默认值替换没有在INSERT语句中指定的值

禁用约束

允许在采用约束前使用不兼容的数据,否则必须在禁用约束之后插入不兼容的数据

选择使用

何种约束

约束是有限制的,但是它们的功能很优秀;规则和默认值具有较少的限制,但是已经逐渐过时;触发器具有最大的灵活性,但是运行较为缓慢,系统开销大

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值