金沙澳门唯一官网SQLServer之PRIMARY KEY约束

2019-10-26 00:35 来源:未知

PPAJEROIMA瑞虎Y KEY约束增多准绳

1、在表中常有一列或多列的三结合,其值能唯豆蔻梢头标志表中的每生机勃勃行,那样的一列或多列成为表的主键(PrimaryKey)。

2、三个表只可以有三个主键,况且主键约束中的列不能为空值。

3、独有主键列能力被用作别的表的外键所创制。

4、平时情状下二个表中只好有五个主键。

CHECK限定加多准则

1、CHECK 节制用于节制列中的值的界定。

2、Check限定通过逻辑表达式来剖断数据的灵光,用来界定输入一列或多列的值的节制,在列中立异数据时,所要输入的剧情必须知足Check约束的尺度,不然将不可能正确输入。

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

4、纵然对贰个表定义 CHECK 限制,那么此限制会在特定的列中对值实行界定。

应用SSMS数据库管理工具增多主键约束

行使SSMS数据库管理工科具增添CHECK节制

1、连接数据库,选择数据库,选用数据表-》右键点击(可能直接点击限制,右键点击,选用丰硕约束,前面步骤雷同)-》选拔设计。

金沙澳门唯一官网 1

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

金沙澳门唯一官网 2

3、在CHECK约束弹出框中式茶食击增加。

金沙澳门唯一官网 3

4、在CHECK节制弹出框中-》输入CHECK限制表明式-》输入CHECK约束名-》输入CHECK约束描述-》别的能够筛选暗中同意。

金沙澳门唯一官网 4

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

金沙澳门唯一官网 5

应用SSMS数据库管理工科具增添一列作为三个主键限定

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

金沙澳门唯一官网 6

2、在新窗口中,接纳生机勃勃行,右键点击-》接收设置主键-》点击保存开关(大概ctrl+s)。

金沙澳门唯一官网 7

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

金沙澳门唯一官网 8

 

应用T-SQL脚本加多CHECK限制

行使SSMS数据库管理工科具添增多列作为八个主键约束

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

金沙澳门唯一官网 9

2、在新窗口中-》按下ctrl键,选用多行-》右键点击-》选取安装主键-》点击保存(可能ctrl+s)。

金沙澳门唯一官网 10

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

金沙澳门唯一官网 11

当表结构存在时

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

 金沙澳门唯一官网 12

金沙澳门唯一官网 13

选拔T-SQL脚本增添主键节制

当表结构不设一时

若果表结构一纸空文,能够一贯抬高度约束,可以並且加多三个要么多个限制。

语法:

--固然表结构空头支票时增多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

 金沙澳门唯一官网 14

金沙澳门唯一官网 15

金沙澳门唯一官网 16

动用T-SQL脚本增添一列作为一个主键约束

当表中限制存在时,不能够直接助长主键限定,因为一张表只允许存在三个主键限定,借使急需丰裕主键约束必要先删除已存在的主键节制再增加主键节制。当表中官样文章主键约束时,可径直抬高主键约束。

语法:

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

CHECK限定优瑕玷

优点:

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

2、有Check限定的列能够提须求查询优化器消息之所以晋级品质

缺点:

1、插入大概改良时数据不切合节制法规,无法修改成功。

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

P兰德酷路泽IMAEnclaveY KEY限定优劣点

优点:

1、简单、效率高。 

2、保障数据完整性。

3、不会有空值。

4、不允许存在重新值。

缺点:

1、主键自增经常选择int型,有数量条数的界定。

2、在数据库实行数据统一时会相比麻烦。 

 

TAG标签:
版权声明:本文由金沙澳门唯一官网发布于数据库管理,转载请注明出处:金沙澳门唯一官网SQLServer之PRIMARY KEY约束