MySQL: Primary Keys

This MySQL tutorial explains how to create and drop a primary key in MySQL with syntax and examples.

What is a primary key in MySQL?

In MySQL, a primary key is a single field or combination of fields that uniquely defines a record. None of the fields that are part of the primary key can contain a NULL value. A table can have only one primary key.

Note

Create Primary Key - Using CREATE TABLE statement

You can create a primary key in MySQL with the CREATE TABLE statement.

Syntax

The syntax to create a primary key using the CREATE TABLE statement in MySQL is:

CREATE TABLE table_name

(

  column1 column_definition,

  column2 column_definition,

  ...

 

  CONSTRAINT [constraint_name]

   PRIMARY KEY [ USING BTREE | HASH ] (column1, column2, ... column_n)

);

table_name

The name of the table that you wish to create.

column1, column2

The columns that you wish to create in the table. See the MySQL CREATE TABLE statement for more detailed CREATE TABLE syntax as this is an over-simplification to demonstrate how to create a primary Key.

constraint_name

The name of the primary key.

column1, column2, ... column_n

The columns that make up the primary key.

Example

Let's look at an example of how to create a primary key using the CREATE TABLE statement in MySQL.

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)

);

In this example, we've created a primary key on the contacts table called contacts_pk. It consists of only one column - the contact_id column.

We could also create a primary key with more than one field as in the example below:

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)

);

This example creates a primary key called contacts_pk that is made up of a combination of the last_name and first_name columns. So each combination of last_name and first_name must be unique in the contacts table.

Create Primary Key - Using ALTER TABLE statement

You can create a primary key in MySQL with the ALTER TABLE statement.

Syntax

The syntax to create a primary key using the ALTER TABLE statement in MySQL is:

ALTER TABLE table_name

  ADD CONSTRAINT [ constraint_name ]

    PRIMARY KEY [ USING BTREE | HASH ] (column1, column2, ... column_n)

table_name

The name of the table to modify.

constraint_name

The name of the primary key.

column1, column2, ... column_n

The columns that make up the primary key.

Example

Let's look at an example of how to create a primary key using the ALTER TABLE statement in MySQL.

ALTER TABLE contacts

  ADD CONSTRAINT contacts_pk

    PRIMARY KEY (contact_id);

In this example, we've created a primary key on the existing contacts table called contacts_pk. It consists of the contact_id column.

We could also create a primary key with more than one field as in the example below:

ALTER TABLE contacts

  ADD CONSTRAINT contacts_pk

    PRIMARY KEY (last_name, first_name);

This example we've created a primary key called contacts_pk that is made up of a combination of the last_name and first_name columns.

Drop Primary Key

You can drop a primary key in MySQL using the ALTER TABLE statement.

Syntax

The syntax to drop a primary key in MySQL is:

ALTER TABLE table_name

  DROP PRIMARY KEY;

table_name

The name of the table to modify.

Example

Let's look at an example of how to drop a primary key using the ALTER TABLE statement in MySQL.

ALTER TABLE contacts

  DROP PRIMARY KEY;

In this example, we've dropped the primary key on the contacts table. We do not need to specify the name of the primary key as there can only be one on a table.