SQL UNIQUE Constraint
The UNIQUE
constraint is used to prevent having identical values in a column. That means the UNIQUE
constraint ensures that all values in a column are different.
Both UNIQUE
constraint and PRIMARY KEY constraint ensures uniqueness for a column or a set of columns.
A PRIMARY KEY
constraint automatically has a UNIQUE
constraint.
Use a UNIQUE
constraint instead of a PRIMARY KEY
constraint when you want to ensure the uniqueness of a column or a set of columns that is not the primary key.
You can either specify a UNIQUE
constraint during the creating of a table using the CREATE TABLE statement or after the creation using the ALTER TABLE statement.
SQL UNIQUE Constraint on CREATE TABLE
The following SQL statement will create a UNIQUE
constraint on the "id" column during the "Employee" table creation.
For
MySQL, MariaDB
:CREATE TABLE employee ( id INT NOT NULL, first_name VARCHAR(40), last_name VARCHAR(40), birth_date DATE, hire_date DATE, UNIQUE(id) );
For
Oracle, SQL Server
:CREATE TABLE employee ( id INT NOT NULL UNIQUE, first_name VARCHAR(40), last_name VARCHAR(40), birth_date DATE, hire_date DATE );
You can also define a UNIQUE
constraint for multiple columns. The following SQL statement will create a UNIQUE
constraint for the combination of the "id", "first_name", and "last_name" columns of the "Person" table:
For
MySQL, MariaDB, Oracle, SQL Server
:CREATE TABLE person ( id INT NOT NULL, first_name VARCHAR(40) NOT NULL, last_name VARCHAR(40) NOT NULL, birth_date DATE, CONSTRAINT person_uq UNIQUE (id, first_name, last_name) );
SQL UNIQUE Constraint on ALTER TABLE
The following SQL statement will create a UNIQUE
constraint on the "id" column on an already existed "Employee" table.
For
MySQL, MariaDB, Oracle, SQL Server
:ALTER TABLE employee ADD UNIQUE(id);
You can also create a UNIQUE
constraint on multiple columns. The following SQL statement will create a UNIQUE
constraint for the combination of the "id", "first_name", and "last_name" columns of the "Person" table:
For
MySQL, MariaDB, Oracle, SQL Server
:ALTER TABLE person ADD CONSTRAINT person_uq UNIQUE (id, first_name, last_name);
DROP a UNIQUE Constraint
You can drop a UNIQUE
constraint using the ALTER TABLE statement.
The following SQL statement will drop the UNIQUE
constraint from the "Employee" table.
For
MySQL, MariaDB
:ALTER TABLE employee DROP INDEX employee_uq;
For
Oracle, SQL Server
:ALTER TABLE employee DROP CONSTRAINT employee_uq;