什么是主键?

主键是表中唯一标识该表中每个元组(行)的列。主键对表实施完整性约束。表中只允许使用一个主键。主键不接受任何重复值和空值。表中的主键值很少更改,因此在选择主键是需要小心,要选择很少发生更改的地方。一个表的主键可以被另一个表的外键引用。

什么是唯一键?

唯一键约束可以唯一地标识关系或表中的单个元组。与主键不同,一个表可以有多个唯一键。唯一键约束只能接受列的一个空值;唯一约束也由另一个表的外键引用。当有人想对非主键的列和列组实施唯一约束时,可以使用它。

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

  • 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。

  • 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。

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

  • 主键列在创建时,已经默认为空值 + 唯一索引了。

  • 主键可以被其他表引用为外键,而唯一索引不能。

  • 一个表最多只能创建一个主键,但可以创建多个唯一索引。

  • 主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。

创建示例

mysql> CREATE TABLE tb_emp4-> (-> id INT(11),-> name VARCHAR(25),-> deptId INT(11),-> salary FLOAT,-> PRIMARY KEY(id)-> );
CREATE TABLE IF NOT EXISTS contacts (id INT AUTO_INCREMENT PRIMARY KEY,first_name VARCHAR(50) NOT NULL,last_name VARCHAR(50) NOT NULL,phone VARCHAR(15) NOT NULL,email VARCHAR(100) NOT NULL,UNIQUE KEY unique_email (email)
); 

mysql主键和唯一键的区别相关推荐

  1. springboot 主键重复导致数据重复_程序员:MySQL处理插入过程中主键或唯一键重复值的解决办法

    向MySQL插入数据有时会遇到主键重复的场景,原来的做法是先在程序代码中SELECT一下,判断是否存在指定主键或唯一键的数据,如果没有则插入,有的话则执行UPDATE操作,或另外一套逻辑,这种方法是不 ...

  2. MySQL处理插入过程中主键或唯一键重复值的解决办法

    向MySQL插入数据有时会遇到主键重复的场景,原来的做法是先在程序代码中SELECT一下,判断是否存在指定主键或唯一键的数据,如果没有则插入,有的话则执行UPDATE操作,或另外一套逻辑,这种方法是不 ...

  3. mysql唯一性和主键区别_Mysql主键和唯一键的区别点总结

    什么是主键? 主键是表中唯一标识该表中每个元组(行)的列.主键对表实施完整性约束.表中只允许使用一个主键.主键不接受任何重复值和空值.表中的主键值很少更改,因此在选择主键是需要小心,要选择很少发生更改 ...

  4. sql主键和唯一键和外键

    mysql数据库中对字段的约束里存在主键约束,也存在唯一键约束,这两种约束很容易出现混淆的情况,这里讲一下两个的区别: 主键和唯一键的对比: 约束 保证唯一性 是否为空 一个表中有多少个 是否允许组合 ...

  5. powerdesigner设置主键为自增字段,设置非主键为唯一键并作为表的外键

    转自:https://www.cnblogs.com/CoffeeHome/archive/2014/06/04/3767501.html 这里powerdesigner连接的数据库是以mysql为例 ...

  6. 数据库主键、外键和唯一键的区别

    数据库主键.外键和唯一键的区别 现在我们想建立学生表,用来存储,一个系统的登陆信息.建表如下: create table student4 (stu_id int primary key identi ...

  7. DB2添加数据时主键、唯一键冲突的解决方法

    DB2添加数据时主键.唯一键冲突的解决方法 参考文章: (1)DB2添加数据时主键.唯一键冲突的解决方法 (2)https://www.cnblogs.com/equation/articles/91 ...

  8. 主键、唯一键、外键、

    类型 保证唯一性 是否允许空 一个表中可以有多少个 是否允许组合 主键(primary key) 是 否 至多一个,可以为0 允许(不推荐,因为不稳定) 唯一(unique) 是 是 可以有多个 允许 ...

  9. ORA-02437: cannot validate(主键或唯一键约束名) - primary key violated

    今天在对现有表建立唯一索引时遇到该Ora异常 ORA-02437: cannot validate(主键或唯一键约束名) - primary key violated 主键或唯一键的数据有重复值,一般 ...

最新文章

  1. Cable master (POJ No.1064)
  2. Android--相对布局
  3. .GRIDVIEW奇偶行变色
  4. codeforces 264 B. Good Sequences(dp+数学的一点思想)
  5. python 40位的数减个位数_Python数据分析入门教程(五):数据运算
  6. 中国酒精炉行业市场供需与战略研究报告
  7. Java WEB之过滤器
  8. java中的 element_Java中队列的element()方法的用法
  9. 贾俊平统计学第七版课后习题答案
  10. android translateanimation动画,Android 动画之TranslateAnimation应用详解
  11. 论文公式以及公式标号怎么通过统一格式(居中、居右)
  12. Foxmail登录网易邮箱提示LOGIN Login error user suspended
  13. Akm函数递归和非递归
  14. C 语言 —— 循环结构
  15. 【安全开发】IOS安全编码规范
  16. Linux中SELinux理解
  17. android设备 应用场景,友盟2015年Q2、Q3季度中国移动互联网趋势报告:用数据构建用户使用场景...
  18. 数据库课程设计--淘宝购物订单系统
  19. 后端质料springboot
  20. 计算机组成原理指令系统例题,计算机组成原理作业题5

热门文章

  1. gcc指定头文件搜索路径及动态链接库搜索路径
  2. 写的一款LRC格式歌词编辑软件 (ManeLrc) 欢迎下载
  3. Win10非分页缓冲池过大
  4. 天玑810和麒麟710哪个好
  5. 银河麒麟操作系统安装Mono开发环境操作步骤
  6. 使用Matplotlib让你轻松入门Python数据可视化
  7. 7个最佳WooCommerce跨境电商社交媒体插件
  8. Linux SPI 应用编程
  9. iphone保存html视频格式,iPhone6支持什么视频格式?iPhone6支持RMVB播放吗?
  10. 研究室秒变后厨,TensorFlow被馋哭!日本团队用深度学习识别炸鸡,救急便当工厂...