主键(Primary Key)是关系型数据库里用于唯一标识一行数据的字段或字段组合
主键(Primary Key)是关系型数据库里用于唯一标识一行数据的字段或字段组合。它的核心约束有两条:值必须唯一,且不允许为 NULL。正因为这两条,主键成了表内所有记录的"身份编号",也是外键引用的目标——表与表之间的关联关系,全靠它来锚定。
设计上,主键通常有三种来源:一是业务字段自然唯一,比如身份证号、订单号;二是代理键,由数据库自动生成,如 MySQL InnoDB 的自增 ID、PostgreSQL 的 serial;三是分布式场景下的生成策略,如雪花算法(Snowflake),用时间戳、机器码和序列号拼出全局唯一且趋势递增的 ID。
选型时有几个经验:主键越短越好,因为二级索引都要冗余主键值;尽量递增,避免随机写入带来的页分裂和碎片化;不要用可能变更的业务字段做主键,一旦修改,所有外键都得联动更新。
相关推荐
MySQL主键(PRIMARY KEY)
MySQL主键(PRIMARY KEY) 简介 MySQL主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可以强制表的实体完整性。 1、在创建表时设置主键约束 在字段后面直接添加PRIMARY KEY 语法 PRIMARY KEY [默认值] 示例 -> id INT(11) PRIMARY KEY, 2、在创建表时设置复合主键 在字段全部写好之后添加复合主键的字段名 语法 PRIMARY KEY [字段1,字段2,…,字段n] 示例 -> PRIMARY KEY(id,deptId) 3、创建之后追加主键 语法 ALTER T
JDBC获得数据库生成的主键(JDBC、Primary Key)
JDBC获得数据库生成的主键 佟强 http://blog.csdn.net/microtong 在实际开发中,数据库中表的主键经常会由数据库负责生成,INSERT语句插入数据时插入除了主键以外的字段。很多情况下,当INSERT语句提交给数据库引擎执行完成后,程序需要获得生成的主键以便根据主键查询插入的记录。JDBC通过在调用语句对象的executeUpda
在MySQL中,您可以使用主键(PRIMARY KEY)和唯一索引(UNIQUE INDEX)来防止表中出现重复数据
INSERT IGNORE INTO与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。如果你想设置表中字段first_name,last_name数据不能重复,你可以设置双主键模式来设置数据的唯一性, 如果你设置了双主键,那么那个键的默认值不能为NULL,可设置为NOT NULL。唯一索引:在表中创建一个唯一索引,类似于唯一约束,可以确保某个字段或字段组合的值在表中是唯一的。
PRIMARY KEY联合主键
阅读指南基本概念创建表时定义主键约束修改表时定义主键约束删除主键约束 基本概念 主键(PRIMARY KEY)的完整称呼是“主键约束”; 作用:为了便于 DBMS 更快的查找到表中的记录; 分类:①单字段主键;②多字段联合主键; 注意: ①每个表只能定义一个主键 ②唯一性原则 即主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在有相同主键值的两行数据 ③一个字段名只能在联合主键字段表中出现一次 ④联合主键的最小化原则 即联合主键不能包含不必要的多余字段。当把联合主键的某一字段删除后,如果剩下的字段构成的主键仍然满足唯一性原则,那么这个联合主键是不正确的。 创建表时定义主键约束
MySQL中Multiple primary key defined报错的解决办法
主要介绍了MySQL中Multiple primary key defined报错的解决办法以及相关实例内容,有兴趣的朋友们学习下。


