MySQL DELETE Query: How to Delete a Row from Table

What is the DELETE Query?

MySQL Delete command is used to delete rows that are no longer required from the database tables. It deletes the whole row from the table and returns count of deleted rows. Delete command comes in handy to delete temporary or obsolete data from your database.

The Delete query in MySQL can delete more than one row from a table in a single query. This proves to be advantages when removing large numbers of rows from a database table.

Once a Delete row in MySQL row has been deleted, it cannot be recovered. It is therefore strongly recommended to make database backups before deleting any data from the database. This can allow you to restore the database and view the data later on should it be required.

How to Delete a row in MySQL

To delete a row in MySQL, the DELETE FROM statement is used:

DELETE FROM `table_name` [WHERE condition];

HERE

  • DELETE FROM `table_name` tells MySQL server to remove rows from the table ..
  • [WHERE condition] is optional and is used to put a filter that restricts the number of rows affected by the DELETE syntax MySQL row query.

If the WHERE clause is not used in the MySQL DELETE query, then all the rows in a given table will be deleted.

Example of MySQL Delete Query

Before we go into more detailed discussion about the SQL DELETE statement, let’s insert some sample data into the movies table to work with.

INSERT INTO  `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Chalie Chaplie', 1920, 7);
INSERT INTO `movies` (`title`, `director`, `category_id`) VALUES ('sample movie', 'Anonymous', 8);
INSERT INTO  movies (`title`, `director`, `year_released`, `category_id`) VALUES ('movie 3', 'John Brown', 1920, 8);

Executing the above script adds three (3) movies into the movies table. Before we go any further into our lesson, let’s get all the movies in our table. The script shown below does that.

SELECT * FROM `movies`;

Executing the above script gives us the following results.

movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Name Black Edgar Jimz 2010 NULL
5 Daddy's Little Girls NULL 2007 8
6 Angels and Demons NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8
16 67% Guilty NULL 2012 NULL
18 The Great Dictator Chalie Chaplie 1920 7
19 sample movie Anonymous NULL 8
20 movie 3 John Brown 1920 8

Let’s suppose that the Myflix video library no longer wishes to be renting out “The Great Dictator” to its members and they want it removed from the database. Its movie id is 18, we can use the script shown below to delete row from table MySQL example.

DELETE FROM `movies` WHERE `movie_id` = 18;

Executing the above script in MySQL WorkBench against the Myflix deletes the movie with id 18 from the database table.


Let’s see the current status of movies table.

SELECT * FROM `movies`;
movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Name Black Edgar Jimz 2010 NULL
5 Daddy's Little Girls NULL 2007 8
6 Angels and Demons NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8
16 67% Guilty NULL 2012 NULL
19 sample movie Anonymous NULL 8
20 movie 3 John Brown 1920 8

NOTE:

  • the movie with id 18 has not been return in the query result set.
  • you cannot delete a single column for a table. You can delete an entire row.

Let’s say we have a list of movies we want to delete . We can use the WHERE clause along with IN.

DELETE FROM `movies` WHERE `movie_id`  IN (20,21);

Executing the above script deletes movies with IDs 20 and 21 from our movies table.

Summary

  • The command Delete in MySQL, is used to remove data that is no longer required from a table.
  • The “WHERE clause” is used to limit the number of rows affected by the DELETE query MySQL command.
  • Once data has been deleted, it cannot be recovered, it is therefore strongly recommend make backups before deleting data.