SQLServer之P纳瓦拉IMA景逸SUVY KEY约束

发布时间:2019-04-30  栏目:sqlite  评论:0 Comments

FOREIGN KEY约束增加规则

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

二、假诺在 FOREIGN
KEY 约束的列中输入非 NULL
值,则此值必须在被引用列中留存;不然,将回到违反外键约束的错误消息。 若要保管验证了整合外键约束的有着值,请对持有参加列指定NOT NULL。

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

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

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

6、在表级钦定的
FOREIGN KEY 约束所持有的引用列数目必须与约束列列表中的列数同样。 每一种引用列的数据类型也不可能不与列表中相应列的数据类型一样。

七、对于表可包罗的引用其余表的 FOREIGN KEY
约束的数目或其余表所具备的引用特定表的 FOREIGN KEY 约束的数码, 数据库引擎 都尚未预约义的界定。 就算如此,可选择的 FOREIGN KEY
约束的其实数目依旧受硬件配置以及数据库和应用程序设计的限量。 表最多能够将 二5二个其余表和列作为外键引用(传出引用)。 SQL
Server 2015 (1三.x) 将可在单独的表中引用的其余表和列(传入引用)的数码限制从
二伍叁 进步至 ⑩,000。 (包容性等第至少必须为
130。)数量限制的增加带来了下列约束:

DELETE 和 UPDATE
DML 操作帮衬胜出 贰5三 个外键引用。 不帮衬ME凯雷德GE 操作。

对笔者进行外键引用的表仍只可以进行 二五1个外键引用。

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

8、对于目前表不强制 FOREIGN KEY 约束。

玖、假如在 CL奔驰G级用户定义类型的列上定义外键,则该类型的兑现必须支持贰进制排序。

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

P凯雷德IMAEscortY KEY约束增添规则

一、在表中常有一列或多列的整合,其值能唯一标志表中的每1行,那样的一列或多列成为表的主键(PrimaryKey)。

贰、2个表只好有3个主键,而且主键约束中的列不可能为空值。

三、唯有主键列才具被用作其余表的外键所创办。

四、一般景色下1个表中只好有三个主键。

选拔SSMS数据库管理工具增加外键约束

本示例演示当表结构已存在时加多外键约束,创设表时增多外键约束步骤和表结构存在时增多外键步骤一样。示例演示如下:

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

图片 1

2、在表设计窗口-》采纳要增添外键的数量行-》右键点击-》采取事关。

图片 2

3、在外键关系窗口中-》点击增加。

图片 3

4、加多完结后-》首先修改表和列标准。

图片 4

伍、在表和列窗口中-》输入外键名-》在左手选取主表和关联的列-》在右边选取从表和作为外键的列-》点击鲜明。

图片 5

6、在外键关系窗口中-》可采纳丰裕可能不增添外键描述-》可挑选丰盛也许不加多修改大概去除数据时级联操作-》可选拔充裕恐怕不添抓实制外键约束-》可挑选丰硕或许不添抓实制用于复制-》点击关闭。

图片 6

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

图片 7

图片 8

行使SSMS数据库管理工科具增加主键约束

选择T-SQL脚本增加外键约束

应用SSMS数据库管理工科具增添一列作为1个主键约束

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

图片 9

二、在新窗口中,选取一行,右键点击-》选拔设置主键-》点击保存按键(也许ctrl+s)。

图片 10

三、刷新表查看示例结果。

图片 11

 

当表结构已存在时

设若要增进约束的表已存在外键约束,须要先删除了那个之外键约束再增多外键约束。假使不设有外键约束能够加上国外国语大学键约束。

语法:

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

图片 12

选用SSMS数据库处理工科具添增加列作为四个主键约束

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

图片 13

贰、在新窗口中-》按下ctrl键,选取多行-》右键点击-》选取设置主键-》点击保存(恐怕ctrl+s)。

图片 14

三、刷新表查看示例结果。

图片 15

在新表中开创外键

 语法:

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

图片 16

采纳T-SQL脚本增加主键约束

FOREIGN KEY约束优缺点

优点:

1、保障数据的一致性,完整性,更可相信。

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

叁、有主外键的数据库设计能够扩大E帕杰罗图的可读性。

缺点:

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

贰、手工业调数据时,会设有主从表校验,会相比较困苦。

三、批量导入数据时,会设有外键校验,需求先关闭外键约束,导入完结再展开外键约束,操作相比较劳苦。

 

行使T-SQL脚本增多一列作为3个主键约束

当表中约束存在时,不得以向来抬高主键约束,因为一张表只允许存在三个主键约束,要是须要增多主键约束必要先删除已存在的主键约束再增加主键约束。当表中不存在主键约束时,可径直抬高主键约束。

语法:

if exists(select * from sysobjects where
name=约束名)
alter table 数据库名.[dbo].表名 drop
constraint 约束名;
alter table 数据库名.[dbo].表名 add
constraint 约束名 primary key(列名 [asc|desc]);

示例:

–假如封锁存在则删除约束,如若封锁不存在则不删除
if exists(select * from sysobjects where
name=’idcon2′)
alter table [testss].[dbo].[test1]
drop constraint idcon2;
–加多封锁
alter table [testss].[dbo].[test1]
add constraint idcon2 primary key(id asc);

图片 17

图片 18

利用T-SQL脚本添扩张列作为三个主键约束

当表中约束存在时,不得以一向抬高主键约束,因为一张表只允许存在一个主键约束,如若要求加上主键约束须求先删除已存在的主键约束再增加主键约束。当表中不存在主键约束时,可间接抬高主键约束。

语法:

–添增加列主键约束

if exists(select * from sysobjects where
name=约束名)
alter table 数据库名.[dbo].表名 drop
constraint 约束名;
alter table 数据库名.[dbo].表名 add
constraint 约束名 primary
key(列名 [asc|desc],列名 [asc|desc],……);

示例:

–添扩张列主键约束
if exists(select * from sysobjects where
name=’idcon2′)
alter table [testss].[dbo].[test1]
drop constraint idcon2;
–增多封锁
alter table [testss].[dbo].[test1]
add constraint idcon2 primary key(id asc,name desc);

图片 19

PRAV四IMAPRADOY KEY约束优缺点

优点:

1、简单、效率高。 

二、有限扶助数据完整性。

三、不会有空值。

4、不容许存在重复值。

缺点:

1、主键自增一般采纳int型,有多少条数的限定。

二、在数据库进行多少统一时半刻会比较劳顿。 

 

留下评论

网站地图xml地图