📖 Scenario: You are managing a small online store database. You want to ensure that each product has a unique product code so that no two products can share the same code.
🎯 Goal: Build a MySQL table for products and add a unique index on the product code to prevent duplicate entries.
📋 What You'll Learn
Create a table named products with columns id, name, and product_code
Add a unique index on the product_code column
Insert sample data with unique product codes
Attempt to insert a duplicate product code to see the unique index in action
💡 Why This Matters
🌍 Real World
Unique indexes are used in databases to prevent duplicate entries for important fields like product codes, email addresses, or user IDs.
💼 Career
Database administrators and backend developers use unique indexes to maintain data integrity and avoid errors caused by duplicate data.
Progress0 / 4 steps
1
Create the products table
Write a SQL statement to create a table called products with three columns: id as an integer primary key, name as a VARCHAR(100), and product_code as a VARCHAR(20).
MySQL
Hint
Use CREATE TABLE with the specified columns and types.
2
Add a unique index on product_code
Write a SQL statement to add a unique index named unique_product_code on the product_code column of the products table.
MySQL
Hint
Use CREATE UNIQUE INDEX followed by the index name and the table and column.
3
Insert sample products with unique codes
Write SQL statements to insert these products into the products table: (1, 'Laptop', 'LP1001') and (2, 'Smartphone', 'SP2002').
MySQL
Hint
Use INSERT INTO with the specified values for each product.
4
Try inserting a duplicate product_code
Write a SQL statement to insert a new product with id 3, name 'Tablet', and product_code 'LP1001' which duplicates an existing product_code to test the unique index.
MySQL
Hint
Try inserting a product with a product_code that already exists to see the unique index prevent duplicates.
Practice
(1/5)
1. What is the main purpose of a UNIQUE index in MySQL?
easy
A. To prevent duplicate values in one or more columns
B. To speed up data insertion
C. To allow duplicate values in a column
D. To delete duplicate rows automatically
Solution
Step 1: Understand the role of UNIQUE index
A UNIQUE index ensures that no two rows have the same value in the indexed column(s).
Step 2: Compare options with this definition
Only To prevent duplicate values in one or more columns correctly states that UNIQUE prevents duplicates. Others are incorrect or unrelated.
Final Answer:
To prevent duplicate values in one or more columns -> Option A
Quick Check:
UNIQUE index = prevent duplicates [OK]
Hint: UNIQUE means no duplicates allowed in indexed columns [OK]
Common Mistakes:
Thinking UNIQUE speeds up inserts
Believing UNIQUE allows duplicates
Confusing UNIQUE with automatic deletion
2. Which of the following is the correct syntax to create a UNIQUE index on the column email in a table named users?
easy
A. CREATE UNIQUE KEY idx_email FROM users(email);
B. CREATE INDEX UNIQUE idx_email ON users(email);
C. CREATE UNIQUE INDEX idx_email ON users(email);
D. CREATE UNIQUE ON users INDEX idx_email(email);
Solution
Step 1: Recall correct syntax for UNIQUE index creation
The correct syntax is: CREATE UNIQUE INDEX index_name ON table_name(column_name);
Step 2: Match options with correct syntax
CREATE UNIQUE INDEX idx_email ON users(email); matches exactly. Others have wrong keyword order or syntax errors.
Final Answer:
CREATE UNIQUE INDEX idx_email ON users(email); -> Option C
Quick Check:
CREATE UNIQUE INDEX ... ON ... (column) [OK]
Hint: Remember: CREATE UNIQUE INDEX name ON table(column) [OK]
Common Mistakes:
Swapping UNIQUE and INDEX keywords
Using FROM instead of ON
Incorrect keyword order
3. Given the table employees with a UNIQUE index on employee_id, what happens if you run this query?
INSERT INTO employees (employee_id, name) VALUES (101, 'Alice'); INSERT INTO employees (employee_id, name) VALUES (101, 'Bob');
medium
A. The second insert fails with a duplicate key error
B. Both rows are inserted successfully
C. The second insert overwrites the first row
D. The second insert is ignored silently
Solution
Step 1: Understand UNIQUE index effect on inserts
A UNIQUE index on employee_id prevents duplicate values in that column.
Step 2: Analyze the inserts
The first insert adds employee_id 101. The second insert tries to add the same employee_id 101, violating the UNIQUE constraint, causing an error.
Final Answer:
The second insert fails with a duplicate key error -> Option A
Quick Check:
UNIQUE index blocks duplicate inserts [OK]
Hint: Duplicate insert on UNIQUE column causes error [OK]
Common Mistakes:
Assuming duplicates are allowed
Thinking second insert overwrites first
Believing second insert is ignored silently
4. You tried to create a UNIQUE index on the column username but got an error. Which of these is the most likely cause?
medium
A. The table does not exist
B. The username column contains duplicate values
C. You forgot to specify the index name
D. UNIQUE indexes are not supported on text columns
Solution
Step 1: Understand UNIQUE index creation requirements
Creating a UNIQUE index requires all existing values in the column to be unique.
Step 2: Identify common error causes
If duplicates exist, MySQL throws an error when creating the UNIQUE index.
Final Answer:
The username column contains duplicate values -> Option B
Quick Check:
Duplicates block UNIQUE index creation [OK]
Hint: Check for duplicates before creating UNIQUE index [OK]
Common Mistakes:
Assuming index name is mandatory
Believing UNIQUE not allowed on text columns
Ignoring existing duplicates
5. You want to ensure that the combination of first_name and last_name in the contacts table is unique, but duplicates are still appearing. Which is the best way to fix this?
hard
A. Use a CHECK constraint to prevent duplicates
B. Create separate UNIQUE indexes on first_name and last_name individually
C. Add a PRIMARY KEY on first_name
D. Create a UNIQUE index on both first_name and last_name columns together
Solution
Step 1: Understand uniqueness on multiple columns
To ensure uniqueness on a combination, a composite UNIQUE index on both columns is needed.
Step 2: Analyze other options
Separate UNIQUE indexes allow duplicates across combinations. PRIMARY KEY on one column doesn't cover both. CHECK constraints can't enforce uniqueness.
Final Answer:
Create a UNIQUE index on both first_name and last_name columns together -> Option D
Quick Check:
Composite UNIQUE index = unique pairs [OK]
Hint: Use composite UNIQUE index for multi-column uniqueness [OK]
Common Mistakes:
Creating separate UNIQUE indexes instead of composite
Using PRIMARY KEY on one column only
Relying on CHECK constraints for uniqueness
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.