What if your database could stop you from making costly data mistakes before they happen?
Why NOT NULL and DEFAULT constraints in MySQL? - Purpose & Use Cases
Imagine you are keeping a paper list of your friends' contact details. Sometimes you forget to write down their phone number or leave the space blank. Later, when you want to call them, you realize some numbers are missing or unclear.
Manually checking every entry to make sure no phone number is missing is slow and tiring. You might accidentally miss some blanks or write wrong numbers. This causes confusion and wastes time when you need the info quickly.
Using NOT NULL and DEFAULT constraints in a database is like having a rule that says "You must always write a phone number" and "If you forget, write this default number instead." This keeps your data complete and consistent automatically.
INSERT INTO friends (name, phone) VALUES ('Alice', NULL);CREATE TABLE friends (name VARCHAR(50), phone VARCHAR(20) NOT NULL DEFAULT '000-000-0000');
This lets you trust your data is always complete and ready to use without extra checking or fixing.
A company database where every employee must have an email address recorded. Using NOT NULL ensures no employee record is missing this important contact info, and DEFAULT can fill in a placeholder if needed.
NOT NULL ensures important data is never left empty.
DEFAULT provides a fallback value when no data is given.
Together, they keep your database clean and reliable.
Practice
NOT NULL constraint do in a MySQL table column?Solution
Step 1: Understand NOT NULL constraint
The NOT NULL constraint means a column must always have a value; it cannot be left empty or null.Step 2: Compare with other options
Only It ensures the column cannot have empty or missing values. correctly describes this behavior. It automatically fills the column with a default value. describes DEFAULT, C is unrelated, and D is incorrect.Final Answer:
It ensures the column cannot have empty or missing values. -> Option DQuick Check:
NOT NULL means no empty values allowed [OK]
- Confusing NOT NULL with DEFAULT
- Thinking NOT NULL deletes rows
- Assuming NOT NULL allows empty strings
age of type INT in MySQL?Solution
Step 1: Review correct ALTER TABLE syntax
To modify a column with NOT NULL and DEFAULT, the syntax is: MODIFY column_name data_type NOT NULL DEFAULT value.Step 2: Check each option
ALTER TABLE users MODIFY age INT NOT NULL DEFAULT 18; matches this syntax exactly. Options B and C have wrong order or keywords. ALTER TABLE users MODIFY age INT DEFAULT 18 NULL; allows NULL, which is incorrect.Final Answer:
ALTER TABLE users MODIFY age INT NOT NULL DEFAULT 18; -> Option BQuick Check:
Correct syntax uses MODIFY with NOT NULL then DEFAULT [OK]
- Placing DEFAULT before NOT NULL
- Using ADD instead of MODIFY for existing columns
- Allowing NULL when NOT NULL is required
employees with column status VARCHAR(10) NOT NULL DEFAULT 'active', what will be the value of status after this insert?INSERT INTO employees (name) VALUES ('John');Solution
Step 1: Understand DEFAULT and NOT NULL behavior
The column status cannot be NULL and has a default value 'active'. If no value is given, MySQL uses the default.Step 2: Analyze the INSERT statement
The insert only provides name, so status uses its default 'active'. No error occurs.Final Answer:
'active' -> Option CQuick Check:
Missing value uses DEFAULT when NOT NULL [OK]
- Expecting NULL instead of default
- Thinking insert will fail without explicit value
- Assuming empty string is default
CREATE TABLE products (id INT NOT NULL, price DECIMAL(5,2) DEFAULT 0.00);
What is the problem with this table definition?
Solution
Step 1: Check NOT NULL columns without DEFAULT
The id column is NOT NULL but has no default value. If an insert omits id, it will cause an error.Step 2: Analyze other options
Thepricecolumn cannot have a default value. is wrong because price can have a default. Theidcolumn allows NULL values. is wrong because id is NOT NULL. There is no PRIMARY KEY defined, so the table is invalid. is not mandatory for table creation.Final Answer:
The id column is NOT NULL but has no DEFAULT, causing insert errors. -> Option AQuick Check:
NOT NULL without DEFAULT requires explicit value on insert [OK]
- Assuming NOT NULL columns get default NULL
- Thinking PRIMARY KEY is required for table creation
- Believing DEFAULT is mandatory for NOT NULL
orders where the status column must never be empty and should default to 'pending'. Which of these statements correctly creates this table?Solution
Step 1: Identify constraints needed
Status must never be empty (NOT NULL) and default to 'pending' if no value is given.Step 2: Check each CREATE TABLE option
CREATE TABLE orders (id INT NOT NULL, status VARCHAR(20) NOT NULL DEFAULT 'pending'); correctly uses NOT NULL and DEFAULT together. CREATE TABLE orders (id INT NOT NULL, status VARCHAR(20) DEFAULT 'pending'); misses NOT NULL, allowing NULLs. CREATE TABLE orders (id INT NOT NULL, status VARCHAR(20) NOT NULL); misses DEFAULT, so no automatic value. CREATE TABLE orders (id INT NOT NULL, status VARCHAR(20) DEFAULT NOT NULL 'pending'); has wrong syntax.Final Answer:
CREATE TABLE orders (id INT NOT NULL, status VARCHAR(20) NOT NULL DEFAULT 'pending'); -> Option AQuick Check:
NOT NULL with DEFAULT sets required and default value [OK]
- Omitting NOT NULL allows NULL values
- Placing DEFAULT before NOT NULL
- Using invalid syntax with DEFAULT NOT NULL
Ready to prove it?
Pass the test and this pattern moves unknown
