Skip to content

SQL Keys

Creating Primary Key, Foreign Key and Default Constraint

Primary key, Foreign Key and Default constraint are the 3 main constraints that need to be considered while creating tables or even after that. It seems very easy to apply these constraints but still we have some confusions and problems while implementing it. So I tried to write about these constraints that can be created or added at different levels and in different ways or methods.

Primary Key Constraint: Primary Keys constraints prevents duplicate values for columns and provides unique identifier to each column, as well it creates clustered index on the columns.

1) Create Table Statement to create Primary Key
a.Column Level

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
USE AdventureWorks2008
GO

CREATE TABLE Products
(
ProductID INT CONSTRAINT pk_products_pid PRIMARY KEY,
ProductName VARCHAR(25)
);

GO

b.Table Level

1
2
3
4
5
6
7
CREATE TABLE Products
(
ProductID INT,
ProductName VARCHAR(25)
CONSTRAINT pk_products_pid PRIMARY KEY(ProductID)
);
GO

2) Alter Table Statement to create Primary Key

1
2
3
ALTER TABLE Products
ADD CONSTRAINT pk_products_pid PRIMARY KEY(ProductID)
GO

3) Alter Statement to Drop Primary key

1
2
3
ALTER TABLE Products
DROP CONSTRAINT pk_products_pid;
GO

DBAImg

Foreign Key Constraint: When a FOREIGN KEY constraint is added to an existing column or columns in the table SQL Server, by default checks the existing data in the columns to ensure that all values, except NULL, exist in the column(s) of the referenced PRIMARY KEY or UNIQUE constraint.

1) Create Table Statement to create Foreign Key
a. Column Level

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
USE AdventureWorks2008
GO
CREATE TABLE ProductSales
(
SalesID INT CONSTRAINT pk_productSales_sid PRIMARY KEY,
ProductID INT CONSTRAINT fk_productSales_pid FOREIGN KEY REFERENCES Products(ProductID),
SalesPerson VARCHAR(25)
);

GO

b. Table Level

1
2
3
4
5
6
7
8
9
CREATE TABLE ProductSales
(
SalesID INT,
ProductID INT,
SalesPerson VARCHAR(25)
CONSTRAINT pk_productSales_sid PRIMARY KEY(SalesID),
CONSTRAINT fk_productSales_pid FOREIGN KEY(ProductID)REFERENCES Products(ProductID)
);
GO

1) Alter Table Statement to create Foreign Key

1
2
3
ALTER TABLE ProductSales
ADD CONSTRAINT fk_productSales_pid FOREIGN KEY(ProductID)REFERENCES Products(ProductID)
GO

2) Alter Table Statement to Drop Foreign Key

1
2
3
ALTER TABLE ProductSales
DROP CONSTRAINT fk_productSales_pid;
GO

DBAImg

Default Constraint: Default constraint when created on some column will have the default data which is given in the constraint when no records or data is inserted in that column.

1) Create Table Statement to create Default Constraint
a. Column Level

1
2
3
4
5
6
7
8
9
USE AdventureWorks2008
GO
CREATE TABLE Customer
(
CustomerID INT CONSTRAINT pk_customer_cid PRIMARY KEY,
CustomerName VARCHAR(30),
CustomerAddress VARCHAR(50) CONSTRAINT df_customer_Add DEFAULT 'UNKNOWN'
);
GO

b. Table Level : Not applicable for Default Constraint

2) Alter Table Statement to Add Default Constraint

1
2
3
ALTER TABLE Customer
ADD CONSTRAINT df_customer_Add DEFAULT 'UNKNOWN' FOR CustomerAddress
GO

3) Alter Table to Drop Default Constraint

1
2
3
ALTER TABLE Customer
DROP CONSTRAINT df_customer_Add
GO

DBAImg