必发88手机客户端 24

SQLServer之修改CHECK约束必发88手机客户端

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

1、张开数据库,选拔数据表-》右键点击-》选取设计(恐怕拓展约束,选取约束,右键点击,选拔修改,前面步骤相同)。

必发88手机客户端 1

必发88手机客户端 2

2、选拔要修改的数量列-》右键点击-》选取CHECK约束。

必发88手机客户端 3

3、在CHECK约束弹出框中-》选择要修改的牢笼-》输入约束表明式-》输入约束名和平条目束描述-》选取表设计器准绳-》点击关闭。

必发88手机客户端 4

 4、点击保存按键(可能ctrl+s)-》刷新表查看修改结果。

必发88手机客户端 5

CHECK约束增添准则

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

2、Check约束通过逻辑表明式来决断数据的有效,用来界定输入一列或多列的值的限制,在列中立异数据时,所要输入的剧情必须满意Check约束的口径,不然将无法准确输入。

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

4、假设对二个表定义 CHECK
约束,那么此约束会在特定的列中对值举办限定。

DEFAULT约束增加法则

1、若在表中定义了私下认可值约束,用户在插入新的数码行时,假若该行未有一些名数量,那么系统将暗中认可值赋给该列,尽管大家不安装暗中同意值,系统默以为NULL。

2、假如“默许值”字段中的项替换绑定的默许值(以不带圆括号的方式显得),则将唤起您拨冗对私下认可值的绑定,并将其替换为新的私下认可值。

3、若要输入文本字符串,请用单引号 (‘)
将值括起来;不要采用双引号
(“),因为双引号已保存用于带引号的标记符。

4、若要输入数值暗中认可值,请输入数值而且永不用引号将值括起来。

5、若要输入对象/函数,请输入对象/函数的名号而且毫不用引号将名称括起来。

应用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

必发88手机客户端 6

必发88手机客户端 7

运用SSMS数据库管理工科具增多CHECK约束

1、连接数据库,选拔数据库,采取数据表-》右键点击(恐怕直接点击约束,右键点击,选用丰硕约束,前边步骤同样)-》选拔设计。

必发88手机客户端 8

2、选拔要增进约束的数量列-》右键点击-》选拔CHECK约束。

必发88手机客户端 9

3、在CHECK约束弹出框中式点心击加多。

必发88手机客户端 10

4、在CHECK约束弹出框中-》输入CHECK约束表明式-》输入CHECK约束名-》输入CHECK约束描述-》其余能够采纳暗许。

必发88手机客户端 11

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

必发88手机客户端 12

选取SSMS数据库管理工具增添DEFAULT约束

1、连接数据库,采用数据表-》右键点击-》采用设计。

必发88手机客户端 13

2、在表设计窗口中-》选拔数据列-》在列属性窗口中找到暗许值或绑定-》输入暗中认可值(注意暗中认可值的数据类型和输入格式)。

必发88手机客户端 14

3、点击保存按键(只怕ctrl+s)-》刷新表-》再度张开表查看结果。

必发88手机客户端 15

CHECK约束修改优劣点

优点:

1、修改数据库CHECK约束能够保证数据的标准性和完整性。

缺点:

1:修改约束的表设计器使用准则时,只怕会挑起原有数据与约束的抵触。

 

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

利用T-SQL脚本增添DEFAULT约束

当表结构存在时

增添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

 必发88手机客户端 16

必发88手机客户端 17

当表结构已存在时

先是推断表中是还是不是存在暗中认可约束,纵然存在则先删除暗许约束再增多,假设不设有则一向助长。

语法:

use 数据库
go
–推断暗中同意约束是还是不是留存,假设存在则先删除,即使官样文章则间接抬高
if exists(select * from sysobjects where
name=约束名)
alter table 表名 drop constraint
约束名;
go
–给钦命列增添默许约束
alter table 表名 add constraint 约束名
default(约束值) for 列名;
go

示例:

use [testss]
go
–决断暗中认可约束是还是不是留存,若是存在则先删除,假若不设有则平昔抬高
if exists(select * from sysobjects where
name=’defalut_height’)
alter table [testss].[dbo].[test1]
drop constraint defalut_height;
go
–给钦命列增添暗中认可约束
alter table [testss].[dbo].[test1]
add constraint defalut_height default(160) for height;
go

必发88手机客户端 18

必发88手机客户端 19

当表结构不设有的时候

纵然表结构空头支票,可以直接抬高约束,能够同一时间丰裕贰个依然四个约束。

语法:

–借使表结构不设临时增添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

 必发88手机客户端 20

必发88手机客户端 21

必发88手机客户端 22

成立表时加上默许约束

率先判定表是还是不是选在,要是存在则先删除表再增加,尽管不真实则一贯抬高。

语法:

–创设新表时增加私下认可约束
–数据库声明
use 数据库名
go
–要是表已存在则先删除表再创立,若是表空中楼阁则平素开立
if exists(select * from sysobjects where
name=表名 and type =’U’)
drop table 表名;
go
–建表语法注脚
create table 表名
(
–字段注解
列名 列类型 identity(1,1) not
null,
列名 列类型) null,
列名 列类型 null,
列名 列类型 null,
列名 列类型,
列名 列类型 constraint 约束名 default
默认值,
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

示例:

–成立新表时增多默许约束
–数据库表明
use testss
go
–假诺表已存在则先删除表再成立,假若表不设有则从来开立
if exists(select * from sysobjects where
name=’test1′ and type =’U’)
drop table test1;
go
–建表语法证明
create table test1
(
–字段评释
id int identity(1,1) not null,
name nvarchar(50) null,
sex nvarchar(50) null,
age nvarchar(50) null,
classid int,
height int constraint default_he default
166,
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

必发88手机客户端 23

必发88手机客户端 24

CHECK约束优短处

优点:

1、保障列数据正式和范围,能够约束数据完整性

2、有Check约束的列能够提须求查询优化器消息之所以升高质量

缺点:

1、插入大概涂改时数据不适合约束法规,无法修改成功。

DEFAULT约束优劣点

优点:

1、使用私下认可值可以缩小代码量,新扩充多少时方可不用写新扩充私下认可值列,推行新添操作时时暗中认可填充。

2、较有利开始展览总计和分析,以及方便程序逻辑操作。

缺点:

1、使用不为NULL的暗中同意值,占用了越来越多的囤积空间。