网站首页 > 开源技术 正文
1、MySQL的主键
"主键" 的完整称呼是 "主键约束" 。MySQL 主键约束是一个列或者列的组合(其中由多列组合的主键称为复合主键),其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可以强制表的实体完整性。。
(1)一个表可以没有主键,而且最多只能有一个主键。
(2)主键值必须唯一标识表中的每一行,且不能为 NULL,即同一个表中不可能存在两行数据有相同的主键值。
2、MySQL的唯一约束
MySQL唯一约束(Unique Key)是指所有记录中字段的值不能重复出现。例如:为 id 字段加上唯一性约束后,每条记录的 id 值都是唯一的,不能出现重复的情况。如果其中一条记录的 id 值为 "0001" ,那么该表中就不能出现另一条记录的 id 值也为 "0001" 。
唯一约束可以确保一列或者几列不出现重复值。
唯一约束与主键约束相似的是它们都可以确保列的唯一性。不同的是,唯一约束在一个表中可有多个,并且设置唯一约束的列允许有空值,但是最多只能有一个空值。而主键约束在一个表中只能有一个,且不允许有空值。比如,在用户信息表中,为了避免表中用户名重名,可以把用户名设置为唯一约束。
唯一约束可以在创建表时直接设置,通常设置在除了主键以外的其它列上。
如果业务中要求两个字段联合起了是唯一的,比如 "地址" + "名称" 是唯一的,这就需要对两列甚至多列添加联合唯一约束。
3、主键约束和唯一约束的区别是:
(1) 主键约束一定是唯一约束,唯一约束并不一定就是主键约束。
(2) 一个表中可以有多个唯一约束,但最多只能有一个主键约束。
(3) 主键约束的列值不允许为空值,而唯一约束的列值最多有一个空值。
4、主键约束和唯一索引的区别是:
(1) 主键一定是唯一索引,唯一索引并不一定就是主键。
(2) 一个表中可以有多个唯一索引,但最多只能有一个主键。
(3) 主键的列值不允许为空值,而唯一索引的列值最多有一个空值。
5、唯一约束和唯一索引的区别是:
(1)唯一约束和唯一索引,都可以实现列数据的唯一,列值可以有空值。
(2)创建唯一约束的时候,会自动创建一个同名的唯一索引,该索引不能单独删除,删除约束会自动删除索引。唯一约束是通过唯一索引来实现数据的唯一。
(3)创建一个唯一索引,这个索引就是独立,可以单独删除。
(4)如果一个列上想有约束和索引,且两者可以单独的删除。可以先建唯一索引,再建同名的唯一约束。
(5)如果表的一个字段,要作为另外一个表的外键,那么这个字段必须有唯一约束(或是主键),如果只是有唯一索引,就会报错。
- 上一篇: 联合主键和复合主键的区别(什么叫联合主键)
- 下一篇: 单个表上亿行数据的主键、索引设计,及分页查询
猜你喜欢
- 2025-07-03 面试官竟然问我订单ID是怎么生成的?难道不是MySQL自增主键?
- 2025-07-03 MySQL中如何设置自动递增id主键重新计数从1开始?
- 2025-07-03 领导不让用UUID作为MySQL主键,那我用啥?
- 2025-07-03 长方形主键/指纹识别 MX4 Pro真机曝光
- 2025-07-03 如何利用Redis做数据库的主键生成机制
- 2025-07-03 揪出那个无主键的表(mysql无主键)
- 2025-07-03 主键ID的几种生成方式(主键id的几种生成方式)
- 2025-07-03 access利用DAO设置数据表的主键(access设置主键的方法)
- 2025-07-03 保障数据完整性:深入解析Oracle数据库的主键和外键约束
- 2025-07-03 如何计算InnoDB主键索引B+树的高度?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)