What if your database could prevent mistakes before they happen?
Why ENUM and SET types in MySQL? - Purpose & Use Cases
Imagine you have a list of favorite ice cream flavors for your friends, and you write them down on paper every time they tell you. You try to remember all the flavors they like, but it gets messy and confusing fast.
Writing down choices manually means you might spell flavors differently, forget some, or mix them up. It's slow to check who likes what, and fixing mistakes takes a lot of time.
ENUM and SET types let you store fixed lists of options directly in your database. This means you can easily pick from allowed values without mistakes, and quickly find who likes which flavors.
CREATE TABLE friends_flavors (name VARCHAR(50), flavor VARCHAR(50)); -- free text, prone to errors
CREATE TABLE friends_flavors (name VARCHAR(50), flavor ENUM('vanilla','chocolate','strawberry'));
With ENUM and SET, you get clean, consistent data that's easy to search and update, making your database smarter and your work faster.
A restaurant uses ENUM to store order status like 'pending', 'preparing', 'served', ensuring only valid statuses are saved and tracked.
ENUM and SET store fixed lists of values to avoid errors.
They make data consistent and easy to manage.
They speed up searching and organizing information.
Practice
ENUM and SET types in MySQL?Solution
Step 1: Understand
ENUMtypeENUMrestricts a column to one value from a predefined list.Step 2: Understand
SETtypeSETallows storing zero or more values from a predefined list in one column.Final Answer:
ENUMallows only one value,SETallows multiple values -> Option CQuick Check:
ENUM= single,SET= multiple [OK]
- Confusing which type allows multiple values
- Thinking ENUM stores numbers only
- Assuming SET is for single values
colors that can store multiple colors using SET type?Solution
Step 1: Recall correct syntax for SET
The correct syntax uses parentheses and single quotes: SET('value1', 'value2', ...)Step 2: Identify correct option
colors SET('red', 'green', 'blue') uses SET with parentheses and quoted values correctly.Final Answer:
colors SET('red', 'green', 'blue') -> Option AQuick Check:
SET uses parentheses and quotes [OK]
- Using square brackets instead of parentheses
- Mixing ENUM syntax with SET
- Omitting quotes around values
products with a column features SET('wifi', 'bluetooth', 'gps'), what will be the result of this query?SELECT features FROM products WHERE FIND_IN_SET('gps', features);Solution
Step 1: Understand FIND_IN_SET function
FIND_IN_SET('gps', features) checks if 'gps' is one of the comma-separated values in the SET column.Step 2: Interpret the query result
The query returns rows where 'gps' is included in the features set, not just exact matches.Final Answer:
Returns rows where 'gps' is one of the features. -> Option AQuick Check:
FIND_IN_SET finds value inside SET [OK]
- Thinking FIND_IN_SET matches exact whole column
- Assuming syntax error with FIND_IN_SET
- Confusing SET with ENUM behavior
CREATE TABLE users (status ENUM('active', 'inactive', 'pending'));Which of the following INSERT statements will cause an error?
Solution
Step 1: Check allowed ENUM values
The ENUM allows only 'active', 'inactive', or 'pending'. 'blocked' is not allowed.Step 2: Analyze each INSERT
Inserting 'blocked' will cause an error because it is not in the ENUM list. NULL is allowed if column permits it.Final Answer:
INSERT with 'blocked' causes error -> Option DQuick Check:
Only ENUM values allowed, others error [OK]
- Assuming NULL always causes error
- Thinking any string is allowed
- Confusing ENUM with SET behavior
Solution
Step 1: Identify requirement for multiple choices
Users can select any combination of preferences, so multiple values per row are needed.Step 2: Choose appropriate data type
SETtype allows storing multiple predefined values efficiently in one column.Step 3: Compare other options
ENUMallows only one value, VARCHAR wastes space and needs parsing, separate BOOLEANs increase columns.Final Answer:
Use SET('email', 'sms', 'push') for multiple preferences -> Option BQuick Check:
Multiple choices = SET type [OK]
- Using ENUM for multiple selections
- Storing comma-separated strings manually
- Adding many boolean columns unnecessarily
Ready to prove it?
Pass the test and this pattern moves unknown
