主键一定是唯一性索引,唯一性索引并不一定就是主键。 

所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。

因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。

主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。数据库在设计时,主键起到了很重要的作用。

主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引

2. 一个表中可以有多个唯一性索引,但只能有一个主键。

3. 主键列不允许空值,而唯一性索引列允许空值。

4. 索引可以提高查询的速度。

其实主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是主键不实际存在,而索引实际存在在数据库中,主键一般都要建,主要是用来避免一张表中有相同的记录,索引一般可以不建,但如果需要对该表进行查询操作,则最好建,这样可以加快检索的速度。

首先primary key跟unique都是Constraints,属于logical object,而index则是physical object,会占用index page并被保存在磁盘上。

Primary key Constraints和unique Constraints都需要保证列是唯一的,不能有重复值,但是一张表只能有一个Primary key Constraints,但是可以有多个unique Constraints。

主键约束比唯一索引约束严格,当没有设定主键时,非空唯一索引自动称为主键。对于主键和唯一索引的一些区别主要如下:

1.主键不允许空值,唯一索引允许空值
2.主键只允许一个,唯一索引允许多个
3.主键产生唯一的聚集索引,唯一索引产生唯一的非聚集索引

https://blog.csdn.net/weixin_38750084/article/details/84885565

主键和唯一性索引的区别相关推荐

  1. mysql主键和唯一索引_mysql 主键和唯一索引的区别

    主键是一种约束,唯一索引是一种索引,两者在本质上是不同的. 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键. 唯一性索引列允许空值,而主键列不允许为空值. 主键列在创建时,已经默认为非空 ...

  2. mysql 主键和唯一索引的区别

    主键是一种约束,唯一索引是一种索引,两者在本质上是不同的. 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键. 唯一性索引列允许空值,而主键列不允许为空值. 主键列在创建时,已经默认为非空 ...

  3. oracle中主键和唯一索引的区别说明

    上周六去参加上海Oracle WDP俱乐部沙龙的一次交流,其中提到了关于"Oracle中主键和唯一索引的区别",基本上大家都可以说上几个,在网上也可以找到,但是总感觉不太全,根据自 ...

  4. 主键和唯一索引的区别

    原文地址:http://blog.csdn.net/baoqiangwang/article/details/4832814 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的. 区别 1. 主 ...

  5. 主键与唯一索引的区别

    1.主键一定是唯一性索引,唯一性索引并不一定就是主键: 2.一个表中可以有多个唯一性索引,但只能有一个主键: 3.主键列不允许空值,而唯一性索引列允许空值.

  6. Oracle中主键和唯一索引的区别oracle中联合主键的作用

    在创建主键的同时会生成对应的唯一索引,主键在保证数据唯一性的同时不允许为空, 而唯一索引可以有一个为空的数据项,一个表中只能有一个主键,但是一个主键可以有多个字段,一个表中可以有多个唯一索引. 联合主 ...

  7. 主键与聚集索引的区别

    主键可为聚集索引也可为非聚集索引. 两者的比较 下面是一个简单的比较表   主键 聚集索引 用途 强制表的实体完整性 对数据行的排序,方便查询用 一个表多少个 一个表最多一个主键 一个表最多一个聚集索 ...

  8. 主键 和 唯一索引 的区别

    主键是一种约束: 唯一索引是一种索引 主键创建后一定包含一个唯一索引:但唯一索引不一定是主键 主键不允许空值:唯一索引允许(唯一索引中null表示没有. 如果有,则唯一)

  9. mysql主键和唯一索引_主键和唯一索引的有什么区别

    主键和唯一索引的区别 -- 区别 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的. 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键. 唯一性索引列允许空值,而主键列不允许为空值 ...

最新文章

  1. (转)软件测试的分类软件测试生命周期
  2. 红帽RHEL6.8离线环境下升级到RHEL7.3
  3. C++函数指针与回调函数
  4. php模拟环境搭建,PHP环境搭建最新方法
  5. X264代码中一些参数的意义
  6. 聊聊身边的嵌入式,英语学习利器点读笔
  7. ftp网页服务器不允许匿名登录,我的FTP服务器不让匿名登陆,怎么办?
  8. 黄聪:解决wordpress定时发布文章失败”丢失计划任务”的插件
  9. Bailian2699 自整除数【进制】
  10. FFMpeg学习记录:X264编码器
  11. 笔记本(无线网卡)配置虚拟机上网
  12. 使用GDI/GDI+绘制到D3D9缓冲区的方法
  13. 智能计算作业——差分进化算法求解函数最值
  14. Excel如何快速将含小数的数值提取出来
  15. 牛客-js练习|错题本+知识点总结-break、try...catch...finally(01)
  16. visio2016安装包中文专业版下载及安装教程
  17. 从Scratch少儿编程收获的启示
  18. 广告系统架构:要啥自行车!
  19. 非科编程逆袭国外名校计算机专业,三本生预科逆袭世界前100名校!H同学喜获3大计算机专业本科录取...
  20. 我爬取了杭州的数据分析招聘岗位(内附原始数据)

热门文章

  1. 休学证明格式【休学申请书标准通用】
  2. java 递归函数_Java递归函数.....
  3. usb计算机连接无法连接电脑,如何用数据线连接计算机总是提示无法建立连接,并且USB调试已打开. -...
  4. 分享66个JS时间轴特效,总有一款适合您
  5. JavaScript前端开发小游戏之智能拼图
  6. C#指针- unsafe与fixed
  7. 仿百度文库/仿豆丁文库开源版MTCEO文库系统 v2.4
  8. fix协议的服务器,FIX 协议开发(3):QuickFIX/J 实战经验小结
  9. VUE实现搜索框搜索功能
  10. 64位系统下,一个32位的程序究竟可以申请到多少内存,4GB还是更多?