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

SQLServer之DEFAULT约束

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

    DEFAULT约束增多准绳

    1、若在表中定义了暗中同意值约束,客户在插入新的数据行时,假诺该行没有一点名数量,那么系统将暗许值赋给该列,倘若我们不安装私下认可值,系统默以为NULL。

    2、假如“默许值”字段中的项替换绑定的暗中同意值(以不带圆括号的格局展示),则将唤起您化解对私下认可值的绑定,并将其替换为新的暗许值。

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

    4、若要输入数值暗中同意值,请输入数值何况不要用引号将值括起来。

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

    CHECK约束增多准绳

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

    2、Check约束通过逻辑表明式来判断数据的管事,用来限制输入一列或多列的值的限制,在列中更新数据时,所要输入的内容必得满意Check约束的尺度,不然将不能够无误输入。

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

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

    动用SSMS数据库管理工科具增添DEFAULT约束

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

    图片 1

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

    图片 2

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

    图片 3

    使用SSMS数据库管理工科具加多CHECK约束

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

    图片 4

    2、选取要丰硕约束的数码列-》右键点击-》选择CHECK约束。

    图片 5

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

    图片 6

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

    图片 7

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

    图片 8

    动用T-SQL脚本增多DEFAULT约束

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

    当表结构已存在时

    先是决断表中是否存在暗中同意约束,若是存在则先删除暗许约束再加多,要是不设有则平素抬高。

    语法:

    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

    图片 9

    图片 10

    当表结构存在时

    加多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

     图片 11

    图片 12

    创立表时拉长暗中认可约束

    率先决断表是还是不是选在,倘使存在则先删除表再增多,若是不设有则间接助长。

    语法:

    --成立新表时增加暗中同意约束
    --数据库证明
    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

    图片 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

    DEFAULT约束优弱点

    优点:

    1、使用暗许值能够收缩代码量,新添多少时得以不用写新添暗中认可值列,实践新扩大操作时时默许填充。

    2、较有助于开展总括和深入分析,以及福利程序逻辑操作。

    缺点:

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

     

    CHECK约束优短处

    优点:

    1、保证列数据规范和限制,能够约束数据完整性

    2、有Check约束的列能够提要求查询优化器消息之所以进级品质

    缺点:

    1、插入也许修改时数据不适合约束法则,不恐怕修改成功。

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

    关键词: