您的位置:澳门新葡8455最新网站 > 数据库管理 > SQLServer之CHECK约束

SQLServer之CHECK约束

发布时间:2019-10-05 16:07编辑:数据库管理浏览(90)

    CHECK约束加多准绳

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

    2、Check约束通过逻辑表达式来判别数据的可行,用来限制输入一列或多列的值的范围,在列中更新数据时,所要输入的从头到尾的经过必需满意Check约束的原则,不然将不能正确输入。

    3、如若对单个列定义 CHECK 约束,那么该列只允许特定的值。

    4、假使对多个表定义 CHECK 约束,那么此约束会在一定的列中对值进行界定。

    DEFAULT约束增多准则

    1、若在表中定义了默许值约束,客商在插入新的数目行时,假若该行未有一点名数量,那么系统将私下认可值赋给该列,倘使大家不设置私下认可值,系统默感觉NULL。

    2、若是“暗许值”字段中的项替换绑定的私下认可值(以不带圆括号的款式体现),则将唤起您拨冗对暗中认可值的绑定,并将其替换为新的暗许值。

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

    4、若要输入数值默许值,请输入数值况兼不要用引号将值括起来。

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

    行使SSMS数据库管理工科具增添CHECK约束

    1、连接数据库,采用数据库,采用数据表-》右键点击(也许间接点击约束,右键点击,采纳充足约束,前边步骤同样)-》选拔设计。

    图片 1

    2、选择要加上约束的数目列-》右键点击-》选拔CHECK约束。

    图片 2

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

    图片 3

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

    图片 4

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

    图片 5

    应用SSMS数据库管理工科具增多DEFAULT约束

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

    图片 6

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

    图片 7

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

    图片 8

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

     图片 9

    图片 10

    当表结构已存在时

    先是推断表中是还是不是存在私下认可约束,假设存在则先删除默许约束再增加,假设不设有则一贯抬高。

    语法:

    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

    图片 11

    图片 12

    当表结构不设一时

    万一表结构不真实,能够一向抬高约束,能够並且增添三个恐怕五个约束。

    语法:

    --若是表结构一纸空文时增添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

     图片 13

    图片 14

    图片 15

    始建表时加多暗中同意约束

    先是判别表是还是不是选在,假如存在则先删除表再加多,假若空头支票则直接抬高。

    语法:

    --创立新表时加多默许约束
    --数据库阐明
    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

    图片 16

    图片 17

    CHECK约束优短处

    优点:

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

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

    缺点:

    1、插入恐怕修改时数据不适合约束准绳,不可能修改成功。

    DEFAULT约束优缺点

    优点:

    1、使用暗中同意值能够减去代码量,新添多少时得以不用写新扩展私下认可值列,施行新扩大操作时时私下认可填充。

    2、较有助于开展计算和分析,以及福利程序逻辑操作。

    缺点:

    1、使用不为NULL的暗许值,占用了越来越多的蕴藏空间。

     

    本文由澳门新葡8455最新网站发布于数据库管理,转载请注明出处:SQLServer之CHECK约束

    关键词:

上一篇:没有了

下一篇:没有了