首页 > 编程笔记

MySQL主键(PRIMARY KEY)的使用

主键,又称主码,是表中一列或多列的组合。主键约束(Primary Key ConstraINT)要求主键列的数据唯一,并且不允许为空。

主键能够唯一地标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。

主键和记录之间的关系如同身份证和人之间的关系,它们之间是一一对应的。

MySQL 主键分为两种类型:单字段主键和多字段联合主键。

MySQL 单字段主键

主键由一个字段组成,SQL 语句格式分为以下两种情况。

1) 在定义列的同时指定主键,语法规则如下:

字段名 数据类型 PRIMARY KEY [默认值]


示例1:定义数据表 tb_emp 2,其主键为 id,SQL 语句如下:
CREATE TABLE tb_emp2
(
     id INT PRIMARY KEY,
     name VARCHAR(25),
     deptId INT,
     salary FLOAT
);

2) 在定义完所有列之后指定主键:

[CONSTRAINT <约束名>] PRIMARY KEY [字段名]


示例2:定义数据表 tb_emp 3,其主键为 id,SQL 语句如下:
CREATE TABLE tb_emp3
(
     id INT,
     name VARCHAR(25),
     deptId INT,
     salary FLOAT,
     PRIMARY KEY(id)
);
上述两个例子执行后的结果是一样的,都会在 id 字段上设置主键约束。

MySQL 多字段联合主键

主键可由多个字段联合组成,语法规则如下:

PRIMARY KEY [字段1, 字段2,…,字段n]


示例3:定义数据表 tb_emp4,假设表中间没有主键 id,为了唯一确定一个员工,可以把 name、deptId 联合起来作为主键,SQL 语句如下:
CREATE TABLE tb_emp4
(
     name VARCHAR(25),
     deptId INT,
     salary FLOAT,
     PRIMARY KEY(name,deptId)
);
语句执行后,便创建了一个名称为 tb_emp4 的数据表,name 字段和 deptId 字段组合在一起成为 tb_emp4 的多字段联合主键。

推荐阅读