Constraints — Complete Guide
Constraints — Complete Guide: free step-by-step lesson with examples, common mistakes, and interview tips — part of SQL Server Tutorial on Toolliyo Academy.
On this page
SQL Server Tutorial · Lesson 10 of 100
Constraints
SQL basics → Queries → Advanced
SQL basics · 1 — SELECT · ~6 min · SQL — Foundations
What is this?
Constraints are rules SQL Server enforces: PRIMARY KEY, UNIQUE, CHECK, DEFAULT, FOREIGN KEY. Bad rows are rejected instead of silently saved.
Why should you care?
Without CHECK (Price > 0), a bug can insert free products. Constraints catch errors at the database boundary.
See it live — copy this example
Run in SQL Server Management Studio (SSMS) or Azure Data Studio.
USE DataVerse;
IF OBJECT_ID(N'dbo.Accounts', N'U') IS NOT NULL DROP TABLE dbo.Accounts;
CREATE TABLE dbo.Accounts (
AccountId INT IDENTITY(1,1) PRIMARY KEY,
AccountNo VARCHAR(20) NOT NULL CONSTRAINT UQ_Accounts_AccountNo UNIQUE,
Balance DECIMAL(18,2) NOT NULL
CONSTRAINT CK_Accounts_Balance CHECK (Balance >= 0),
Status VARCHAR(10) NOT NULL
CONSTRAINT CK_Accounts_Status CHECK (Status IN ('Open','Closed'))
);
INSERT INTO dbo.Accounts (AccountNo, Balance, Status)
VALUES ('SB-1001', 5000.00, 'Open');
-- This should fail:
-- INSERT INTO dbo.Accounts (AccountNo, Balance, Status) VALUES ('SB-1002', -10, 'Open');
What happened?
- UNIQUE blocks duplicate account numbers.
- CHECK keeps Balance non-negative and Status in a small list.
- The commented INSERT shows what the engine will reject.
Practice next
- Create dbo.Accounts and insert the good row.
- Uncomment the negative Balance INSERT and run it.
- Read the CHECK constraint error message.
- Add DEFAULT ('Open') on Status and insert without Status.
- Try two rows with the same AccountNo.
Remember
Constraints enforce data rules in the engine. PRIMARY KEY / UNIQUE / CHECK are day-one tools. Failed INSERT means the rule worked.
Ledger never goes negative
DataVerse banking module uses CHECK (Balance >= 0) on Accounts.
Outcome: A buggy transfer that overdrafts fails at INSERT/UPDATE time.
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!