网络数据

当前位置:永利402游戏网站-永利402com官方网站 > 网络数据 > SQLServer之CHECK约束

SQLServer之CHECK约束

来源:http://www.xtcsyb.com 作者:永利402游戏网站-永利402com官方网站 时间:2019-09-11 14:45

选用SSMS数据库管理工科具修改CHECK约束

1、展开数据库,选拔数据表-》右键点击-》选用设计(或许举行约束,接纳约束,右键点击,选取修改,前边步骤同样)。

图片 1

图片 2

2、选择要修改的多寡列-》右键点击-》采纳CHECK约束。

图片 3

3、在CHECK约束弹出框中-》选取要修改的牢笼-》输入约束表达式-》输入约束名和平合同束描述-》选用表设计器准则-》点击关闭。

图片 4

 4、点击保存开关(也许ctrl+s)-》刷新表查看修改结果。

图片 5

CHECK约束增加法规

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

2、Check约束通过逻辑表达式来判别数据的管用,用来限制输入一列或多列的值的范围,在列中立异数据时,所要输入的内容必需满意Check约束的基准,不然将不能精确输入。

3、假使对单个列定义 CHECK 约束,那么该列只同意特定的值。

4、要是对一个表定义 CHECK 约束,那么此约束会在一定的列中对值举办界定。

运用T-SQL脚本修改CHECK约束

CHECK约束修改法则必需首先删除现成的CHECK自律,然后利用新定义再次创立,本领动用Transact-SQL修改CHECK约束。

语法:

--修改check约束
use 数据库名
go

--如若封锁存在则先删除
if exists(select * from sysobjects where name=约束名)
alter table 表名 drop constraint 约束名;
go

--加多封锁
alter table 表名
--with check --该约束是不是选拔于现存数据,with check表示应用于现存数量,with nocheck代表不选用于现存数据
add constraint 约束名
check
not for replication --当复制代理在表中插入或更新数据时,禁止使用该约束。
(约束表明式);
go

--向表中增添新数据或更新表中存活数量时是不是禁止使用该约束。check代表校验,nocheck代表不校验
--alter table 表名
--check
--constraint 表名;
--go

--添加check约束描述
execute sp_addextendedproperty N'MS_Description', N'约束描述', N'SCHEMA', N'dbo', N'TABLE', N'表名', N'CONSTRAINT', N'约束名';
go

示例:

--修改check约束
use testss
go

--纵然封锁存在则先删除
if exists(select * from sysobjects where name='u_check2')
alter table test1 drop constraint u_check2;
go

--加多封锁
alter table test1
--with check --该约束是还是不是使用于现存数据,with check代表应用于现成数量,with nocheck表示不行使于现存数量
add constraint u_check2
check
not for replication --当复制代理在表中插入或更新数据时,禁止使用该约束。
(height>=100 and height <=200);
go

--向表中增多新数据或更新表中存活数量时是还是不是禁用该约束。check代表校验,nocheck代表不校验
--alter table test1
--check
--constraint u_check2;
--go

--加多check约束描述
execute sp_addextendedproperty N'MS_Description', N'修改约束', N'SCHEMA', N'dbo', N'TABLE', N'test1', N'CONSTRAINT', N'u_check2';
go

图片 6

图片 7

选择SSMS数据库管理工科具增多CHECK约束

1、连接数据库,采用数据库,采取数据表-》右键点击(也许直接点击约束,右键点击,选取丰盛约束,后边步骤同样)-》采用设计。

图片 8

2、选用要拉长约束的数额列-》右键点击-》选拔CHECK约束。

图片 9

3、在CHECK约束弹出框中式茶食击加多。

图片 10

4、在CHECK约束弹出框中-》输入CHECK约束表明式-》输入CHECK约束名-》输入CHECK约束描述-》别的能够挑选暗中认可。

图片 11

5、点击关闭-》点击保存开关(或许ctrl+s)-》刷新表查看结果。

图片 12

CHECK约束修改优劣点

优点:

1、修改数据库CHECK约束能够有限援助数据的标准性和完整性。

缺点:

1:修改约束的表设计器使用法规时,只怕会挑起原有数据与约束的争执。

 

使用T-SQL脚本增加CHECK约束

当表结构存在时

加多CHECK约束时首先校验约束是不是已存在,假如存在应该是先删除再增多,借使不设有则平素助长。

语法:

-- 增添贰个暗中同意约束
use 数据库名;
go

if exists(select * from sysobjects where name=约束名)
alter table 表名 drop constraint 约束名;
go

alter table 表名 add constraint 约束名 check(约束准绳),constraint 约束名 check(约束准绳);
go

示例:

-- 增加八个暗中同意约束
use testss;
go

if exists(select * from sysobjects where name='check1')
alter table test1 drop constraint check1;
go

alter table test1 add constraint check1 check(height>=170 and height<=175);
go

 图片 13

图片 14

当表结构不设不时

万一表结构海市蜃楼,能够直接助长约束,能够相同的时间增多一个要么五个约束。

语法:

--如若表结构空中楼阁时增加check约束
use 数据库名;
go
--假如已存在表则删除
if exists(select * from sysobjects where name=表名 and xtype='U')
drop table 表名;
go
--创建表
create table 表名
(
--字段评释
列名 int identity(1,1) not null,
列名 nvarchar(50) null,
列名 nvarchar(50) null constraint 约束名 check(约束准绳),
列名 nvarchar(50) null,
列名 int,
列名 int constraint 约束名 check(约束法则)
primary key clustered(列名 asc) with(ignore_dup_key=off) on [primary], --主键索引注明
)on [primary]

--字段注释证明
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列描述' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列描述' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列描述' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列描述' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列描述' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

go

示例:

--倘若表结构海市蜃楼时增添check约束
use testss;
go
--借使已存在表则删除
if exists(select * from sysobjects where name='test1' and xtype='U')
drop table test1;
go
--创建表
create table test1
(
--字段表明
id int identity(1,1) not null,
name nvarchar(50) null,
sex nvarchar(50) null constraint check1 check(sex='男' or sex='女'),
age nvarchar(50) null,
classid int,
height int constraint check2 check(height>=110 and height<=120)
primary key clustered(id asc) with(ignore_dup_key=off) on [primary], --主键索引注脚
)on [primary]

--字段注释申明
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'id主键' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'id';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'name';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'性别' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'sex';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'年龄' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'age';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'班级id' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'classid';

go

 图片 15

图片 16

图片 17

CHECK约束优缺点

优点:

1、保险列数据标准和限量,能够约束数据完整性

2、有Check约束的列能够提供给查询优化器新闻之所以晋级质量

缺点:

1、插入或许修改时数据不吻合约束法则,不能够修改成功。

本文由永利402游戏网站-永利402com官方网站发布于网络数据,转载请注明出处:SQLServer之CHECK约束

关键词: