0
0
SQLquery~20 mins

AUTO_INCREMENT behavior in SQL - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
AUTO_INCREMENT Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
query_result
intermediate
2:00remaining
What is the output of this AUTO_INCREMENT insert sequence?
Consider a table users with an id column set as AUTO_INCREMENT starting at 1. After inserting three rows, the id values are 1, 2, and 3. If we delete the row with id = 2 and then insert a new row, what will be the id of the new row?
SQL
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50));
INSERT INTO users (name) VALUES ('Alice'), ('Bob'), ('Charlie');
DELETE FROM users WHERE id = 2;
INSERT INTO users (name) VALUES ('David');
SELECT id, name FROM users ORDER BY id;
A
1, Alice
2, Bob
3, Charlie
4, David
B
1, Alice
3, Charlie
4, David
C
1, Alice
2, David
3, Charlie
D
1, Alice
3, Charlie
2, David
Attempts:
2 left
💡 Hint
AUTO_INCREMENT does not reuse deleted IDs by default.
🧠 Conceptual
intermediate
1:30remaining
How does AUTO_INCREMENT behave after a server restart?
If a MySQL server is restarted, what happens to the AUTO_INCREMENT counter for a table that already has rows?
AThe AUTO_INCREMENT counter continues from the highest existing ID plus one.
BThe AUTO_INCREMENT counter starts from the last inserted ID, even if rows were deleted.
CThe AUTO_INCREMENT counter is lost and must be manually reset.
DThe AUTO_INCREMENT counter resets to 1 regardless of existing rows.
Attempts:
2 left
💡 Hint
Think about how the server remembers the last used ID.
📝 Syntax
advanced
2:00remaining
Which statement correctly creates a table with AUTO_INCREMENT starting at 1000?
You want to create a table orders with an order_id column that auto-increments starting from 1000. Which SQL statement is correct?
ACREATE TABLE orders (order_id INT AUTO_INCREMENT PRIMARY KEY START WITH 1000);
BCREATE TABLE orders (order_id INT PRIMARY KEY AUTO_INCREMENT=1000);
CCREATE TABLE orders (order_id INT AUTO_INCREMENT PRIMARY KEY) AUTO_INCREMENT=1000;
DCREATE TABLE orders (order_id INT AUTO_INCREMENT PRIMARY KEY) START=1000;
Attempts:
2 left
💡 Hint
The AUTO_INCREMENT starting value is set outside the column definition.
🔧 Debug
advanced
2:00remaining
Why does this insert fail with duplicate key error?
Given the table products with product_id as AUTO_INCREMENT primary key, the following insert causes a duplicate key error. Why? INSERT INTO products (product_id, name) VALUES (1, 'Pen');
SQL
CREATE TABLE products (product_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50));
INSERT INTO products (name) VALUES ('Pencil');
INSERT INTO products (product_id, name) VALUES (1, 'Pen');
ABecause the name 'Pen' is a duplicate and violates a unique constraint.
BBecause AUTO_INCREMENT columns cannot be explicitly assigned values.
CBecause the table does not allow inserting any rows after the first.
DBecause the value 1 for product_id already exists from the first insert.
Attempts:
2 left
💡 Hint
Check the existing IDs before the insert.
optimization
expert
3:00remaining
How to optimize bulk inserts with AUTO_INCREMENT to avoid gaps?
You need to insert 10,000 rows into a table with an AUTO_INCREMENT primary key. You want to minimize gaps in the IDs caused by transaction rollbacks or deletes. Which approach helps achieve this?
ADisable autocommit and insert all rows in a single transaction, then commit once.
BInsert rows one by one with autocommit enabled to ensure each ID is assigned sequentially.
CManually assign IDs instead of using AUTO_INCREMENT to control gaps.
DDelete rows after insert to fill gaps in AUTO_INCREMENT IDs.
Attempts:
2 left
💡 Hint
Think about how transactions affect AUTO_INCREMENT values.