Bird
Raised Fist0
SQLquery~5 mins

AUTO_INCREMENT vs SERIAL vs IDENTITY in SQL - Quick Revision & Key Differences

Choose your learning style10 modes available
Recall & Review
beginner
What does AUTO_INCREMENT do in SQL?
AUTO_INCREMENT automatically generates a unique number for a column when a new row is inserted, usually used for primary keys.
Click to reveal answer
beginner
What is SERIAL in SQL?
SERIAL is a shorthand in PostgreSQL that creates an integer column and automatically sets up a sequence to generate unique numbers for new rows.
Click to reveal answer
beginner
What is IDENTITY in SQL?
IDENTITY is a SQL standard feature that defines a column to auto-generate unique numbers, often used in SQL Server and newer versions of other databases.
Click to reveal answer
intermediate
How does AUTO_INCREMENT differ from SERIAL?
AUTO_INCREMENT is used mainly in MySQL and automatically increments a number, while SERIAL in PostgreSQL creates a sequence object behind the scenes to generate numbers.
Click to reveal answer
intermediate
Why might you choose IDENTITY over AUTO_INCREMENT or SERIAL?
IDENTITY follows the SQL standard and offers more control over number generation, making it more portable across different database systems.
Click to reveal answer
Which SQL feature automatically creates a sequence object in PostgreSQL?
AAUTO_INCREMENT
BSERIAL
CIDENTITY
DPRIMARY KEY
In which database is AUTO_INCREMENT commonly used?
AMySQL
BSQL Server
CPostgreSQL
DOracle
What does the IDENTITY property do in SQL?
ACreates a foreign key
BCreates a view
CGenerates unique numbers automatically
DDefines a text column
Which of these is a SQL standard feature for auto-numbering?
ASEQUENCE
BSERIAL
CAUTO_INCREMENT
DIDENTITY
Which feature is NOT typically used for auto-incrementing primary keys?
AVARCHAR
BSERIAL
CIDENTITY
DAUTO_INCREMENT
Explain the differences between AUTO_INCREMENT, SERIAL, and IDENTITY in SQL.
Think about which database uses which feature and how they generate numbers.
You got /4 concepts.
    Why is IDENTITY considered more portable than AUTO_INCREMENT or SERIAL?
    Consider standards and cross-database compatibility.
    You got /3 concepts.

      Practice

      (1/5)
      1. Which keyword is used in MySQL to automatically generate unique numbers for a primary key column?
      easy
      A. IDENTITY
      B. SERIAL
      C. SEQUENCE
      D. AUTO_INCREMENT

      Solution

      1. Step 1: Understand MySQL auto-numbering

        MySQL uses AUTO_INCREMENT to generate unique numbers automatically for columns like primary keys.
      2. Step 2: Compare with other keywords

        SERIAL is PostgreSQL-specific, IDENTITY is SQL standard used in SQL Server and newer PostgreSQL versions, and SEQUENCE is a separate object, not a column keyword.
      3. Final Answer:

        AUTO_INCREMENT -> Option D
      4. Quick Check:

        MySQL auto-number = AUTO_INCREMENT [OK]
      Hint: MySQL uses AUTO_INCREMENT for auto numbering [OK]
      Common Mistakes:
      • Confusing SERIAL with MySQL syntax
      • Using IDENTITY in MySQL
      • Thinking SEQUENCE is a column keyword
      2. Which of the following is the correct syntax to create an auto-incrementing primary key column in PostgreSQL using the SERIAL keyword?
      easy
      A. CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(50));
      B. CREATE TABLE users (id AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50));
      C. CREATE TABLE users (id IDENTITY PRIMARY KEY, name VARCHAR(50));
      D. CREATE TABLE users (id SEQUENCE PRIMARY KEY, name VARCHAR(50));

      Solution

      1. Step 1: Identify PostgreSQL SERIAL syntax

        In PostgreSQL, SERIAL is used as a shorthand to create an integer column that auto-increments.
      2. Step 2: Check syntax correctness

        CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(50)); uses id SERIAL PRIMARY KEY, which is valid. Options B and C use MySQL and SQL Server syntax incorrectly in PostgreSQL. CREATE TABLE users (id SEQUENCE PRIMARY KEY, name VARCHAR(50)); uses SEQUENCE incorrectly as a column type.
      3. Final Answer:

        CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(50)); -> Option A
      4. Quick Check:

        SERIAL syntax in PostgreSQL = CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(50)); [OK]
      Hint: PostgreSQL uses SERIAL for auto-increment columns [OK]
      Common Mistakes:
      • Using AUTO_INCREMENT in PostgreSQL
      • Using IDENTITY without parentheses
      • Treating SEQUENCE as a column type
      3. Given the following SQL Server table creation statement, what will be the output of inserting two rows without specifying the ID column?
      CREATE TABLE products (id INT IDENTITY(1,1) PRIMARY KEY, name VARCHAR(20));
      INSERT INTO products (name) VALUES ('Pen');
      INSERT INTO products (name) VALUES ('Pencil');
      SELECT * FROM products;
      medium
      A. [{"id": null, "name": "Pen"}, {"id": null, "name": "Pencil"}]
      B. [{"id": 0, "name": "Pen"}, {"id": 1, "name": "Pencil"}]
      C. [{"id": 1, "name": "Pen"}, {"id": 2, "name": "Pencil"}]
      D. Syntax error on INSERT statements

      Solution

      1. Step 1: Understand IDENTITY behavior in SQL Server

        The IDENTITY(1,1) means the ID column starts at 1 and increments by 1 automatically for each new row.
      2. Step 2: Predict inserted values

        Inserting two rows without specifying ID will assign IDs 1 and 2 respectively. The SELECT will show these IDs with names.
      3. Final Answer:

        [{"id": 1, "name": "Pen"}, {"id": 2, "name": "Pencil"}] -> Option C
      4. Quick Check:

        IDENTITY auto increments IDs starting at 1 [OK]
      Hint: IDENTITY(1,1) starts numbering from 1 incrementing by 1 [OK]
      Common Mistakes:
      • Assuming ID starts at 0
      • Expecting null IDs without insert values
      • Thinking INSERT needs ID value explicitly
      4. You try to create a table in PostgreSQL with this statement:
      CREATE TABLE orders (order_id INT AUTO_INCREMENT PRIMARY KEY, order_date DATE);

      What is the error and how to fix it?
      medium
      A. AUTO_INCREMENT is invalid in PostgreSQL; use SERIAL or IDENTITY instead
      B. Missing parentheses after AUTO_INCREMENT
      C. order_id must be VARCHAR for AUTO_INCREMENT
      D. No error; statement is correct

      Solution

      1. Step 1: Identify AUTO_INCREMENT support

        PostgreSQL does not support AUTO_INCREMENT; this is a MySQL keyword.
      2. Step 2: Correct PostgreSQL syntax

        Use SERIAL or GENERATED AS IDENTITY for auto-incrementing columns in PostgreSQL.
      3. Final Answer:

        AUTO_INCREMENT is invalid in PostgreSQL; use SERIAL or IDENTITY instead -> Option A
      4. Quick Check:

        PostgreSQL uses SERIAL or IDENTITY, not AUTO_INCREMENT [OK]
      Hint: PostgreSQL rejects AUTO_INCREMENT; use SERIAL or IDENTITY [OK]
      Common Mistakes:
      • Trying to use MySQL syntax in PostgreSQL
      • Assuming AUTO_INCREMENT works everywhere
      • Ignoring error messages about syntax
      5. You want to migrate a MySQL table with AUTO_INCREMENT primary key to PostgreSQL. Which approach correctly preserves auto-increment behavior?
      hard
      A. Keep AUTO_INCREMENT keyword as is in PostgreSQL
      B. Replace AUTO_INCREMENT with SERIAL type for the primary key column
      C. Use IDENTITY without specifying start value
      D. Manually insert IDs for each row without auto-increment

      Solution

      1. Step 1: Understand MySQL to PostgreSQL migration

        MySQL uses AUTO_INCREMENT, but PostgreSQL does not support it directly.
      2. Step 2: Use PostgreSQL equivalent

        PostgreSQL uses SERIAL as a shorthand for auto-increment integer columns, preserving behavior.
      3. Final Answer:

        Replace AUTO_INCREMENT with SERIAL type for the primary key column -> Option B
      4. Quick Check:

        MySQL AUTO_INCREMENT -> PostgreSQL SERIAL [OK]
      Hint: Use SERIAL in PostgreSQL to replace MySQL AUTO_INCREMENT [OK]
      Common Mistakes:
      • Leaving AUTO_INCREMENT keyword unchanged
      • Using IDENTITY without proper syntax
      • Manually managing IDs instead of auto-increment
      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