☰ See All Chapters |
Oracle UNIQUE Constraint
To avoid duplicate values to be added to a table, UNIQUE constraint is used on the column. According to the ANSI standards SQL:92, SQL:1999, and SQL:2003, a UNIQUE constraint should disallow duplicate non-NULL values, but allow multiple NULL values.
Below is the different syntax or different ways of adding UNIQUE constraint:
Syntax to add UNIQUE constraint in Oracle
Approach 1: Define unique constraint individually to each column
-------------Syntax ---------------
CREATE TABLE <table-name> ( <column-name1> <data-type(size)> <constraint>, <column-name2> <data-type(size)> <constraint> );
-------------Example---------------
CREATE TABLE CUSTOMER ( CUSTOMER_ID INT NOT NULL UNIQUE, PHONE NUMERIC (10) NULL UNIQUE, EMAIL VARCHAR(30) UNIQUE );
|
Approach 2: Define unique constraint by UNIQUE statement
-------------Syntax ---------------
CREATE TABLE <table-name> ( <column-name1> <data-type(size)> <constraint>, <column-name2> <data-type(size)> <constraint>, <column-name2> <data-type(size)> <constraint>, UNIQUE(List of Column Names) );
-------------Example---------------
CREATE TABLE CUSTOMER ( CUSTOMER_ID INT NOT NULL, PHONE NUMERIC (10) NULL, EMAIL VARCHAR(30) UNIQUE, UNIQUE (CUSTOMER_ID,PHONE) );
|
Approach 3: Define table and then update the constraint by ALTER statement
-------------Syntax---------------
CREATE TABLE <table-name> ( <column-name1> <data-type(size)> < NOT NULL/ NULL>, <column-name1> <data-type(size)> < NOT NULL/ NULL>, <column-name1> <data-type(size)> < NOT NULL/ NULL> );
ALTER TABLE <table-name>ADD ( CONSTRAINT <Name for Constraint> UNIQUE (List of Column Names) ); -------------Example---------------
CREATE TABLE CUSTOMER ( CUSTOMER_ID INT NOT NULL, PHONE NUMERIC (10) NULL, EMAIL VARCHAR(30) );
ALTER TABLE CUSTOMER ADD ( CONSTRAINT CUSTOMER_UQ UNIQUE (CUSTOMER_ID,PHONE,EMAIL) );
|
Approach 4: Define table specific name to unique constraint by CONSTRAINT statement
-------------Syntax--------------- CREATE TABLE <table-name> ( <column-name1> <data-type(size)> <constraint>, <column-name2> <data-type(size)> <constraint>, <column-name2> <data-type(size)> <constraint>, CONSTRAINT <Name for Constraint> UNIQUE (List of Column Names) ); -------------Example---------------
CREATE TABLE CUSTOMER ( CUSTOMER_ID INT NOT NULL, PHONE NUMERIC (10) NULL, EMAIL VARCHAR(30) UNIQUE, CONSTRAINT CUSTOMER_UQ UNIQUE (CUSTOMER_ID,PHONE,EMAIL) ); |
Drop UNIQUE constraint in Oracle
For dropping the unique constraint the column needs to be dropped and recreated again, this leads to loss of data.
Example to drop UNIQUE constraint in Oracle
CREATE TABLE CUSTOMER ( CUSTOMER_ID INT NOT NULL UNIQUE, PHONE NUMERIC (10) NULL UNIQUE, EMAIL VARCHAR(30) UNIQUE );
ALTER TABLE CUSTOMER DROP (CUSTOMER_ID);
ALTER TABLE CUSTOMER ADD (CUSTOMER_ID INT NOT NULL); |
All Chapters