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 🙂