Summary: in this tutorial, you’ll learn about the primary key and how to add it to a table using the MySQL Primary Key constraint.
Introduction to MySQL Primary Key
Columns and rows make up a table. A table usually has a column (or a collection of columns) whose values uniquely identify each row in a table. This column or the set of columns is called the primary key.
A table can only have ONE primary key, and this primary key can be made up of one or more columns (fields).
The primary key that consists of two or more columns is also known as the composite primary key.
Primary keys cannot have NULL values and must have UNIQUE values.
Example of one value as primary key in a table
See the following employee table:
Because the values in the
emp_id column uniquely identifies the rows in the courses table, therefore the
emp_id column is the primary key of the employee table.
Values may be duplicated in one column if the primary key has two or more columns, but the combination of values from all columns in the primary key must be unique.
Example of a combination of values as primary key in a table
See the following course table.
The primary key of the course table consists of the
student_id columns. The values in the
course_id column are duplicated. However, the combination of values in the
course_id columns is unique.
We can create the primary key in two ways.
- Using CREATE TABLE statement
- Using ALTER TABLE statement
Adding primary Key with CREATE TABLE Statement
In most cases, the primary key is specified when the table is created.
You can utilize the PRIMARY KEY constraint as a column or table constraint if the primary key is just one column.
If the primary key has two or more columns, the PRIMARY KEY constraint must be used as the table constraint.
The syntax for creating a primary key with the CREATE TABLE option is as follows.
CREATE TABLE table_name ( column1 datatype PRIMARY KEY, column2 datatype [ NULL | NOT NULL ], ... );
If you are creating a primary key on more than one column, use the below syntax.
CREATE TABLE table_name ( column1 datatype [ NULL | NOT NULL ], column2 datatype [ NULL | NOT NULL ], ... CONSTRAINT constraint_name PRIMARY KEY (pk_col1, pk_col2, ... pk_col_n) );
|Table_name||The name of the table on that you want to create the primary key|
|column1, column2||Column names contained in the table|
|Constraint_name||Name of the primary key|
|pk_col1, pk_col2||Name f the columns on that primary key created|
The following SQL creates a PRIMARY KEY on the “ID” column when the “Persons” table is created:
CREATE TABLE Persons ( ID int NOT NULL PRIMARY KEY, FirstName varchar(255), Age int );
You can also create the primary key with the help of table constraints. The following statement is equivalent to the above.
CREATE TABLE Persons ( ID int NOT NULL, FirstName varchar(255), Age int, CONSTRAINT pk_id PRIMARY KEY (ID) );
The following example creates a primary key on two columns. Here, the columns
FirstName are created as the primary key.
CREATE TABLE Persons ( ID int NOT NULL, FirstName varchar(255), Age int, CONSTRAINT pk_id PRIMARY KEY (ID, FirstName) );
Adding primary key with ALTER TABLE statement
You can also add a primary key to an existing table with the help of
ALTER TABLE statement.
For adding a primary key to the existing table, you use the following syntax:
ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (column_value);
constraint_name are optional parameters. You can omit these while adding the primary key.
For example, the following statement creates the
Person table without the primary key.
CREATE TABLE Person ( ID int NOT NULL, FirstName varchar(255), LastName varchar(255), Age int );
Now, you can use the following
ALTER TABLE statement to promote the
ID column as the primary key.
ALTER TABLE Persons ADD CONSTRAINT pk_id PRIMARY KEY (ID);
You can also omit the
constraint_name while adding a primary key.
ALTER TABLE Persons ADD PRIMARY KEY (ID);
Whenever you are adding the primary key into a table that already has data into it, it must be ensured that the column does not contain any duplicate or null values.
Removing the primary key constraint
The primary key of a table is rarely removed. If you really want to do it, use the
ALTER TABLE command as follows:
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
You may also use the following simpler syntax.
ALTER TABLE table_name DROP PRIMARY KEY;
ALTER TABLE Person DROP CONSTRAINT pk_id;
ALTER TABLE Person DROP PRIMARY KEY;
In this tutorial, you have learned all about the primary key concepts, including how to add and remove the primary key.