Bird
Raised Fist0
SQLquery~5 mins

CASCADE delete preview in SQL - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does CASCADE DELETE do in a database?
It automatically deletes all related rows in child tables when a row in the parent table is deleted.
Click to reveal answer
beginner
Why is CASCADE DELETE useful?
It helps keep data consistent by removing dependent records without needing extra queries.
Click to reveal answer
beginner
What happens if you delete a parent row without CASCADE DELETE set on its foreign keys?
The database will prevent the deletion if child rows exist, to avoid orphaned data.
Click to reveal answer
intermediate
How can you preview which rows will be deleted by a CASCADE DELETE?
By running SELECT queries on child tables filtering by the parent row's key before deleting.
Click to reveal answer
intermediate
Write a simple SQL command to create a foreign key with CASCADE DELETE.
ALTER TABLE child_table ADD CONSTRAINT fk_name FOREIGN KEY (parent_id) REFERENCES parent_table(id) ON DELETE CASCADE;
Click to reveal answer
What does ON DELETE CASCADE do in a foreign key constraint?
ADeletes child rows automatically when parent row is deleted
BPrevents deletion of parent rows if child rows exist
CDeletes parent rows automatically when child row is deleted
DDoes nothing on delete
If you want to check which child rows will be deleted by a CASCADE DELETE, what should you do?
ADisable foreign key constraints
BDelete the parent row directly
CDrop the child tables
DRun SELECT queries on child tables filtering by parent key
What happens if you delete a parent row without ON DELETE CASCADE and child rows exist?
ADeletion fails due to foreign key constraint
BParent row is updated instead
CChild rows are deleted automatically
DDeletion succeeds and child rows remain
Which SQL clause defines CASCADE DELETE behavior?
AON UPDATE CASCADE
BON DELETE CASCADE
CON DELETE SET NULL
DON DELETE RESTRICT
Why should you preview CASCADE deletes before running them?
ATo disable foreign keys
BTo speed up the deletion
CTo avoid accidentally deleting important related data
DTo create backups automatically
Explain in your own words what CASCADE DELETE does and why it is important.
Think about what happens to connected data when you remove a main record.
You got /3 concepts.
    Describe how you would preview the rows affected by a CASCADE DELETE before actually deleting.
    Imagine checking what will be lost before pressing delete.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does CASCADE DELETE do in a database?
      easy
      A. Creates a backup of rows before deletion
      B. Prevents deletion of parent rows if child rows exist
      C. Deletes only the parent row without affecting child rows
      D. Automatically deletes related child rows when a parent row is deleted

      Solution

      1. Step 1: Understand CASCADE DELETE behavior

        CASCADE DELETE means when you delete a parent row, all related child rows linked by foreign keys are also deleted automatically.
      2. Step 2: Compare options with this behavior

        Automatically deletes related child rows when a parent row is deleted matches this behavior exactly. Options A, B, and D describe different or incorrect behaviors.
      3. Final Answer:

        Automatically deletes related child rows when a parent row is deleted -> Option D
      4. Quick Check:

        CASCADE DELETE = auto-remove child rows [OK]
      Hint: CASCADE means child rows go away with parent [OK]
      Common Mistakes:
      • Thinking CASCADE prevents deletion
      • Confusing CASCADE with backup
      • Assuming child rows stay after parent deletion
      2. Which SQL syntax correctly previews rows that will be deleted by CASCADE when deleting from orders table with customer_id = 5?
      easy
      A. SELECT * FROM customers WHERE id = 5;
      B. DELETE FROM order_items WHERE customer_id = 5;
      C. SELECT * FROM order_items WHERE order_id IN (SELECT id FROM orders WHERE customer_id = 5);
      D. SELECT * FROM orders WHERE customer_id = 5;

      Solution

      1. Step 1: Identify child rows linked to parent rows

        To preview cascade deletes, select child rows where foreign key matches parent rows to be deleted. Here, order_items link to orders by order_id.
      2. Step 2: Use subquery to find parent rows with customer_id = 5

        The subquery selects orders with customer_id = 5. The outer query selects order_items with those order_ids.
      3. Final Answer:

        SELECT * FROM order_items WHERE order_id IN (SELECT id FROM orders WHERE customer_id = 5); -> Option C
      4. Quick Check:

        Preview child rows with IN + subquery [OK]
      Hint: Use IN with subquery to find child rows [OK]
      Common Mistakes:
      • Trying to delete instead of preview
      • Selecting wrong table without join
      • Using wrong column in WHERE clause
      3. Given tables departments and employees with employees.department_id referencing departments.id with CASCADE DELETE, what rows will this query return?
      SELECT * FROM employees WHERE department_id IN (SELECT id FROM departments WHERE name = 'Sales');
      medium
      A. All employees who work in the Sales department
      B. All departments named Sales
      C. All employees regardless of department
      D. No rows, syntax error

      Solution

      1. Step 1: Understand the subquery

        The subquery selects department ids where the name is 'Sales'.
      2. Step 2: Outer query filters employees by those department ids

        Employees with department_id matching those ids are returned.
      3. Final Answer:

        All employees who work in the Sales department -> Option A
      4. Quick Check:

        IN subquery filters child rows correctly [OK]
      Hint: IN with subquery filters child rows by parent condition [OK]
      Common Mistakes:
      • Confusing employees with departments
      • Assuming syntax error
      • Ignoring the subquery effect
      4. You wrote this query to preview cascade deletes:
      SELECT * FROM order_items WHERE order_id = (SELECT id FROM orders WHERE customer_id = 10);

      Why might this query cause an error?
      medium
      A. Subquery returns multiple rows but '=' expects one value
      B. Table order_items does not exist
      C. Missing WHERE clause in subquery
      D. Incorrect column name order_id

      Solution

      1. Step 1: Analyze subquery result

        The subquery selects all order ids for customer_id 10, which can be multiple rows.
      2. Step 2: Check operator usage

        The outer query uses '=' which expects a single value, causing an error if multiple rows returned.
      3. Final Answer:

        Subquery returns multiple rows but '=' expects one value -> Option A
      4. Quick Check:

        Use IN for multiple subquery results [OK]
      Hint: Use IN, not =, when subquery returns many rows [OK]
      Common Mistakes:
      • Using '=' with multi-row subquery
      • Assuming table or column names are wrong
      • Ignoring subquery result count
      5. You want to preview all child rows that will be deleted when deleting customers with country = 'USA'. The schema has customers and orders (orders.customer_id references customers.id with CASCADE). Which query correctly previews all orders to be deleted?
      hard
      A. SELECT * FROM customers WHERE country = 'USA';
      B. SELECT * FROM orders WHERE customer_id IN (SELECT id FROM customers WHERE country = 'USA');
      C. DELETE FROM orders WHERE customer_id IN (SELECT id FROM customers WHERE country = 'USA');
      D. SELECT * FROM orders WHERE country = 'USA';

      Solution

      1. Step 1: Identify parent rows to delete

        Customers with country = 'USA' are the parent rows to be deleted.
      2. Step 2: Find child rows linked to those parents

        Orders with customer_id matching those customers will be deleted by CASCADE.
      3. Step 3: Write query to preview child rows

        Use IN with subquery selecting customer ids from customers where country = 'USA'.
      4. Final Answer:

        SELECT * FROM orders WHERE customer_id IN (SELECT id FROM customers WHERE country = 'USA'); -> Option B
      5. Quick Check:

        Preview child rows with IN + subquery [OK]
      Hint: Preview child rows with IN and parent filter subquery [OK]
      Common Mistakes:
      • Selecting from wrong table
      • Using DELETE instead of SELECT
      • Filtering child table by parent's column directly
      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