主键 primary key
# 主键 primary key
# 作用
保证数据的完整性,没有纰漏
加快查询数据的速度
# 要点
- 一个表里只能有一个主键,但一个主键可以由多个字段组成。
- 主键不仅仅局限在一张表里,它可能是其它表使用数据的依据。在其它表里它就不叫主键了。
- 每条记录的主键值是唯一的,不能重复
- 主键给谁一定要给清楚。
- 主键不能为
null
值,除非有auto_increment
属性。
# 主键的添加、删除
# 添加主键
创建表时添加
创建表的时候,为避免混淆,建议直接将
primary key
写在字段后面。虽然也可以写在更后面,但不推荐。mysql> create table if not exists test( -> id int primary key, -> name varchar(30) -> );
1
2
3
4mysql> create table if not exists test( -> id int, -> name varchar(30), -> primary key (id) -> );
1
2
3
4
5mysql> desc test; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(30) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+
1
2
3
4
5
6
7后期添加主键
创建表的时候没设置主键,后期也是可以调整的。
alter table <TableName> add primary key (<FieldName>);
1注意
在实际开发过程中,要设计一个关系型数据库,首先会把百分之八九十的结构都设计好,后期改变结构的情况是少之又少的。结构这东西牵一发而动全身,很麻烦的。
# 复合主键
alter table <TableName> add primary key (<FieldName1>,<FieldName2>[,<FieldName3>...])
1
# 删除主键
alter table <TableName> drop primary key;
1
# 选择主键
组合键基本上作用不大,只要有像身份证号、学号这种唯一的数据,谁TM还用组合键?
最好不要选择字符串类型作为主键,不然很不好处理,通常都是选择数字类型字段作为主键。
组和键(复合主键)也不是一无是处,如,一个网站、论坛的用户的昵称不能重名就可以使用组合键,但这样的话扩展性就没有那么好啦。
编辑 (opens new window)
上次更新: 2022/09/26, 16:55:15