问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

主键约束和唯一性约束的区别

发布网友 发布时间:2022-04-11 15:24

我来回答

3个回答

懂视网 时间:2022-04-11 19:45

首先说明一点,主键又称主键约束,它也是一种约束,看下它和唯一约束的创建语法:

alter table Person add constraint PK_Id primary key (Id)
alter table Person add constraint UQ_Name unique (Name)

主键和唯一约束都要求字段值唯一,除此外,它们还有如下区别:

·同一张表只能有一个主键,但能有多个唯一约束;
·主键字段值不能为NULL,唯一约束字段值可以为NULL;
·主键字段可以做为其他表的外键,唯一约束字段不可以做为其他表的外键;
·SQLServer默认为主键字段创建聚集索引,为唯一约束字段创建非聚集索引;

主键,唯一,但是不能为空;唯一约束,唯一,但是可以为空

您可能感兴趣的文章:

  • Oracle数据完整性和锁机制简析
  • SQLSERVER实现更改表名,更改列名,更改约束代码
  • 如何获取SqlServer2005表结构(字段,主键,外键,递增,描述)
  • 深入Mysql,SqlServer,Oracle主键自动增长的设置详解
  • SQLSERVER聚集索引和主键(Primary Key)的误区认识
  • sqlserver主键设计的注意点
  • sqlserver数据库主键的生成方式小结(sqlserver,mysql)
  • 小议sqlserver数据库主键选取策略
  • sqlserver 因为选定的用户拥有对象,所以无法除去该用户的解决方法
  • SQLServer2005 批量查询自定义对象脚本
  • SQLServer导出sql文件/表架构和数据操作步骤
  • 详解SQL Server数据库架构和对象、定义数据完整性
  • 热心网友 时间:2022-04-11 16:53

    主键必然是唯一且不为空,但是唯一不一定是主键,而且主键只能有一个,但是唯一约束仅仅是为了保持某些列具有唯一性而已。所以可以有多列
    一张表里只能有一个主键约束,可以有多个唯一约束
    主键约束的字段不能为null,而唯一约束的字段可以为null值
    1.主键约束(PRIMARY KEY)

    1) 主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键。
    2) 是不可能(或很难)更新.
    3) 主键列上没有任何两行具有相同值(即重复值),不允许空(NULL).
    4) 主健可作外健,唯一索引不可;

    2.唯一性约束(UNIQUE)
    1) 唯一性约束用来*不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段,一个表上可以放置多个唯一性约束.
    2) 只要唯一就可以更新.
    3) 即表中任意两行在 指定列上都不允许有相同的值,允许空(NULL).
    4) 一个表上可以放置多个唯一性约束

    热心网友 时间:2022-04-11 18:11

    区别:
    每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

    [知识拓展]
    主键:PRIMARY KEY
    约束唯一标识数据库表中的每条记录。
    主键必须包含唯一的值;主键列不能包含 NULL 值。
    每个表都应该有一个主键,并且每个表只能有一个主键。

    唯一:UNIQUE
    约束唯一标识数据库表中的每条记录。

    UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
    PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束。
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? SQL 中 设置唯一约束和设置主键约束,之间有什么关系?这2者有什么区别? 在SQL中什么是主键约束?什么是惟一约束?两者有什么区别? 我装sql server2016失败了, 现在想安装2014版,需要先将2016卸载吗 怎么打开sql server 2016 管理工具 SQL server2016无法使用的问题 sql server安装问题! sql server 2016 ctp是什么版本 sql联合查询怎么写 sql2005怎样解析ntext类型+数据为xml的字段,得到其属性和节点等 我将kettle集成的项目中,发现内存一直释放不掉,求解决: 集群环境下的Oracle使用kettle执行作业时不成功! linux定时调用kettle出现乱码 kettle里面设置了Job定时执行,修改时间重启后,每天仍按原时间和修改后的时间各执行一次 如何解决sql server定时作业调用Kettle job出错 如何解决sql server定时作业调用Kettle job出错的问题 c# DataReader和用DataAdapter来填充DataSet 两者的效率的区别有多大? 用SqlDataReadeer 和 DataSet返回查询结果,两者有什么区别?? C#中的dataset,dataadaper,datareader对象都是怎么用的?急急急急!!!!!!!!!!! DataRead DataSet DataTable 有啥区别 DataReader和DataSet的区别? 1.在SQL Server 2000,说明主键约束和唯一约束的区别?2.对学生信息表来说,能否将姓名字段设置为主键,为什么 SQL中主键属性的唯一性和唯一性约束的区别是什么啊 SQL什么是唯一约束 什么是主键约束 SQL主键约束和唯一约束有什么区别呢?谢谢 简述唯一约束与主键约束的区别并举例 如何向测试人员介绍约束中的主键和唯一的区别? 简述主键约束和唯一键约束的特征。 sqlserver中创建表时,怎样同时给表和列加入描述信息 SQL某一表新增一个字段并添加文字描述,怎么写语句? 怎么利用SQL Server的设计器在下图中的位置添加一列功能描述? 如何向sqlserver2005的数据库表中插入一列 如何用sqlserver存储过程给一个表添加一列但不改变原来表的结构有一个user表,想在这个表的基础上添加一列 SQLserver中如何在表格中在添加一列,比如 姓名,学号列后在多添加班级一列。 SQLserver2008如何用sql命令插入表中的列,并且在第一列显示,且设置为主键 如何向表中的指定位置添加列!MSSQL 如何安装 SQL Server 2012 sqlserver怎么获取存储过程的返回值 SQLServer 怎样在存储过程中获取另一个存储过程的部分执行结果集 vb6.0获取sqlserver存储过程的返回值 error code 668 sql state 57016怎么处理