In SQL, constraints are rules applied to table columns to ensure the accuracy, integrity, and reliability of the data stored in a database.
They control the type of data that can go into a table and prevent invalid or unwanted data from being inserted.
Think of constraints as traffic rules for your database – they guide what’s allowed and what’s not.
Why Use Constraints?
- Ensure Data Integrity – Prevents wrong or incomplete data.
- Maintain Accuracy – Ensures only valid values are stored.
- Avoid Duplicates – Stops repeated entries where not needed.
- Control Relationships – Maintains links between tables.
Types of SQL Constraints
SQL supports several constraints. Below are the most commonly used ones:
1. NOT NULL
- Ensures that a column cannot have a
NULL
value. - Useful when you always require a value in a column.
Example:
CREATE TABLE Students (
ID INT NOT NULL,
Name VARCHAR(50) NOT NULL
);
Here, both ID
and Name
must have a value.
2. UNIQUE
- Ensures all values in a column are different.
- Allows
NULL
values unless combined withNOT NULL
.
Example:
CREATE TABLE Employees (
EmpID INT UNIQUE,
Email VARCHAR(100) UNIQUE
);
No two employees can have the same EmpID
or Email
.
3. PRIMARY KEY
- Uniquely identifies each record in a table.
- Automatically NOT NULL and UNIQUE.
- A table can have only one primary key.
Example:
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
Name VARCHAR(50)
);
Each CustomerID
must be unique and not null.
4. FOREIGN KEY
- Ensures a value in one table matches a value in another table’s primary key.
- Maintains referential integrity between tables.
Example:
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
Here, CustomerID
in Orders
must exist in Customers
.
5. CHECK
- Ensures that the values in a column meet a specific condition.
Example:
CREATE TABLE Products (
ProductID INT PRIMARY KEY,
Price DECIMAL(10,2) CHECK (Price > 0)
);
Price must be greater than zero.
6. DEFAULT
- Assigns a default value if no value is provided during insert.
Example:
CREATE TABLE Accounts (
AccountID INT PRIMARY KEY,
Balance DECIMAL(10,2) DEFAULT 0.00
);
If no balance is given, it will be 0.00
.
7. INDEX (Not a true constraint, but often related)
- Improves search performance on columns.
- Does not enforce data rules, only speeds up queries.
Adding Constraints to an Existing Table
You can also add constraints after creating a table using ALTER TABLE
:
ALTER TABLE Employees
ADD CONSTRAINT unique_email UNIQUE (Email);
Removing Constraints
If you need to remove a constraint:
ALTER TABLE Employees
DROP CONSTRAINT unique_email;
(Note: The exact syntax depends on the SQL database system – MySQL, SQL Server, PostgreSQL, etc.)
Key Points to Remember
- Constraints improve data quality by enforcing rules.
- You can combine constraints for stronger validation.
- Overusing constraints can make data entry harder – use wisely.
- Different database systems may have slightly different syntax.
In short: SQL constraints are the safety guards of a database. They prevent invalid data, maintain relationships, and ensure reliability — making them essential for robust database design.