Interview Questions, Answers and Tutorials

Deleting Data

Deleting Data

Hey there, young data explorer! 🚀 Today, we’re going to learn about deleting data from a database using the DELETE statement in MySQL. Imagine your database is like a giant notebook where you write down a list of your favorite games, movies, or snacks. But what if you no longer like one of them? You would erase it, right? That’s exactly what DELETE does in MySQL—it removes unwanted data!

Let’s dive in with simple examples, practice questions, and interview questions to master DELETE like a pro. 🔥


1. What is the DELETE Statement?

The DELETE statement is used to remove rows (entries) from a table. Unlike the DROP statement (which deletes the whole table) or TRUNCATE (which removes all rows at once), DELETE allows us to remove specific data using conditions.

Syntax:

DELETE FROM table_name WHERE condition;

  • table_name: The table from which you want to delete data.
  • condition: A rule that tells MySQL which rows to delete. If you don’t use a WHERE condition, all rows will be deleted (Be careful! 🚨).

2. Basic DELETE Example

Let’s say we have a table called students with some data:

idnameagegrade
1Alice10A
2Bob11B
3Charlie10C

Deleting a Single Row

Bob moved to another school. Let’s delete his record:

DELETE FROM students WHERE name = 'Bob';

Now, our table looks like this:

idnameagegrade
1Alice10A
3Charlie10C

3. Deleting Multiple Rows

Charlie and Alice both graduated. Let’s remove all students who are 10 years old.

DELETE FROM students WHERE age = 10;

Now, the table is empty:

idnameagegrade
(No data)

4. Deleting All Rows (Be Careful!)

If we want to delete all students, we can do:

DELETE FROM students;

This will delete all data, but the table still exists. If you want to delete everything and reset the ID count, use:

TRUNCATE TABLE students;


5. DELETE vs TRUNCATE vs DROP

CommandWhat it doesCan you undo it?Affects Table Structure?
DELETERemoves specific rows✅ Yes (if using transactions)❌ No
TRUNCATERemoves all rows❌ No❌ No
DROPDeletes the entire table❌ No✅ Yes

6. Using DELETE with LIMIT

What if you have many rows and want to delete only a few? Use LIMIT:

DELETE FROM students ORDER BY id ASC LIMIT 1;

This deletes only 1 row, starting from the lowest id.


7. DELETE with JOIN (Deleting from Multiple Tables)

Let’s say we have two tables:

  • orders (list of orders)
  • customers (list of customers)

If a customer leaves, we need to delete all their orders first. We can DELETE using a JOIN:

DELETE orders FROM orders
JOIN customers ON orders.customer_id = customers.id
WHERE customers.name = 'Alice';


8. Best Practices for DELETE

Always use WHERE (unless you mean to delete everything).
Use SELECT before DELETE to check what will be removed:

SELECT * FROM students WHERE age = 10;

Enable transactions (BEGIN TRANSACTION, ROLLBACK) to undo mistakes.
Use LIMIT to delete in smaller chunks for big tables.


📝 Practice Questions

1. Basic DELETE

❓ Delete all students who got a grade of C.

DELETE FROM students WHERE grade = 'C';

2. DELETE with Multiple Conditions

❓ Remove all students who are older than 12 and got a grade of B.

DELETE FROM students WHERE age > 12 AND grade = 'B';

3. DELETE with LIMIT

❓ Delete only 2 students with the lowest IDs.

DELETE FROM students ORDER BY id ASC LIMIT 2;

4. DELETE from Multiple Tables

❓ Delete orders for a customer named ‘John’.

DELETE orders FROM orders
JOIN customers ON orders.customer_id = customers.id
WHERE customers.name = 'John';


💼 Interview Questions (With Answers!)

1. What is the difference between DELETE and TRUNCATE?

Answer: DELETE removes specific rows using WHERE, and you can rollback changes. TRUNCATE removes all rows without a WHERE, and you cannot undo it.

2. How can you delete data safely in MySQL?

Answer:

  • Always use WHERE it to avoid deleting all rows.
  • Use SELECT before DELETE to verify data.
  • Enable transactions (ROLLBACK to undo mistakes).

3. How do you delete duplicate rows in a table?

Answer: Using DELETE with ROW_NUMBER() (if using MySQL 8+):

DELETE FROM students 
WHERE id NOT IN (
    SELECT id FROM (
        SELECT MIN(id) as id FROM students GROUP BY name, age, grade
    ) as temp
);

This keeps only one copy of each unique row.

4. Can you DELETE from multiple tables at once?

Answer: Yes! Use DELETE with JOIN:

DELETE orders FROM orders
JOIN customers ON orders.customer_id = customers.id
WHERE customers.name = 'Alice';

5. How to reset an auto-increment ID after DELETE?

Answer: If you delete all rows and want to reset the ID:

TRUNCATE TABLE students;

or manually reset:

ALTER TABLE students AUTO_INCREMENT = 1;


🎯 Final Thoughts

  • The DELETE statement removes rows safely when used with WHERE.
  • Use LIMIT, ORDER BY, and JOIN to control deletion.
  • Always test with SELECT before deleting data!
  • TRUNCATE is faster but irreversible.
  • DROP removes the entire table structure.

Now you know DELETE like a MySQL DBA! Go practice and keep your database clean. 🚀🔥

Would you like me to add more advanced queries or a mini-project using DELETE? 😊