增添字段和暗许值脚本

DEFAULT约束增多准则

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

2、要是“暗中认可值”字段中的项替换绑定的私下认可值(以不带圆括号的款式彰显),则将唤起您清除对默许值的绑定,并将其替换为新的暗许值。

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

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

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

CHECK约束增添法规

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

2、Check约束通过逻辑表明式来判别数据的有用,用来界定输入一列或多列的值的限制,在列中创新数据时,所要输入的剧情必须知足Check约束的条件,不然将无法正确输入。

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

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

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五18个别的表和列作为外键引用(传出引用)。 SQL
Server 二〇一六 (13.x) 将可在独立的表中引用的别的表和列(传入引用)的数码限制从
253 进步至 10,000。 (兼容性等级至少必须为
130。)数量限制的滋长带来了下列约束:

DELETE 和 UPDATE
DML 操作辅助胜出 253 个外键引用。 不支持ME昂科拉GE 操作。

对自家举办外键引用的表仍只可以进展 253个外键援引。

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

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

9、若是在 CL索罗德用户定义类型的列上定义外键,则该品种的完结必须支持二进制排序。

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

–插入字段和私下认可值
alter table Acc_WayBill
add DeclaredValue nvarchar(50)
go
EXEC sys.sp_addextendedproperty @name=N’MS_Description’,
@value=N’声明价值’ , @level0type=N’SCHEMA’,@level0name=N’dbo’,
@level1type=N’TABLE’,@level1name=N’Acc_WayBill’,
@level2type=N’COLUMN’,@level2name=N’DeclaredValue’
GO

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

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

997755.com澳门葡京 1

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

997755.com澳门葡京 2

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

997755.com澳门葡京 3

选用SSMS数据库管理工科具增添CHECK约束

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

997755.com澳门葡京 4

2、选用要拉长约束的数据列-》右键点击-》选用CHECK约束。

997755.com澳门葡京 5

3、在CHECK约束弹出框中式点心击增添。

997755.com澳门葡京 6

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

997755.com澳门葡京 7

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

997755.com澳门葡京 8

应用SSMS数据库管理工科具加多外键约束

997755.com澳门葡京 ,本示例演示当表结构已存在时增多外键约束,创造表时丰硕外键约束步骤和表结构存在时增添外键步骤同样。示例演示如下:

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

997755.com澳门葡京 9

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

997755.com澳门葡京 10

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

997755.com澳门葡京 11

4、增多完成后-》首先修改表和列规范。

997755.com澳门葡京 12

5、在表和列窗口中-》输入外键名-》在左侧选取主表和涉及的列-》在左边选用从表和当作外键的列-》点击明确。

997755.com澳门葡京 13

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

997755.com澳门葡京 14

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

997755.com澳门葡京 15

997755.com澳门葡京 16

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

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

选拔T-SQL脚本加多CHECK约束

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

997755.com澳门葡京 17

997755.com澳门葡京 18

当表结构存在时

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

 997755.com澳门葡京 19

997755.com澳门葡京 20

当表结构已存在时

只要要抬高约束的表已存在外键约束,必要先删除此而外键约束再增添外键约束。假若海市蜃楼外键约束能够增加外键约束。

语法:

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

997755.com澳门葡京 21

 

始建表时丰硕暗中认可约束

率先判别表是或不是选在,要是存在则先删除表再增多,假设空头支票则直接抬高。

语法:

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

997755.com澳门葡京 22

997755.com澳门葡京 23

当表结构荒诞不经时

纵然表结构空中楼阁,能够一贯抬高约束,能够并且加上三个仍然多少个约束。

语法:

–假设表结构一纸空文时增多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

 997755.com澳门葡京 24

997755.com澳门葡京 25

997755.com澳门葡京 26

在新表中开创外键

 语法:

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

997755.com澳门葡京 27

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

DEFAULT约束优劣势

优点:

1、使用默许值能够减弱代码量,新添多少时方可不用写新扩展默许值列,推行新添操作时时暗许填充。

2、较有利于开始展览计算和分析,以及方便程序逻辑操作。

缺点:

1、使用不为NULL的暗中同意值,占用了更加多的蕴藏空间。

 

CHECK约束优劣势

优点:

1、保障列数据正式和范围,能够约束数据完整性

2、有Check约束的列能够提供给查询优化器消息之所以进级质量

缺点:

1、插入恐怕修改时数据不吻合约束准绳,不能够修改成功。

FOREIGN KEY约束优短处

优点:

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

2、关联合检查询时,能够用到FK 的总结信息。

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

缺点:

1、删队或更新关联数据时索要做检讨,作用会极低。

2、手工业调数据时,会存在主从表校验,会比较费心。

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

 

相关文章

发表评论

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

*
*
Website