澳门金莎娱乐手机版 数据库 用来限制输入一列或多列的值的范围,4、若要输入数值默认值

用来限制输入一列或多列的值的范围,4、若要输入数值默认值



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
约束的其实数目依旧受硬件配备以致数据库和应用程序设计的限定。 表最多能够将 2五拾陆个其余表和列作为外键引用(传出援用卡塔尔国。 SQL
Server 二〇一五 (13.x) 将可在独立的表中引用的其余表和列(传入引用卡塔尔的数量限定从
253 升高至 10,000。 (宽容性等级起码必需为
130。卡塔尔国数量节制的进步带给了下列节制:

DELETE 和 UPDATE
DML 操作帮助胜出 253 个外键援用。 不援救MEEscortGE 操作。

对自个儿实行外键援引的表仍只好实行 2伍拾伍个外键援用。

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

8、对于有时表不强制 FOREIGN KEY 节制。

9、如果在 CL奇骏客商定义类型的列上定义外键,则该品种的实现必需辅助二进制排序。

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

DEFAULT节制增添法规

1、若在表中定义了暗中认可值约束,客户在插入新的数额行时,假若该行未有一些名数量,那么系统将暗中认可值赋给该列,要是我们不设置默许值,系统默感觉NULL。

2、要是“默许值”字段中的项替换绑定的暗中同意值(以不带圆括号的样式显示卡塔尔国,则将唤起您消逝对暗许值的绑定,并将其替换为新的私下认可值。

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

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

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

CHECK节制增多法规

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

2、Check约束通过逻辑表明式来判断数据的有效性,用来界定输入一列或多列的值的约束,在列中立异数据时,所要输入的剧情必需满意Check节制的尺度,不然将不恐怕精确输入。

3、即便对单个列定义 CHECK
节制,那么该列只同意特定的值。

4、若是对贰个表定义 CHECK
限制,那么此节制会在一定的列中对值实行限定。

利用SSMS数据库管理工科具增多外键限制

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

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

澳门金莎娱乐手机版 1

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

澳门金莎娱乐手机版 2

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

澳门金莎娱乐手机版 3

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

澳门金莎娱乐手机版 4

5、在表和列窗口中-》输入外键名-》在右边选拔主表和关联的列-》在侧边接纳从表和作为外键的列-》点击分明。

澳门金莎娱乐手机版 5

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

澳门金莎娱乐手机版 6

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

澳门金莎娱乐手机版 7

澳门金莎娱乐手机版 8

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

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

澳门金莎娱乐手机版 9

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

澳门金莎娱乐手机版 10

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

澳门金莎娱乐手机版 11

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

1、连接数据库,接收数据库,选拔数据表-》右键点击(只怕直接点击约束,右键点击,接受充足约束,后边步骤相近)-》选取设计。

澳门金莎娱乐手机版 12

2、选用要增加约束的数目列-》右键点击-》接收CHECK节制。

澳门金莎娱乐手机版 13

3、在CHECK限制弹出框中式茶食击增加。

澳门金莎娱乐手机版 14

4、在CHECK节制弹出框中-》输入CHECK约束表明式-》输入CHECK约束名-》输入CHECK约束描述-》其余能够选用暗许。

澳门金莎娱乐手机版 15

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

澳门金莎娱乐手机版 16

行使T-SQL脚本加多外键限制

接收T-SQL脚本增多DEFAULT约束

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

当表结构已存在时

即使要增加节制的表已存在外键节制,须要先删除了那个之外键限定再增多外键节制。假诺不设有外键节制能够加上国地质大学键节制。

语法:

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

澳门金莎娱乐手机版 17

当表结构已存在时

首先剖断表中是或不是存在暗许限定,假如存在则先删除暗中认可节制再增添,假设空头支票则直接助长。

语法:

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

澳门金莎娱乐手机版 18

澳门金莎娱乐手机版 19

当表结构存在时

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

 澳门金莎娱乐手机版 20

澳门金莎娱乐手机版 21

在新表中开创外键

 语法:

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

澳门金莎娱乐手机版 22

始建表时加上默许约束

率先判别表是或不是选在,假设存在则先删除表再增多,假若不真实则直接抬高。

语法:

–创造新表时增加默许约束
–数据库表明
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

澳门金莎娱乐手机版 23

澳门金莎娱乐手机版 24

当表结构空头支票时

豆蔻梢头旦表结构不设有,能够平昔抬高度大概束,能够况且加上三个如故多个约束。

语法:

–借使表结构官样文章时增添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

 澳门金莎娱乐手机版 25

澳门金莎娱乐手机版 26

澳门金莎娱乐手机版 27

FOREIGN KEY约束优劣势

优点:

1、保险数据的生龙活虎致性,完整性,更牢靠。

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

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

缺点:

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

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

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

 

DEFAULT约束优劣势

优点:

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

2、较有利开展总括和分析,甚至方便程序逻辑操作。

缺点:

1、使用不为NULL的私下认可值,占用了越多的积攒空间。

 

CHECK限制优短处

优点:

1、保障列数据标准和界定,能够约束数据完整性

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

缺点:

1、插入恐怕纠正时数据不合乎节制法规,相当的小概改过成功。

标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图