SQL Constraints are set of rules applied to a SQL tables to validate data. The purpose of SQL Constraints are to ensure the accuracy and reliability of the data inserted/updated in table. If any Constraints is violated, then the operation will be aborted and exception will be thrown.
How to create a SQL constraint?
A SQL constraint can be created in a table in two way
- While creating a table – with CREATE TABLE statement
- after a table is created – with ALTER TABLE statement
Commonly used SQL Constraints are described below
NOT NULL Constraint
By default SQL columns accept null values. When we wants to restrict null values from a column then we can apply NOT NULL Constraint. So that it will block null value to that column. in this case an INSERT statement or UPDATE statement cannot be performed without giving a value to particular column.
Example
In the below examples it ensures that Id and Name must not be NULL.
NOT NULL on CREATE table statement
Create table Employee ( Id bigint NOT NULL, Name varchar(50) NOT NULL, Age int )
NOT NULL on ALTER table statement
alter table Employee alter column Id bigint NOT NULL alter table Employee alter column Name varchar(50) NOT NULL
UNIQUE Constraint
A UNIQUE Constraint means it ensures all the values in a column is different. Any value that matches the column data type including NULL can be inserted only once in this column. A table can have more than one UNIQUE Constraints.
Example
In the below examples it ensures that Id will not be repeated.
UNIQUE on CREATE table statement
Create table Employee ( Id bigint NOT NULL UNIQUE, Name varchar(50) NOT NULL, Age int )
UNIQUE on ALTER table statement
alter table users add UNIQUE(Id)
PRIMARY KEY Constraint
PRIMARY KEY contains rules from both NOT NULL and UNIQUE. Which means a PRIMARY KEY column cannot contain NULL value and all values must be different. PRIMARY KEY is used to identify each record with a unique value. A table can have only one PRIMARY KEY. PRIMARY KEY can be applied to a single column or multiple columns together. PRIMARY KEY applied to multiple columns together is called COMPOSITE PRIMARY KEY
Example
Primary key on CREATE TABLE statement
CREATE TABLE users ( user_id int PRIMARY KEY, username varchar(45) NOT NULL, [password] varchar(45) NOT NULL, email varchar(45) NOT NULL )
Primary key on ALTER TABLE statement
ALTER TABLE users ADD PRIMARY KEY(USER_ID)
COMPOSITE Primary key on CREATE TABLE statement
CREATE TABLE users ( user_id int NOT NULL, username varchar(45) NOT NULL, [password] varchar(45) NOT NULL, email varchar(45) NOT NULL, PRIMARY KEY (user_id ASC, email) )
COMPOSITE Primary key on ALTER TABLE statement
ALTER TABLE users ADD CONSTRAINT PK_users PRIMARY KEY (user_id ASC, email)
FOREIGN KEY Constraint
FOREIGN KEY Constraint is used to link two tables. A FOREIGN KEY can be only created with the reference of PRIMARY KEY from another table. FOREIGN KEY helps to execute JOIN queries much faster. The FOREIGN KEY containing table is called as Child table and the referenced PRIMARY KEY containing table is called as Parent/referenced table.
Example
Foreign key on CREATE TABLE statement
CREATE TABLE USERADDRESS ( Id bigint not null PRIMARY KEY, UserId bigint NOT NULL, AddresLine1 varchar(200) NOT NULL, AddresLine2 varchar(200), PIN varchar(12) NOT NULL, FOREIGN KEY(UserId) references users(user_id) )
Foreign key on ALTER TABLE statement
ALTER TABLE USERADDRESS ADD CONSTRAINT FK_USERID_USERADDRESS FOREIGN KEY (UserId) REFERENCES users(user_id)
Drop a Foreign key
ALTER TABLE USERADDRESS DROP FK_USERID_USERADDRESS
CHECK Constraint
CHECK Constraint is used to check the inserted or updated value to the column satisfy any specific condition. It will help to increase the data accuracy.
Example
CHECK on CREATE TABLE Statement
CREATE TABLE users ( user_id bigint IDENTITY(1,1) NOT NULL, username [varchar](45) NOT NULL, password [varchar](45) NOT NULL, email [varchar](45) NOT NULL, Age int check (Age >= 18), PRIMARY KEY (user_id ASC) )
CHECK on ALTER TABLE statement
ALTER TABLE users ADD CONSTRAINT CK_USERAGE CHECK (Age >= 18)
Drop a CHECK Constraint
ALTER TABLE users DROP CK_USERAGE
DEFAULT Constraint
DEFAULT Constraint is used to set a default value to a column in a table. When an INSERT statement is not inserting value to DEFAULT Constraint column, then the default value will be inserted into that column.
Example
DEFAULT on CREATE TABLE statement
CREATE TABLE [dbo].[users] ( user_id bigint IDENTITY(1,1) NOT NULL, username [varchar](45) NOT NULL, password [varchar](45) NOT NULL DEFAULT 'Admin', email [varchar](45) NOT NULL, Age int, PRIMARY KEY (user_id ASC) )
DEFAULT on ALTER TABLE statement
ALTER TABLE users ADD CONSTRAINT PWD_DEF DEFAULT 'Admin' for [password]
Drop a DEFAULT Constraint
ALTER TABLE users DROP PWD_DEF