Bird
Raised Fist0
SQLquery~20 mins

Composite primary keys in SQL - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Composite Key Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
query_result
intermediate
2:00remaining
Output of a query on a table with composite primary key

Consider a table Orders with a composite primary key on (OrderID, ProductID). The table has the following rows:

OrderID | ProductID | Quantity
--------+-----------+---------
1       | 101       | 2
1       | 102       | 1
2       | 101       | 5
2       | 103       | 3

What will be the output of this query?

SELECT OrderID, ProductID FROM Orders WHERE OrderID = 1;
SQL
SELECT OrderID, ProductID FROM Orders WHERE OrderID = 1;
A[{"OrderID":1,"ProductID":101},{"OrderID":1,"ProductID":102}]
B[{"OrderID":1,"ProductID":101}]
C[{"OrderID":1,"ProductID":102},{"OrderID":2,"ProductID":101}]
D[]
Attempts:
2 left
💡 Hint

Remember that the composite primary key means each combination of OrderID and ProductID is unique, but multiple rows can share the same OrderID.

🧠 Conceptual
intermediate
1:30remaining
Understanding composite primary keys uniqueness

Which statement best describes the uniqueness enforced by a composite primary key on columns (A, B)?

AEach value in column A must be unique across the table.
BEither column A or column B must have unique values, but not necessarily both.
CEach combination of values in columns A and B must be unique across the table.
DEach value in column B must be unique across the table.
Attempts:
2 left
💡 Hint

Think about how composite keys combine columns to enforce uniqueness.

📝 Syntax
advanced
2:00remaining
Correct syntax to define a composite primary key

Which of the following SQL statements correctly defines a composite primary key on columns user_id and role_id in a table UserRoles?

ACREATE TABLE UserRoles (user_id INT PRIMARY KEY, role_id INT PRIMARY KEY);
BCREATE TABLE UserRoles (user_id INT, role_id INT, PRIMARY KEY (user_id, role_id));
CCREATE TABLE UserRoles (user_id INT, role_id INT, PRIMARY KEY user_id, role_id);
DCREATE TABLE UserRoles (user_id INT, role_id INT, PRIMARY KEY user_id AND role_id);
Attempts:
2 left
💡 Hint

Look for the correct syntax to declare multiple columns as a single primary key.

optimization
advanced
2:30remaining
Indexing considerations with composite primary keys

You have a table with a composite primary key on (customer_id, order_id). You frequently query the table filtering only by order_id. What is the best indexing strategy to optimize these queries?

ACreate a composite index on <code>(order_id, customer_id)</code>.
BDrop the primary key and create separate primary keys on each column.
CRely only on the composite primary key index on <code>(customer_id, order_id)</code>.
DCreate an additional index on <code>order_id</code> alone.
Attempts:
2 left
💡 Hint

Think about how indexes work with leading columns in composite keys.

🔧 Debug
expert
2:00remaining
Identify the error in composite primary key constraint

Given the following table creation statement, what error will occur?

CREATE TABLE Enrollment (
  student_id INT,
  course_id INT,
  PRIMARY KEY student_id, course_id
);
ASyntaxError: Missing parentheses around columns in PRIMARY KEY definition.
BNo error; table created successfully with composite primary key.
CTypeError: Columns must be declared as NOT NULL for primary key.
DRuntime error: Duplicate key values not allowed.
Attempts:
2 left
💡 Hint

Check the syntax for declaring composite primary keys.

Practice

(1/5)
1. What is a composite primary key in a database table?
easy
A. A primary key that uses only one column to identify rows.
B. A primary key made up of two or more columns combined to uniquely identify a row.
C. A key that allows duplicate values in the table.
D. A foreign key that references multiple tables.

Solution

  1. Step 1: Understand primary key basics

    A primary key uniquely identifies each row in a table.
  2. Step 2: Define composite primary key

    A composite primary key uses two or more columns together to ensure uniqueness.
  3. Final Answer:

    A primary key made up of two or more columns combined to uniquely identify a row. -> Option B
  4. Quick Check:

    Composite primary key = multiple columns [OK]
Hint: Composite keys combine columns to ensure unique rows [OK]
Common Mistakes:
  • Thinking a primary key can have duplicates
  • Confusing composite key with foreign key
  • Assuming composite key uses only one column
2. Which of the following is the correct syntax to define a composite primary key on columns order_id and product_id in SQL?
easy
A. PRIMARY KEY (order_id, product_id)
B. PRIMARY KEY order_id, product_id
C. PRIMARY KEY order_id & product_id
D. PRIMARY KEY (order_id + product_id)

Solution

  1. Step 1: Recall SQL syntax for composite keys

    Composite keys are defined by listing columns inside parentheses separated by commas.
  2. Step 2: Match correct syntax

    PRIMARY KEY (order_id, product_id) uses parentheses and comma correctly: PRIMARY KEY (order_id, product_id).
  3. Final Answer:

    PRIMARY KEY (order_id, product_id) -> Option A
  4. Quick Check:

    Composite key syntax uses parentheses and commas [OK]
Hint: Use parentheses and commas for composite keys [OK]
Common Mistakes:
  • Omitting parentheses around columns
  • Using symbols like & or + incorrectly
  • Listing columns without commas
3. Given the table OrderDetails with composite primary key (order_id, product_id), what will this query return?
SELECT * FROM OrderDetails WHERE order_id = 101;
medium
A. No rows because both keys must be specified.
B. Only one row with order_id 101 and any product_id.
C. An error because product_id is missing in WHERE clause.
D. All rows where order_id is 101, regardless of product_id.

Solution

  1. Step 1: Understand composite key usage in queries

    Composite keys uniquely identify rows, but queries can filter by any column(s).
  2. Step 2: Analyze the query filter

    The query filters only by order_id = 101, so it returns all rows with that order_id regardless of product_id.
  3. Final Answer:

    All rows where order_id is 101, regardless of product_id. -> Option D
  4. Quick Check:

    Filtering by part of composite key returns matching rows [OK]
Hint: Filtering by part of composite key returns matching rows [OK]
Common Mistakes:
  • Assuming missing key column causes error
  • Thinking only full composite key filters work
  • Expecting only one row when multiple match
4. You try to create a table with this SQL:
CREATE TABLE Enrollment (
student_id INT,
course_id INT,
PRIMARY KEY student_id, course_id
);

What is the problem?
medium
A. Missing parentheses around the composite key columns.
B. student_id and course_id cannot be primary keys.
C. PRIMARY KEY must be declared after all columns.
D. Composite keys require UNIQUE keyword instead.

Solution

  1. Step 1: Check syntax for composite primary key

    Composite keys require parentheses around the column list in PRIMARY KEY declaration.
  2. Step 2: Identify error in given SQL

    The statement uses PRIMARY KEY student_id, course_id without parentheses, causing syntax error.
  3. Final Answer:

    Missing parentheses around the composite key columns. -> Option A
  4. Quick Check:

    Composite keys need parentheses [OK]
Hint: Always use parentheses for composite primary keys [OK]
Common Mistakes:
  • Omitting parentheses in PRIMARY KEY clause
  • Confusing primary key with unique constraint
  • Placing PRIMARY KEY before column definitions
5. You have a table Attendance with columns student_id, class_date, and session. You want to ensure each student can only have one attendance record per class date and session. Which composite primary key should you define?
hard
A. (class_date, session)
B. (student_id, class_date)
C. (student_id, class_date, session)
D. (student_id, session)

Solution

  1. Step 1: Understand uniqueness requirement

    Each student must have only one record per class date and session, so all three columns combined must be unique.
  2. Step 2: Choose composite key covering all uniqueness factors

    Composite key must include student_id, class_date, and session to enforce this rule.
  3. Final Answer:

    (student_id, class_date, session) -> Option C
  4. Quick Check:

    Composite key covers all uniqueness columns [OK]
Hint: Include all columns that define uniqueness in composite key [OK]
Common Mistakes:
  • Leaving out session or class_date from key
  • Using only two columns when three needed
  • Confusing foreign keys with primary keys