In this tutorial, we will see MySQL unique constraint syntax.

MySQL Unique Constraint:

Unique constraint is used to represent one or more columns in a table as uiquely.

A unique constraint is similar like primary key, but in a table, one primary key will be allowed whereas unique constraint can be applied to one or more columns.

1. Create MySQL Unique Constraint Syntax:

The unique constraint ensures that all the values in the columns are unique.

Create a user table with a unique email address.

CREATE TABLE `user` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(150) NULL DEFAULT NULL,
  `email` VARCHAR(150) NULL DEFAULT NULL,
  `city` VARCHAR(100) NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `email` (`email`)
)ENGINE=InnoDB;

Verify:

We can verify this table structure using the describe statement.

mysql> describe user;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(150) | YES  |     | NULL    |                |
| email | varchar(150) | YES  | UNI | NULL    |                |
| city  | varchar(100) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
4 rows in set (0.05 sec)

2. Create Unique Constraint Multiple Columns:

It is also possible to make multiple columns as unique. Here I am making name and email columns as unique.

CREATE TABLE `user` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(150) NULL DEFAULT NULL,
  `email` VARCHAR(150) NULL DEFAULT NULL,
  `city` VARCHAR(100) NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `name_email` (`name`, `email`)
)ENGINE=InnoDB;

Verify:

mysql> describe user;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(150) | YES  | MUL | NULL    |                |
| email | varchar(150) | YES  |     | NULL    |                |
| city  | varchar(100) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

3. Add Unique Constraint:

If you want to add a unique constraint to a column in an existing table, you should use the alter command like below.

ALTER TABLE `user`
  ADD UNIQUE INDEX `email` (`email`);

-- For multiple columns

ALTER TABLE `user`
	ADD UNIQUE INDEX `name_email` (`name`, `email`);

4. Deleting Unique Constraint:

To remove the Unique constraint from a column using alter command.

ALTER TABLE `user`
  DROP INDEX `email`;

Verify:

mysql> describe user;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(150) | YES  |     | NULL    |                |
| email | varchar(150) | YES  |     | NULL    |                |
| city  | varchar(100) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

Done!

References:

Happy Learning 🙂