摘要:本文主要向大家介绍了SQLServer数据库约束的管理,通过具体的内容向大家展示,希望能对大家学习SQLServer数据库有所帮助。
本文主要向大家介绍了SQLServer数据库约束的管理,通过具体的内容向大家展示,希望能对大家学习SQLServer数据库有所帮助。
约束是一种限制。通过在列级或表级设置约束,确保数据符合某种数据完整性规则。
约束的类型
1. 域约束:域约束处理一个或多个列,例如CHECK约束和DEFAULT约束。
2. 实体约束:实体约束都是关于比较行的,例如主键约束和唯一约束。
3. 参照完整性约束:如果某列的值必须与其他列(该列可能在同一个表中,或者更通常的是在不同的表中)的值匹配,就意味着创建了参照完整性约束。例如主键约束和外键约束。
键约束:键是数据库设计和管理的基本概念之一。包括四种类型:主键、外键、替换键、和倒置键(索引)。
主键约束
1. 在创建表的时候添加主键约束
CREATE TABLE T1 (
ID int PRIMARY KEY, -- 在创建表的时候添加主键约束
Description varchar(500)
);
2. 在已存在的表上添加主键约束
ALTER TABLE T1
ADD CONSTRAINT PK_T1_ID
PRIMARY KEY (ID);
外键约束
1. 在创建表的时候添加外键约束
-- <column name> <data type> <nullability>-- FOREIGN KEY REFERENCES <table name>(<column name>)-- [ON DELETE {CASCADE|NO ACTION|SET NULL|SET DEFAULT}]-- [ON UPDATE {CASCADE|NO ACTION|SET NULL|SET DEFAULT}]
CREATE TABLE T2 (
ID int PRIMARY KEY,
RID int FOREIGN KEY REFERENCES T1 (ID), -- 在创建表的时候添加外键约束
Description varchar(500)
);
2. 在已存在的表上添加外键约束
ALTER TABLE T2
ADD CONSTRAINT FK_T2_ID
FOREIGN KEY (RID) REFERENCES T1 (ID);
唯一约束(替换键)
1. 在创建表的时候添加唯一约束
CREATE TABLE T1 (
ID int PRIMARY KEY,
NO varchar(50) UNIQUE, -- 在创建表的时候添加唯一约束
Description varchar(500)
);
2. 在已存在的表上添加唯一约束
ALTER TABLE T1
ADD CONSTRAINT UQ_T1_NO
UNIQUE (NO)
CHECK 约束
1. 在创建表的时候添加CHECK约束
CREATE TABLE T1 (
ID int PRIMARY KEY,
Description varchar(500),
CreateDate datetime2 CHECK (CreateDate >= '1990-01-01') -- 在创建表的时候添加CHECK约束
);
2. 在已存在的表上添加CHECK约束
ALTER TABLE T1
ADD CONSTRAINT CN_T1_CreateDate
CHECK (CreateDate >= '1990-01-01')
DEFAULT 约束
1. 在创建表的时候添加DEFAULT约束
CREATE TABLE T1 (
ID int PRIMARY KEY,
Description varchar(500),
CreateDate datetime2 DEFAULT GETDATE() -- 在创建表的时候添加DEFAULT约束
);
2. 在已存在的表上添加DEFAULT约束
ALTER TABLE T1
ADD CONSTRAINT CN_T1_CreateDate
DEFAULT GETDATE() FOR CreateDate;
禁用约束
1. 在添加约束时忽略已存在的无效数据
ALTER TABLE <table name>
WITH NOCHECK -- 在添加约束时忽略已存在的无效数据
ADD CONSTRAINT <constraint name>
<constraint type> <other content ...>
2. 临时禁用已存在的约束
ALTER TABLE <table name>
NOCHECK -- 临时禁用已存在的约束
CONSTRAINT <constraint name>
ALTER TABLE <table name>
CHECK -- 再次启用约束
CONSTRAINT <constraint name>
注意:只允许禁用外键约束和CHECK约束,不能禁用主键约束和唯一约束。
删除约束
ALTER TABLE <table name>
DROP -- 删除约束
CONSTRAINT <constraint name>
查看约束
EXEC sp_helpconstraint <table name> -- 查看数据表中的所有列的约束
规则和默认值
规则和默认值的引用要早于CHECK和DEFAULT约束。它们是较老的SQL Server备用约束的一部分,当然也不是没有优点。因此,建议您了解一下它们的向后兼容性和遗留代码,这里不再详细解释。规则和默认值不遵循ANSI标准(这产生了移植问题),而且性能不如约束好。自7.0版本之后,Microsoft列出规则和默认值只是为了向后兼容,而不准备在以后继续支持这个功能。
本文由职坐标整理并发布,了解更多内容,请关注职坐标SQL Server数据库频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号