一、主键的概念
主键是数据库表中的一个或多个字段,用于唯一标识表中的每一行数据。主键可以由一个或多个字段组成,但必须保证这个组合的值是唯一的。主键的值不能为NULL。
主键的主要作用是确保表中的每一行数据都有唯一的标识符,可以很方便地实现表的关联查询和数据的修改等操作。
二、主键的性质
主键约束有以下特点:
- 唯一性:主键的值必须唯一。
- 非空性:主键的值不能为NULL。
- 不可更改性:一旦主键被设定,就不能再被修改。
- 稳定性:主键是表数据不变化的基础。
三、主键的使用方法
1. 创建主键
主键可以在创建表的时候指定,也可以在创建表之后通过 ALTER TABLE 语句添加。
-- 通过字段创建主键
CREATE TABLE table1 (
id INT(11) NOT NULL,
name VARCHAR(20) NOT NULL,
PRIMARY KEY (id)
);
-- 通过 ALTER TABLE 添加主键
ALTER TABLE table1 ADD PRIMARY KEY (id);
2. 查看主键
可以通过 SHOW CREATE TABLE 语句或 DESC 语句来查看表的主键信息。
-- 查看主键
SHOW CREATE TABLE table1;
DESC table1;
3. 修改主键
在 MySQL 中,一旦主键被创建后就不能再修改。如果需要修改,就需要先删除原来的主键,再重新创建。
-- 删除主键
ALTER TABLE table1 DROP PRIMARY KEY;
-- 添加新的主键
ALTER TABLE table1 ADD PRIMARY KEY (name);
4. 删除主键
可以通过 ALTER TABLE 语句删除主键。
-- 删除主键
ALTER TABLE table1 DROP PRIMARY KEY;
四、主键的注意事项
1. 主键的数据类型
主键的数据类型可以是数字类型或字符串类型等。
CREATE TABLE table1 (
id INT(11) NOT NULL,
name VARCHAR(20) NOT NULL,
PRIMARY KEY (id)
);
2. 主键的长度
在选择主键数据类型时,需要考虑主键的长度问题。选择过小的数据类型会导致数据丢失或数据无法插入。
CREATE TABLE table1 (
id INT(4) NOT NULL,
name VARCHAR(20) NOT NULL,
PRIMARY KEY (id)
);
3. 复合主键
MySQL 主键允许使用多个列来组成复合主键。
CREATE TABLE table1 (
id INT(11) NOT NULL,
name VARCHAR(20) NOT NULL,
age INT(11) NOT NULL,
PRIMARY KEY (id, name)
);
4. 自增主键
MySQL 还可以使用 AUTO_INCREMENT 关键字来表示自增主键,使得主键的值自动生成。
CREATE TABLE table1 (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
PRIMARY KEY (id)
);
5. 主键和索引
MySQL 主键和索引是密切相关的,因为主键默认会创建一个索引。
CREATE TABLE table1 (
id INT(11) NOT NULL,
name VARCHAR(20) NOT NULL,
PRIMARY KEY (id),
INDEX (name)
);
五、总结
MySQL 主键约束是表中一行数据的唯一标识符,它有唯一性、非空性、不可更改性和稳定性等性质。在使用主键时要注意数据类型、长度、复合主键、自增主键和主键和索引等问题。