Bird
Raised Fist0
SQLquery~20 mins

CHECK constraint in SQL - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
CHECK Constraint Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
query_result
intermediate
2:00remaining
CHECK constraint behavior on insert

Consider this table definition:

CREATE TABLE Employees (
ID INT PRIMARY KEY,
Age INT CHECK (Age >= 18)
);

What happens if you run this insert?

INSERT INTO Employees (ID, Age) VALUES (1, 16);
AThe insert fails with a CHECK constraint violation error.
BThe insert succeeds and the row is added.
CThe insert succeeds but Age is set to NULL.
DThe insert succeeds but Age is automatically set to 18.
Attempts:
2 left
💡 Hint

CHECK constraints prevent invalid data from being inserted.

🧠 Conceptual
intermediate
1:30remaining
Purpose of CHECK constraints

What is the main purpose of a CHECK constraint in a database table?

ATo speed up queries by indexing columns.
BTo create a relationship between two tables.
CTo enforce a rule that limits the values allowed in a column.
DTo automatically generate unique IDs for rows.
Attempts:
2 left
💡 Hint

Think about data validation rules inside a table.

📝 Syntax
advanced
2:00remaining
Identify the correct CHECK constraint syntax

Which of the following SQL statements correctly adds a CHECK constraint to ensure salary is positive?

AALTER TABLE Employees ADD CONSTRAINT chk_salary CHECK salary > 0;
BALTER TABLE Employees ADD CONSTRAINT chk_salary salary > 0 CHECK;
CALTER TABLE Employees ADD CHECK salary > 0;
DALTER TABLE Employees ADD CONSTRAINT chk_salary CHECK (salary > 0);
Attempts:
2 left
💡 Hint

CHECK conditions must be enclosed in parentheses.

🔧 Debug
advanced
2:30remaining
Why does this CHECK constraint fail to enforce the rule?

Given this table creation:

CREATE TABLE Products (
ID INT PRIMARY KEY,
Price DECIMAL(10,2),
CHECK Price > 0
);

Why does the database allow inserting a product with Price = -5?

AThe CHECK constraint syntax is incorrect; it needs parentheses around the condition.
BThe database does not support CHECK constraints on DECIMAL columns.
CThe Price column must be declared NOT NULL for the CHECK to work.
DThe primary key constraint overrides the CHECK constraint.
Attempts:
2 left
💡 Hint

Look carefully at the CHECK syntax.

optimization
expert
3:00remaining
Optimizing CHECK constraints for performance

You have a large table with a CHECK constraint on a complex expression involving multiple columns. What is the best way to optimize performance when inserting many rows?

ARemove the CHECK constraint and rely on application code validation only.
BTemporarily disable the CHECK constraint during bulk inserts and re-enable it afterward.
CAdd an index on the columns used in the CHECK constraint.
DRewrite the CHECK constraint as a trigger to improve speed.
Attempts:
2 left
💡 Hint

Think about how constraints affect bulk operations.

Practice

(1/5)
1. What is the main purpose of a CHECK constraint in SQL?
easy
A. To automatically generate unique IDs
B. To create a backup of the table data
C. To speed up query performance
D. To enforce rules on column values to prevent invalid data

Solution

  1. Step 1: Understand what a CHECK constraint does

    A CHECK constraint sets a rule that data must follow when inserted or updated in a table.
  2. Step 2: Identify the purpose from the options

    Only To enforce rules on column values to prevent invalid data describes enforcing rules on data to prevent invalid entries.
  3. Final Answer:

    To enforce rules on column values to prevent invalid data -> Option D
  4. Quick Check:

    CHECK constraint = enforce data rules [OK]
Hint: CHECK constraints prevent bad data from entering tables [OK]
Common Mistakes:
  • Confusing CHECK with indexing or keys
  • Thinking CHECK creates backups
  • Assuming CHECK improves speed
2. Which of the following is the correct syntax to add a CHECK constraint on a column age to allow only values greater than 18?
easy
A. ALTER TABLE users ADD CONSTRAINT chk_age CHECK (age > 18);
B. ALTER TABLE users CHECK (age > 18);
C. ALTER TABLE users ADD CHECK age > 18;
D. ALTER TABLE users ADD CONSTRAINT chk_age CHECK age > 18;

Solution

  1. Step 1: Recall correct syntax for adding CHECK constraint

    The correct syntax uses ADD CONSTRAINT with a name, then CHECK with parentheses around the condition.
  2. Step 2: Compare options to syntax

    ALTER TABLE users ADD CONSTRAINT chk_age CHECK (age > 18); matches the syntax: ADD CONSTRAINT name CHECK (condition). Options A and C miss the constraint name or parentheses; D misses parentheses.
  3. Final Answer:

    ALTER TABLE users ADD CONSTRAINT chk_age CHECK (age > 18); -> Option A
  4. Quick Check:

    ADD CONSTRAINT name CHECK (condition) = ALTER TABLE users ADD CONSTRAINT chk_age CHECK (age > 18); [OK]
Hint: Use ADD CONSTRAINT name CHECK (condition) syntax [OK]
Common Mistakes:
  • Omitting parentheses around condition
  • Not naming the constraint
  • Writing condition outside CHECK()
3. Given the table creation:
CREATE TABLE products (
  id INT,
  price DECIMAL(5,2),
  CONSTRAINT chk_price CHECK (price >= 0)
);

What happens if you run:
INSERT INTO products (id, price) VALUES (1, -10.00);
medium
A. The row is inserted successfully
B. The price is automatically set to 0
C. The insert fails due to CHECK constraint violation
D. The insert causes a syntax error

Solution

  1. Step 1: Understand the CHECK constraint on price

    The constraint requires price to be greater than or equal to 0.
  2. Step 2: Analyze the insert statement

    The insert tries to add price = -10.00, which violates the CHECK condition.
  3. Final Answer:

    The insert fails due to CHECK constraint violation -> Option C
  4. Quick Check:

    price < 0 violates CHECK = insert fails [OK]
Hint: CHECK rejects rows violating the condition [OK]
Common Mistakes:
  • Assuming negative values are accepted
  • Thinking CHECK auto-corrects values
  • Confusing CHECK violation with syntax error
4. You try to create a table with this statement:
CREATE TABLE employees (
  id INT,
  salary INT CHECK salary > 0
);

But get a syntax error. What is the likely fix?
medium
A. Add a semicolon after salary
B. Add parentheses around the CHECK condition: CHECK (salary > 0)
C. Change salary to VARCHAR
D. Remove the CHECK constraint entirely

Solution

  1. Step 1: Identify syntax for inline CHECK constraints

    Inline CHECK constraints require the condition to be inside parentheses.
  2. Step 2: Check the given statement

    The statement misses parentheses around salary > 0, causing syntax error.
  3. Final Answer:

    Add parentheses around the CHECK condition: CHECK (salary > 0) -> Option B
  4. Quick Check:

    Inline CHECK needs parentheses [OK]
Hint: Always use parentheses around CHECK conditions [OK]
Common Mistakes:
  • Omitting parentheses in inline CHECK
  • Changing data type unnecessarily
  • Ignoring syntax error details
5. You want to ensure a discount column in orders table is between 0 and 50 inclusive. Which CHECK constraint correctly enforces this?
hard
A. CHECK (discount >= 0 AND discount <= 50)
B. CHECK (discount > 0 AND discount < 50)
C. CHECK (discount BETWEEN 1 AND 50)
D. CHECK (discount != 0 OR discount != 50)

Solution

  1. Step 1: Understand the required range including boundaries

    The discount must be at least 0 and at most 50, so boundaries are included.
  2. Step 2: Evaluate each option

    B: CHECK (discount > 0 AND discount < 50) excludes 0 and 50 (strict inequalities). A: CHECK (discount >= 0 AND discount <= 50) includes boundaries with >= and <=. C: CHECK (discount BETWEEN 1 AND 50) excludes 0 (>=1 <=50). D: CHECK (discount != 0 OR discount != 50) is logically incorrect.
  3. Final Answer:

    CHECK (discount >= 0 AND discount <= 50) -> Option A
  4. Quick Check:

    Inclusive range needs >= and <= [OK]
Hint: Use >= and <= for inclusive CHECK ranges [OK]
Common Mistakes:
  • Using > and < excludes boundary values
  • Using incorrect bounds with BETWEEN
  • Logical errors with OR instead of AND