SQLServer之PRIMARY KEY约束

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLServer之PRIMARY KEY约束相关的知识,希望对你有一定的参考价值。

原文:SQLServer之PRIMARY KEY约束

PRIMARY KEY约束添加规则

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

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

3、只有主键列才能被作为其他表的外键所创建。

4、一般情况下一个表中只能有一个主键。

使用SSMS数据库管理工具添加主键约束

使用SSMS数据库管理工具添加一列作为一个主键约束

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

技术分享图片

2、在新窗口中,选择一行,右键点击-》选择设置主键-》点击保存按钮(或者ctrl+s)。

技术分享图片

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

技术分享图片

 

使用SSMS数据库管理工具添加多列作为一个主键约束

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

技术分享图片

2、在新窗口中-》按下ctrl键,选择多行-》右键点击-》选择设置主键-》点击保存(或者ctrl+s)。

技术分享图片

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

技术分享图片

使用T-SQL脚本添加主键约束

使用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);

技术分享图片

技术分享图片

使用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);

技术分享图片

PRIMARY KEY约束优缺点

优点:

1、简单、效率高。 

2、保证数据完整性。

3、不会有空值。

4、不允许存在重复值。

缺点:

1、主键自增一般使用int型,有数据条数的限制。

2、在数据库进行数据合并时会比较麻烦。 

 













以上是关于SQLServer之PRIMARY KEY约束的主要内容,如果未能解决你的问题,请参考以下文章

数据导入时违反 PRIMARY KEY 约束错误

SQLServer之修改PRIMARY KEY

Excel 文件数据库中的 PRIMARY KEY 约束和 AUTO INCREMENT

SQL PRIMARY KEY 约束SQL FOREIGN KEY 约束SQL CHECK 约束

postgresql----数据库表约束----PRIMARY KEY

mysql中key和primary key的区别