Bird
Raised Fist0
SQLquery~5 mins

INSERT with DEFAULT values in SQL

Choose your learning style10 modes available
Introduction
Sometimes you want to add a new row to a table and use the default values set for some or all columns. This saves time and keeps data consistent.
When you want to add a new record but rely on default settings for some columns.
When a column has a default value like current date or a fixed number and you don't want to type it every time.
When you want to insert a row without specifying any values, using all defaults.
When you want to quickly add a placeholder row with default values.
Syntax
SQL
INSERT INTO table_name DEFAULT VALUES;
This syntax inserts one row using all default values defined in the table.
It works only if all columns have default values or allow NULL.
Examples
Adds a new employee row using all default values set in the employees table.
SQL
INSERT INTO employees DEFAULT VALUES;
Inserts a new order row, explicitly using default values for order_date and status columns.
SQL
INSERT INTO orders (order_date, status) VALUES (DEFAULT, DEFAULT);
Sample Program
This creates a products table with default values for name and price. Then it inserts one row using all defaults. Finally, it shows the inserted row.
SQL
CREATE TABLE products (
  id SERIAL PRIMARY KEY,
  name VARCHAR(50) DEFAULT 'Unknown',
  price NUMERIC DEFAULT 0.0
);

INSERT INTO products DEFAULT VALUES;

SELECT * FROM products;
OutputSuccess
Important Notes
If a column does not have a default and does not allow NULL, using DEFAULT VALUES will cause an error.
DEFAULT VALUES inserts exactly one row.
You can also use DEFAULT keyword for specific columns in an INSERT statement.
Summary
Use INSERT ... DEFAULT VALUES to add a row with all default column values.
This is useful when defaults are set for columns and you want to save typing.
Make sure all columns have defaults or allow NULL to avoid errors.

Practice

(1/5)
1. What does the SQL statement INSERT INTO table_name DEFAULT VALUES; do?
easy
A. Inserts a new row using all default values for columns
B. Deletes all rows from the table
C. Updates existing rows with default values
D. Selects all rows with default values

Solution

  1. Step 1: Understand the INSERT statement

    The statement inserts a new row into the table.
  2. Step 2: Recognize DEFAULT VALUES usage

    Using DEFAULT VALUES means the new row uses default values defined for each column.
  3. Final Answer:

    Inserts a new row using all default values for columns -> Option A
  4. Quick Check:

    INSERT ... DEFAULT VALUES inserts default row [OK]
Hint: DEFAULT VALUES inserts a row with all default column values [OK]
Common Mistakes:
  • Thinking it deletes or updates rows
  • Confusing DEFAULT VALUES with SELECT
  • Assuming it inserts NULLs instead of defaults
2. Which of the following is the correct syntax to insert a row with default values in SQL?
easy
A. INSERT INTO table_name VALUES (DEFAULT);
B. INSERT INTO table_name VALUES DEFAULT;
C. INSERT DEFAULT INTO table_name VALUES;
D. INSERT INTO table_name DEFAULT VALUES;

Solution

  1. Step 1: Recall correct syntax for default insertion

    The correct syntax is INSERT INTO table_name DEFAULT VALUES; to insert a row with all default values.
  2. Step 2: Check each option

    INSERT INTO table_name DEFAULT VALUES; matches the correct syntax exactly; others are invalid or incorrect.
  3. Final Answer:

    INSERT INTO table_name DEFAULT VALUES; -> Option D
  4. Quick Check:

    Correct syntax = INSERT INTO ... DEFAULT VALUES [OK]
Hint: Remember: DEFAULT VALUES comes after table name in INSERT [OK]
Common Mistakes:
  • Placing DEFAULT inside VALUES parentheses
  • Swapping DEFAULT and VALUES keywords
  • Using incorrect keyword order
3. Given the table users(id INT DEFAULT 0, name VARCHAR(20) DEFAULT 'guest'), what will be the result of INSERT INTO users DEFAULT VALUES; SELECT * FROM users; after running on an empty table?
medium
A. Empty result set
B. [{"id": 0, "name": "guest"}]
C. Syntax error
D. [{"id": NULL, "name": NULL}]

Solution

  1. Step 1: Understand table defaults

    The table has default values: id = 0, name = 'guest'.
  2. Step 2: Effect of INSERT DEFAULT VALUES

    Inserting default values adds a row with id=0 and name='guest'.
  3. Step 3: SELECT result

    After insertion, selecting all rows returns one row with those default values.
  4. Final Answer:

    [{"id": 0, "name": "guest"}] -> Option B
  5. Quick Check:

    Defaults inserted row = id 0, name guest [OK]
Hint: Defaults fill columns if no values given [OK]
Common Mistakes:
  • Expecting NULL instead of default values
  • Assuming syntax error due to DEFAULT VALUES
  • Thinking table remains empty
4. Consider the table products(id INT NOT NULL, name VARCHAR(20) DEFAULT 'unknown'). What error occurs when running INSERT INTO products DEFAULT VALUES;?
medium
A. Error: Column 'id' has no default and no value provided
B. No error, inserts row with NULL id and 'unknown' name
C. Syntax error due to DEFAULT VALUES usage
D. Inserts row with id=0 and name='unknown'

Solution

  1. Step 1: Check columns for defaults

    The 'id' column has no default and is NOT nullable.
  2. Step 2: Effect of INSERT DEFAULT VALUES

    Trying to insert default values fails because 'id' has no default and no value is given.
  3. Final Answer:

    Error: Column 'id' has no default and no value provided -> Option A
  4. Quick Check:

    Missing default for NOT NULL column causes error [OK]
Hint: All columns need defaults or allow NULL for DEFAULT VALUES [OK]
Common Mistakes:
  • Assuming NULL is inserted automatically
  • Thinking DEFAULT VALUES always works
  • Confusing syntax error with constraint error
5. You have a table orders(order_id INT PRIMARY KEY DEFAULT nextval('order_seq'), status VARCHAR(10) DEFAULT 'pending', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP). Which SQL statement correctly inserts a new order using all defaults except setting status to 'shipped'?
hard
A. INSERT INTO orders (order_id, status, created_at) VALUES (DEFAULT, DEFAULT, 'shipped');
B. INSERT INTO orders DEFAULT VALUES SET status = 'shipped';
C. INSERT INTO orders (status) VALUES ('shipped');
D. INSERT INTO orders (DEFAULT, 'shipped', DEFAULT);

Solution

  1. Step 1: Understand default and explicit values

    We want to use defaults for order_id and created_at, but set status explicitly.
  2. Step 2: Check each option

    INSERT INTO orders (status) VALUES ('shipped'); correctly lets the DBMS use defaults implicitly for unspecified columns order_id and created_at. INSERT INTO orders DEFAULT VALUES SET status = 'shipped'; is invalid syntax. INSERT INTO orders (order_id, status, created_at) VALUES (DEFAULT, DEFAULT, 'shipped'); incorrectly sets status to its default ('pending') and attempts to set created_at to 'shipped' causing a type mismatch error. INSERT INTO orders (DEFAULT, 'shipped', DEFAULT); is invalid syntax (missing VALUES keyword).
  3. Final Answer:

    INSERT INTO orders (status) VALUES ('shipped'); -> Option C
  4. Quick Check:

    Unspecified columns use their default values automatically [OK]
Hint: Unspecified columns in INSERT use column defaults [OK]
Common Mistakes:
  • Thinking omitting columns always causes errors
  • Using DEFAULT VALUES with SET syntax
  • Misplacing values and DEFAULT keywords in VALUES clause
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard