SQLServer之CHECK约束
CHECK约束添加规则
1、CHECK 约束用于限制列中的值的范围。
2、Check约束通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围,在列中更新数据时,所要输入的内容必须满足Check约束的条件,否则将无法正确输入。
3、如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
4、如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
使用SSMS数据库管理工具添加CHECK约束
1、连接数据库,选择数据库,选择数据表-》右键点击(或者直接点击约束,右键点击,选择添加约束,后面步骤相同)-》选择设计。
2、选择要添加约束的数据列-》右键点击-》选择CHECK约束。
3、在CHECK约束弹出框中点击添加。
4、在CHECK约束弹出框中-》输入CHECK约束表达式-》输入CHECK约束名-》输入CHECK约束描述-》其他可以选择默认。
5、点击关闭-》点击保存按钮(或者ctrl+s)-》刷新表查看结果。
使用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
当表结构不存在时
如果表结构不存在,可以直接添加约束,可以同时添加一个或者多个约束。
语法:
--如果表结构不存在时添加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
CHECK约束优缺点
优点:
1、保证列数据规范和范围,可以约束数据完整性
2、有Check约束的列可以提供给查询优化器信息从而提升性能
缺点:
1、插入或者修改时数据不符合约束规则,无法修改成功。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
SQLServer之DEFAULT约束
原文: SQLServer之DEFAULT约束 DEFAULT约束添加规则 1、若在表中定义了默认值约束,用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果我们不设置默认值,系统默认为NULL。 2、如果“默认值”字段中的项替换绑定的默认值(以不带圆括号的形式显示),则将提示你解除对默认值的绑定,并将其替换为新的默认值。 3、若要输入文本字符串,请用单引号 (') 将值括起来;不要使用双引号 ("),因为双引号已保留用于带引号的标识符。 4、若要输入数值默认值,请输入数值并且不要用引号将值括起来。 5、若要输入对象/函数,请输入对象/函数的名称并且不要用引号将名称括起来。 使用SSMS数据库管理工具添加DEFAULT约束 1、连接数据库,选择数据表-》右键点击-》选择设计。 2、在表设计窗口中-》选择数据列-》在列属性窗口中找到默认值或绑定-》输入默认值(注意默认值的数据类型和输入格式)。 3、点击保存按钮(或者ctrl+s)-》刷新表-》再次打开表查看结果。 使用T-SQL脚本添加DEFAULT约束 当表结构已存在时 首先判断表中是否存在默认约束,如果存在则...
- 下一篇
SQLServer之修改CHECK约束
原文: SQLServer之修改CHECK约束 使用SSMS数据库管理工具修改CHECK约束 1、打开数据库,选择数据表-》右键点击-》选择设计(或者展开约束,选择约束,右键点击,选择修改,后面步骤相同)。 2、选择要修改的数据列-》右键点击-》选择CHECK约束。 3、在CHECK约束弹出框中-》选择要修改的约束-》输入约束表达式-》输入约束名和约束描述-》选择表设计器规则-》点击关闭。 4、点击保存按钮(或者ctrl+s)-》刷新表查看修改结果。 使用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表示...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,CentOS7官方镜像安装Oracle11G
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池