MySQL 8.x从入门到精通(视频教学版)
上QQ阅读APP看书,第一时间看更新

2.3.2 使用主键约束

主键,又称主码,是表中一列或多列的组合。主键约束(Primary Key ConstraINT)要求主键列的数据唯一,并且不允许为空。主键能够唯一地标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。主键和记录之间的关系如同身份证和人之间的关系,它们之间是一一对应的。主键分为两种类型:单字段主键和多字段联合主键。

1.单字段主键

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

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

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

【例2.5】定义数据表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.6】定义数据表tb_emp 3,其主键为id,SQL语句如下:

     CREATE TABLE tb_emp3
     (
     id INT,
     name VARCHAR(25),
     deptId INT,
     salary FLOAT,
     PRIMARY KEY(id)
     );

上述两个例子执行后的结果是一样的,都会在id字段上设置主键约束。

2.多字段联合主键

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

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

【例2.7】定义数据表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的多字段联合主键。