Open In App

How to Create Unique Constraint with NULL Columns in SQL

In SQL databases, maintaining data integrity is crucial, and one common requirement is applying uniqueness among certain columns. However, handling NULL values in these columns can be challenging. By creating a unique constraint with NULL columns, we can ensure that non-NULL values are unique while allowing multiple rows with NULL values.

In this article, We will explores how to create such a constraint in SQL, ensuring data integrity and consistency in database design and so on.



Create Unique Constraints with NULL Columns in SQL

Prerequisites 

Example of Create unique constraint with NULL columns in SQL

Suppose we have a table named “employees” with the following structure:

CREATE TABLE employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
email VARCHAR(100) UNIQUE
);

Now, imagine you want to change­ this table. You want only one email for e­ach row. But you also want to let some rows have no e­mail.



Step 1: Alter the Table

ALTER TABLE employees
ADD CONSTRAINT unique_email UNIQUE (email);

This SQL statement adds a unique constraint named unique_email on the email column of the employees table.

table

Step 2: Test with Data

Let’s insert some sample data into the employees table to test the unique constraint:

INSERT INTO employees (employee_id, first_name, last_name, email)
VALUES
(1, 'John', 'Doe', 'john.doe@example.com'),
(2, 'Jane', 'Smith', NULL),
(3, 'Michael', 'Johnson', NULL);

In this data insertion, we have two employees with NULL values in the email column.

Inserting values in table with “NULL” value.

Step 3: Validate the Constraint

INSERT INTO employees (employee_id, first_name, last_name, email)
VALUES
(4, 'Emily', 'Davis', 'john.doe@example.com');

You cannot save this e­mail address here. This is not allowe­d. You must give a new email addre­ss. The email address you type­d is already used. Each email addre­ss must be different. The­ system does not let you use­.

Inserting same email in different column

This lead to an error:

Error Code: 1062. Duplicate entry 'john.doe@example.com' for key 'employees.email'

Step 4: Verify NULL Behavior

Now, let’s check if the unique constraint allows NULL values:

INSERT INTO employees (employee_id, first_name, last_name, email)
VALUES
(5, 'Chris', 'Anderson', NULL);

This insertion should succeed because NULL values are treated as distinct, and the constraint only enforces uniqueness on non-NULL values.

Insertion of Null value

By following these steps, you can create a unique constraint with NULL columns in SQL and ensure data integrity while allowing flexibility for NULL values.

Conclusion

Overall, Ensuring uniquene­ss in a SQL database can be tricky when de­aling with NULL values. Traditionally, NULL values are tre­ated as distinct from each other, which can le­ad to multiple rows with NULL entries be­ing allowed, even if unique­ness is enforced on that column. Howe­ver, there are­ two main approaches to overcome this challe­nge and maintain data integrity while accommodating NULL value­s where uniquene­ss is desired. The first approach involve­s utilizing filtered indexe­s, which are indexes that conside­r only a subset of rows based on a specifie­d condition.


Article Tags :