SQL UNIQUE Key


SQL UNIQUE Constraint

The SQL UNIQUE constraint is used to ensure that all values in a column or a set of columns are distinct. This command is essential for maintaining data integrity by preventing duplicate values in specified columns.


Syntax

-- To create a unique constraint when creating a table
CREATE TABLE table_name (
    column1 datatype UNIQUE,
    column2 datatype,
    ...
    CONSTRAINT constraint_name UNIQUE (column_name1, column_name2, ...)
);

-- To add a unique constraint to an existing table
ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column_name1, column_name2, ...);
  • CREATE TABLE: This is the SQL keyword used to create a new table.
  • ALTER TABLE: This is the SQL keyword used to modify an existing table.
  • UNIQUE: This is the SQL keyword used to define a unique constraint.
  • CONSTRAINT constraint_name: This specifies the name of the unique constraint.
  • column1, column2, ...: These specify the names of the columns in the table.
  • datatype: This specifies the type of data the column can hold, such as INTEGER, VARCHAR, DATE, etc.
  • table_name: This specifies the name of the table to create or modify.
  • column_name1, column_name2, ...: These specify the names of the columns to set as unique.

Example

Let's go through a complete example that includes creating a database, creating a table with a unique constraint, and inserting data into the table.

Step 1: Creating a Database

This step involves creating a new database named example_db.

CREATE DATABASE example_db;

In this example, we create a database named example_db.

Step 2: Creating a Table with a Unique Constraint

In this step, we create a table named employees within the previously created database, defining the email column as unique.

USE example_db;

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    hire_date DATE
);

Here, we define the employees table with columns for id, first_name, last_name, email, and hire_date. The email column is set as unique, ensuring no duplicate email addresses are allowed.

Step 3: Inserting Data into the Table

This step involves inserting some sample data into the employees table.

INSERT INTO employees (first_name, last_name, email, hire_date) VALUES ('John', 'Doe', 'john.doe@example.com', '2023-01-01');
INSERT INTO employees (first_name, last_name, email, hire_date) VALUES ('Jane', 'Smith', 'jane.smith@example.com', '2023-02-01');
INSERT INTO employees (first_name, last_name, email, hire_date) VALUES ('Alice', 'Johnson', 'alice.johnson@example.com', '2023-03-01');
INSERT INTO employees (first_name, last_name, email, hire_date) VALUES ('Bob', 'Brown', 'bob.brown@example.com', '2023-04-01');

Here, we insert four rows of data into the employees table. Each record has a unique email address due to the unique constraint on the email column.

Step 4: Adding a Unique Constraint to an Existing Table

This step involves adding a unique constraint to an existing table named departments that does not have a unique constraint defined.

ALTER TABLE departments
ADD CONSTRAINT unique_department_name UNIQUE (department_name);

This command adds a unique constraint to the department_name column of the departments table, ensuring no duplicate department names are allowed.