选择数据表-》右键点击(或者直接点击约束金沙js娱乐场官方网站:,FOREIGN KEY 约束只能列出一个引用列

用来限制输入一列或多列的值的范围,选择数据表-》右键点击(或者直接点击约束,请输入数值并且不要用引号将值括起来,请输入对象/函数的名称并且不要用引号将名称括起来,FOREIGN KEY 约束只能列出一个引用列,则此值必须在被引用列中存在,go,table

金沙js娱乐场官方网站 18

接纳SSMS数据库管理工科具加多CHECK约束

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

金沙js娱乐场官方网站 1

2、接纳要增多约束的多寡列-》右键点击-》选用CHECK约束。

金沙js娱乐场官方网站 2

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

金沙js娱乐场官方网站 3

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

金沙js娱乐场官方网站 4

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

金沙js娱乐场官方网站 5

行使SSMS数据库处理工科具增添DEFAULT约束

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

金沙js娱乐场官方网站 6

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

金沙js娱乐场官方网站 7

3、点击保存开关(只怕ctrl+s)-》刷新表-》再一次打开表查看结果。

金沙js娱乐场官方网站 8

FOREIGN KEY约束优劣势

优点:

1、有限支撑数据的一致性,完整性,更牢靠。

2、关联查询时,能够用到FK 的计算消息。

3、有主外键的数据库设计能够追加EEscort图的可读性。

缺点:

1、删队或更新关联数据时索要做检查,功能会好低。

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

3、批量导入数据时,会存在外键校验,须求先关闭外键约束,导入实现再张开外键约束,操作比较费心。

 

alter table Acc_WayBill
add PackingWay int
go
EXEC sys.sp_addextendedproperty @name=N’MS_Description’,
@value=N’包装措施(0纸箱、1木箱、2别样)’ ,
@level0type=N’SCHEMA’,@level0name=N’dbo’,
@level1type=N’TABLE’,@level1name=N’Acc_WayBill’,
@level2type=N’COLUMN’,@level2name=N’PackingWay’
GO

8:增添外键约束
Alter table [源表名] add constraint [约束名]  foreign key(列名) references 援用表名(列名)

CHECK约束优劣势

优点:

1、有限辅助列数据标准和限制,能够约束数据完整性

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

缺点:

1、插入恐怕修改时数据不相符约束法则,不恐怕修改成功。

创办表时足够暗中认可约束

首先推断表是还是不是选在,纵然存在则先删除表再增加,假设不设有则一直助长。

语法:

–创造新表时加多暗中同意约束
–数据库证明
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

金沙js娱乐场官方网站 9

金沙js娱乐场官方网站 10

FOREIGN KEY约束增加准则

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

2、假如在 FOREIGN
KEY 约束的列中输入非 NULL
值,则此值必须在被援用列中存在;不然,将回来违反外键约束的错误信息。 若要保障验证了整合外键约束的全部值,请对负有参预列内定NOT NULL。

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

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

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

6、在表级内定的
FOREIGN KEY 约束所独具的援用列数目必须与约束列列表中的列数一样。 各类援引列的数据类型也亟须与列表中相应列的数据类型同样。

7、对于表可包括的援用别的表的 FOREIGN KEY
约束的多寡或任何表所具有的援用特定表的 FOREIGN KEY 约束的数据, 数据库引擎 都未有预订义的限制。 就算如此,可应用的 FOREIGN KEY
约束的莫过于数据照旧受硬件配备以及数据库和应用程序设计的限定。 表最多能够将 251个别的表和列作为外键引用(传出援引)。 SQL
Server 二零一四 (13.x) 将可在单身的表中援用的别样表和列(传入援引)的数据限制从
253 升高至 10,000。 (包容性等级至少必须为
130。)数量限制的加强带来了下列约束:

DELETE 和 UPDATE
DML 操作扶助胜出 253 个外键援引。 不援助ME奔驰M级GE 操作。

对本身实行外键援用的表仍只可以实行 255个外键援用。

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

8、对于一时表不强制 FOREIGN KEY 约束。

9、假设在 CL奥迪Q5用户定义类型的列上定义外键,则该类型的落到实处必须帮衬二进制排序。

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

 

3:修改表中字段类型(能够修改列的项目,是还是不是为空)
Alter table [表名] alter column [列名] [类型]

CHECK约束增加准绳

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

2、Check约束通过逻辑表明式来剖断数据的有用,用来限制输入一列或多列的值的限量,在列中更新数据时,所要输入的开始和结果必须满足Check约束的标准化,不然将不可能准确输入。

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

4、假若对一个表定义 CHECK
约束,那么此约束会在特定的列中对值进行限制。

DEFAULT约束增添准绳

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

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

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

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

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

使用T-SQL脚本增添外键约束

 

6:增添表中某列的暗中同意值
Alter table [表名] add constraint [约束名] default(默认值) for [列名]

行使T-SQL脚本增多CHECK约束

DEFAULT约束优弱点

优点:

1、使用暗许值能够减小代码量,新添多少时能够不用写新扩展默许值列,施行新扩张操作时时暗中同意填充。

2、较平价开始展览总结和分析,以及便于程序逻辑操作。

缺点:

1、使用不为NULL的暗中认可值,占用了越多的储存空间。

 

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

本示例演示当表结构已存在时增加外键约束,制造表时丰裕外键约束步骤和表结构存在时增多外键步骤同样。示例演示如下:

1、连接数据库,打开要增添外键的多寡表-》右键点击-》选拔设计。

金沙js娱乐场官方网站 11

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

金沙js娱乐场官方网站 12

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

金沙js娱乐场官方网站 13

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

金沙js娱乐场官方网站 14

5、在表和列窗口中-》输入外键名-》在左侧选取主表和涉嫌的列-》在左边手选择从表和作为外键的列-》点击分明。

金沙js娱乐场官方网站 15

6、在外键关系窗口中-》可挑选丰盛或然不增多外键描述-》可选择丰盛只怕不增添修改恐怕去除数据时级联操作-》可挑选丰硕或许不添做实制外键约束-》可选拔丰盛或然不添抓牢制用于复制-》点击关闭。

金沙js娱乐场官方网站 16

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

金沙js娱乐场官方网站 17

金沙js娱乐场官方网站 18

–单独插入字段暗中同意值
alter table Acc_WayBillBackBillDetails add DEFAULT 0 for IsReceipt

5:删除表中列的陈诉属性(如UserName)
EXEC sp_dropextendedproperty
N’MS_Description’, N’user’, N’dbo’, N’TABLE’, N’表名’, N’column’, N’UserName’