MySQL 主键

时间:2019-02-04 12:52:27  来源:igfitidea点击:

本教程将通过语法和示例说明如何在MySQL中创建和删除主键。

MySQL中的主键是什么?

在MySQL中,主键是唯一定义一条记录的单个字段或多个字段的组合。主键的任何字段都不能包含NULL值。一个表只能有一个主键。

说明

  • 在MySQL中,使用CREATE TABLE语句或ALTER TABLE语句创建主键。
  • 您可以在MySQL中使用ALTER TABLE语句删除,禁用或启用主键。

创建主键-使用CREATE TABLE语句

您可以使用CREATE TABLE语句在MySQL中创建主键。

语法

在MySQL中使用CREATE TABLE语句创建主键的语法为:

CREATE TABLE table_name
(
  column1 column_definition,
  column2 column_definition,
  ...

  CONSTRAINT [constraint_name] 
   PRIMARY KEY [ USING BTREE | HASH ] (column1, column2, ... column_n)
);
参数说明
table_name要创建的表的名称。
column1, column2要在表中创建的字段。
constraint_name主键的名称。
column1,column2,... column_n组成主键的列。

示例

让我们看一个如何在MySQL中使用CREATE TABLE语句创建主键的示例。

CREATE TABLE contacts
( contact_id INT(11) NOT NULL AUTO_INCREMENT,
  last_name VARCHAR(30) NOT NULL,
  first_name VARCHAR(25),
  birthday DATE,
  CONSTRAINT contacts_pk PRIMARY KEY (contact_id)
);

在此示例中,我们在联系人表上创建了一个名为contacts_pk的主键。它仅包含一列-contact_id列。


创建一个具有多个字段的主键:

CREATE TABLE contacts
( last_name VARCHAR(30) NOT NULL,
  first_name VARCHAR(25) NOT NULL,
  birthday DATE,
  CONSTRAINT contacts_pk PRIMARY KEY (last_name, first_name)
);

本例创建了一个名为contacts_pk的主键,它由last_name和first_name列组成。因此,last_name和first_name的每个组合在contacts表中必须是唯一的。

创建主键-使用ALTER TABLE语句

语法

在MySQL中使用ALTER TABLE语句创建主键的语法为:

ALTER TABLE table_name
  ADD CONSTRAINT [ constraint_name ]
    PRIMARY KEY [ USING BTREE | HASH ] (column1, column2, ... column_n)
参数说明
table_name修改的表的名称。
constraint_name主键的名称。
column1,column2,... column_n组成主键的列。

示例

示例-使用ALTER TABLE语句创建主键。

ALTER TABLE contacts
  ADD CONSTRAINT contacts_pk 
    PRIMARY KEY (contact_id);

在此示例中,我们在现有的contacts表上创建了一个名为contacts_pk的主键。它由contact_id列组成。


示例-创建一个具有多个字段的主键:

ALTER TABLE contacts
  ADD CONSTRAINT contacts_pk
    PRIMARY KEY (last_name, first_name);

在此示例中,我们创建了一个名为contacts_pk的主键,该主键由last_name和first_name列的组合组成。

删除主键

可以使用ALTER TABLE语句在MySQL中删除主键。

语法

在MySQL中删除主键的语法为:

ALTER TABLE table_name
  DROP PRIMARY KEY;
参数说明
table_name要修改的表的名称。

示例

在MySQL中使用ALTER TABLE语句删除主键的示例:

ALTER TABLE contacts
  DROP PRIMARY KEY;