您的位置:68399皇家赌场 > 虚拟主机 > 【澳门皇家赌场55533网址】SQLServer之DEFAULT约束

【澳门皇家赌场55533网址】SQLServer之DEFAULT约束

发布时间:2019-04-28 13:54编辑:虚拟主机浏览(151)

    在新表中开创外键

     语法:

    if exists( select * from sysobjects where name=表名 and type ='U')
    drop table 表名;
    go

    --当表结构不设有时
    --建表语法证明
    create table 表名
    (
    --字段注脚
    列名 int identity(1,1) not null,
    列名 int,
    primary key clustered(id asc) with(ignore_dup_key=off) on [primary], --主键索引证明
    constraint 外键名 foreign key(列名)

    references 主表名(列名)
    on update cascade--是或不是级联操作
    on delete cascade
    )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'列名';

    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,
    primary key clustered(id asc) with(ignore_dup_key=off) on [primary], --主键索引证明
    constraint t3_t4 foreign key(classid)

    references test2 (id)
    on update cascade
    on delete cascade
    )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

    澳门皇家赌场55533网址 1

    创建表时增进暗中认可约束

    先是剖断表是还是不是选在,假诺存在则先删除表再增加,即使不存在则直接抬高。

    语法:

    --创制新表时增多暗中同意约束
    --数据库注解
    use 数据库名
    go
    --假设表已存在则先删除表再次创下设,要是表不设有则平素开立
    if exists(select * from sysobjects where name=表名 and type ='U')
    drop table 表名;
    go
    --建表语法证明
    create table 表名
    (
    澳门皇家赌场55533网址,--字段注解
    列名 列类型 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

    澳门皇家赌场55533网址 2

    澳门皇家赌场55533网址 3

    CHECK约束优缺点

    优点:

    一、保障列数据正式和限量,能够约束数据完整性

    二、有Check约束的列能够提须要查询优化器音讯之所以提高品质

    缺点:

    一、插入或然涂改时数据不切合约束规则,无法修改成功。

    Alter table [表名] add constraint [约束名] check (内容)

    FOREIGN KEY约束增添规则

    壹、外键约束并不仅能够与另一表的主键约束相链接,它仍是能够定义为引用另1个表中 UNIQUE 约束的列。

    二、若是在 FOREIGN KEY 约束的列中输入非 NULL 值,则此值必须在被引用列中留存;不然,将回来违反外键约束的错误消息。 若要保障验证了组合外键约束的具备值,请对富有参预列钦命NOT NULL。

    叁、FOREIGN KEY 约束仅能引用位于同1服务器上的同样数据库中的表。 跨数据库的引用完整性必须通过触发器实现。

    4、FOREIGN KEY 约束可援引同一表中的别的列。 此行为称作自引用。

    5、在列级内定的 FOREIGN KEY 约束只可以列出三个引用列。 此列的数据类型必须与概念约束的列的数据类型同样。

    陆、在表级内定的 FOREIGN KEY 约束所享有的引用列数目必须与约束列列表中的列数一样。 各个引用列的数据类型也必须与列表中相应列的数据类型一样。

    7、对于表可蕴涵的引用别的表的 FOREIGN KEY 约束的多少或别的表所具备的引用特定表的 FOREIGN KEY 约束的多寡, 数据库引擎 都未有预约义的限量。 即便如此,可应用的 FOREIGN KEY 约束的实际上数目仍旧受硬件配备以及数据库和应用程序设计的范围。 表最多能够将 2伍一个别的表和列作为外键引用(传出引用)。 SQL Server 201六 (一三.x) 将可在单独的表中引用的其余表和列(传入引用)的多少限制从 二五叁 进步至 10,000。 (包容性等第至少必须为 130。)数量限制的滋长带来了下列约束:

    DELETE 和 UPDATE DML 操作帮衬胜出 2伍3 个外键引用。 不援救MEPRADOGE 操作。

    对自家实行外键引用的表仍只可以进展 252个外键引用。

    列存款和储蓄索引、内部存款和储蓄器优化表和 Stretch Database 暂不援助开始展览当先 25叁 个外键引用。

    八、对于暂时表不强制 FOREIGN KEY 约束。

    九、假若在 CLENVISION用户定义类型的列上定义外键,则该类型的贯彻必须帮助二进制排序。

    拾、仅当 FOREIGN KEY 约束引用的主键也定义为项目 varchar(max) 时,本领在此约束中采用项目为varchar(max) 的列。

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

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

    澳门皇家赌场55533网址 4

    二、在表设计窗口中-》采用数据列-》在列属性窗口中找到默许值或绑定-》输入暗中同意值(注意默许值的数据类型和输入格式)。

    澳门皇家赌场55533网址 5

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

    澳门皇家赌场55533网址 6

    当表结构不设有时

    设若表结构不设有,能够直接助长约束,能够而且加多1个大概八个约束。

    语法:

    --假设表结构不设有时增加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

     澳门皇家赌场55533网址 7

    澳门皇家赌场55533网址 8

    澳门皇家赌场55533网址 9

    捌:加多外键约束

    当表结构已存在时

    若是要丰裕约束的表已存在外键约束,须要先删除此之外键约束再加多外键约束。假设不设有外键约束能够增加外键约束。

    语法:

    if exists(select * from sysobjects where name=约束名)
    alter table 数据库名.[dbo].表名 drop constraint 约束名;
    alter table 数据库名.[dbo].表名 with check add constraint 约束名 foreign key(列名)
    references 数据库名.[dbo].表名(列名)

    on delete cascade
    on update cascade;
    go

    示例:

    if exists(select * from sysobjects where name='t1_t2')
    alter table [testss].[dbo].[test1] drop constraint t1_t2;
    alter table [testss].[dbo].[test1] with check add constraint t1_t2 foreign key(classid)
    references [testss].[dbo].[test2](id)
    on delete cascade
    on update cascade;
    go

    澳门皇家赌场55533网址 10

    运用T-SQL脚本加多DEFAULT约束

    CHECK约束增加规则

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

    2、Check约束通过逻辑表达式来剖断数据的卓有效能,用来限制输入1列或多列的值的限量,在列中立异数据时,所要输入的内容必须满意Check约束的标准,不然将不能够准确输入。

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

    4、如若对二个表定义 CHECK 约束,那么此约束会在一定的列中对值实行限定。

    Alter table [表名] add constraint [ 约束名] primary key( [列名])

    FOREIGN KEY约束优缺点

    优点:

    1、保证数据的1致性,完整性,更保险。

    2、关联合检查询时,能够用到FK 的总括新闻。

    3、有主外键的数据库设计能够扩充EHaval图的可读性。

    缺点:

    一、删队或更新关联数据时索要做检查,效能会十分的低。

    二、手工业调数据时,会存在主从表校验,会比较麻烦。

    3、批量导入数据时,会存在外键校验,须要先关闭外键约束,导入达成再展开外键约束,操作相比费心。

     

    DEFAULT约束优缺点

    优点:

    一、使用暗许值能够减小代码量,新扩张加少时方可不用写新扩张暗中认可值列,实行新扩充操作时时默许填充。

    二、较有利开始展览计算和分析,以及福利程序逻辑操作。

    缺点:

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

     

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

    一、连接数据库,接纳数据库,选取数据表-》右键点击(只怕直接点击约束,右键点击,采纳丰盛约束,前边步骤相同)-》选用设计。

    澳门皇家赌场55533网址 11

    贰、选取要抬高约束的数目列-》右键点击-》选拔CHECK约束。

    澳门皇家赌场55533网址 12

    三、在CHECK约束弹出框中式点心击增加。

    澳门皇家赌场55533网址 13

    四、在CHECK约束弹出框中-》输入CHECK约束表达式-》输入CHECK约束名-》输入CHECK约束描述-》其余能够采纳私下认可。

    澳门皇家赌场55533网址 14

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

    澳门皇家赌场55533网址 15

    exec sp_rename '[表名].[列名]','[表名].[新列名]'

    选拔T-SQL脚本增添外键约束

    当表结构已存在时

    先是判定表中是否存在私下认可约束,倘诺存在则先删除暗许约束再加多,假设不设有则直接助长。

    语法:

    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

    澳门皇家赌场55533网址 16

    澳门皇家赌场55533网址 17

    运用T-SQL脚本增多CHECK约束

    三:  修改表中字段类型 (能够修改列的类型,是不是为空)

    利用SSMS数据库管理工科具增多外键约束

    本示例演示当表结构已存在时增加外键约束,成立表时加上国科技大学键约束步骤和表结构存在时增多外键步骤同样。示例演示如下:

    1、连接数据库,张开要增加外键的数码表-》右键点击-》选取设计。

    澳门皇家赌场55533网址 18

    二、在表设计窗口-》选拔要增添外键的数据行-》右键点击-》选用涉及。

    澳门皇家赌场55533网址 19

    三、在外键关系窗口中-》点击增多。

    澳门皇家赌场55533网址 20

    四、增添落成后-》首先修改表和列标准。

    澳门皇家赌场55533网址 21

    5、在表和列窗口中-》输入外键名-》在左手选用主表和涉嫌的列-》在右手选用从表和当作外键的列-》点击分明。

    澳门皇家赌场55533网址 22

    陆、在外键关系窗口中-》可采纳丰裕或然不加多外键描述-》可挑选丰盛或许不增加修改也许去除数据时级联操作-》可接纳丰硕或然不添狠抓制外键约束-》可挑选丰硕或许不添抓好制用于复制-》点击关闭。

    澳门皇家赌场55533网址 23

    7、点击保存开关(ctrl s)-》此时表会弹出警告窗口,点击是-》刷新查看外键是或不是丰裕成功。

    澳门皇家赌场55533网址 24

    澳门皇家赌场55533网址 25

    DEFAULT约束增多规则

    1、若在表中定义了暗中认可值约束,用户在插入新的数额行时,借使该行未有点名数量,那么系统将私下认可值赋给该列,假使大家不设置私下认可值,系统默以为NULL。

    2、倘若“私下认可值”字段中的项替换绑定的暗中同意值(以不带圆括号的花样显得),则将唤起您拨冗对暗中认可值的绑定,并将其替换为新的私下认可值。

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

    4、若要输入数值暗许值,请输入数值并且不要用引号将值括起来。

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

    当表结构存在时

    加多CHECK约束时首先校验约束是不是已存在,借使存在应该是先删除再加多,即便不存在则一贯抬高。

    语法:

    -- 加多三个暗许约束
    use 数据库名;
    go

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

    alter table 表名 add constraint 约束名 check(约束规则),constraint 约束名 check(约束规则);
    go

    示例:

    -- 增添1个暗中认可约束
    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

     澳门皇家赌场55533网址 26

    澳门皇家赌场55533网址 27

    Alter table [表名] alter column [列名] 类型

    5:增多唯一约束

    本文由68399皇家赌场发布于虚拟主机,转载请注明出处:【澳门皇家赌场55533网址】SQLServer之DEFAULT约束

    关键词: 68399皇家赌场 SQL

上一篇:数据库及SQL----常用知识点总括

下一篇:没有了