ENUM
ENUM('pass','fail') allows only those strings. Compact. Changing the list later is ALTER TABLE pain. A lookup table (grades) is more flexible. Don’t ENUM a list that product will grow weekly.
Empty string / invalid values can become '' or error depending on sql_mode. Strict mode is your friend.
Trap — ENUM as a substitute for a real table of 50 statuses.
On the example next to this theory: ENUM: create two demo rows, then SELECT qty >= 2 ordered. Say which labels come back.
Exam tip
status ENUM('pass','fail') — or a status table if it grows.