ca888会员登录SQLServer之DEFAULT约束

2019-03-23 11:06栏目:程序人生

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

壹 、打开数据库,选拔数据表-》右键点击-》选拔设计(恐怕拓展约束,选用约束,右键点击,选用修改,前面步骤一样)。

ca888会员登录 1

ca888会员登录 2

贰 、选拔要修改的多寡列-》右键点击-》选择CHECK约束。

ca888会员登录 3

三 、在CHECK约束弹出框中-》选取要修改的羁绊-》输入约束表明式-》输入约束名和平条约束描述-》选取表设计器规则-》点击关闭。

ca888会员登录 4

 四 、点击保存按钮(恐怕ctrl s)-》刷新表查看修改结果。

ca888会员登录 5

利用SSMS数据库管理工具添加CHECK约束

壹 、连接数据库,选拔数据库,选用数据表-》右键点击(大概直接点击约束,右键点击,选用丰硕约束,前边步骤一样)-》选拔设计。

ca888会员登录 6

二 、选取要拉长约束的多寡列-》右键点击-》选取CHECK约束。

ca888会员登录 7

叁 、在CHECK约束弹出框中式点心击添加。

ca888会员登录 8

肆 、在CHECK约束弹出框中-》输入CHECK约束表达式-》输入CHECK约束名-》输入CHECK约束描述-》其余能够挑选默许。

ca888会员登录 9

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

ca888会员登录 10

创建表时增进暗许约束

先是判断表是还是不是选在,要是存在则先删除表再添加,假设不存在则直接抬高。

语法:

--创设新表时添加私下认可约束
--数据库评释
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

ca888会员登录 11

ca888会员登录 12

FOREIGN KEY约束优缺点

ca888会员登录,优点:

① 、保障数据的一致性,完整性,更牢靠。

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

③ 、有主外键的数据库设计可以追加EXC60图的可读性。

缺点:

一 、删队或更新关联数据时要求做检讨,功能会非常低。

二 、手工业调数据时,会设有主从表校验,会相比费心。

③ 、批量导入数据时,会设有外键校验,须要先关闭外键约束,导入完结再打开外键约束,操作比较费劲。

 

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

ca888会员登录 13

ca888会员登录 14

CHECK约束优缺点

优点:

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

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

缺点:

壹 、插入或然修改时数据不符合约束规则,不可能修改成功。

DEFAULT约束优缺点

优点:

① 、使用暗中同意值能够减掉代码量,新增多少时能够不用写新增默许值列,执行新增操作时时暗中同意填充。

二 、较便宜开始展览总括和分析,以及便于程序逻辑操作。

缺点:

一 、使用不为NULL的默许值,占用了越多的囤积空间。

 

动用SSMS数据库管理工科具添加外键约束

本示例演示当表结构已存在时添加外键约束,创设表时加上海外国语大学键约束步骤和表结构存在时添加外键步骤一样。示例演示如下:

① 、连接数据库,打开要添加外键的数据表-》右键点击-》选用设计。

ca888会员登录 15

贰 、在表设计窗口-》接纳要添加外键的数额行-》右键点击-》选拔事关。

ca888会员登录 16

三 、在外键关系窗口中-》点击添加。

ca888会员登录 17

④ 、添加实现后-》首先修改表和列规范。

ca888会员登录 18

五 、在表和列窗口中-》输入外键名-》在右侧选拔主表和涉及的列-》在右侧选拔从表和作为外键的列-》点击明确。

ca888会员登录 19

陆 、在外键关系窗口中-》可挑选丰盛恐怕不添加外键描述-》可选用丰硕也许不添加修改也许去除数据时级联操作-》可选择丰裕恐怕不添坚实制外键约束-》可挑选丰裕只怕不添加强制用于复制-》点击关闭。

ca888会员登录 20

柒 、点击保存按钮(ctrl s)-》此时表会弹出警告窗口,点击是-》刷新查看外键是还是不是丰富成功。

ca888会员登录 21

ca888会员登录 22

版权声明:本文由ca888发布于程序人生,转载请注明出处:ca888会员登录SQLServer之DEFAULT约束