MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで行を削除する方法|DELETE文の基本と実行例を解説

MySQLでテーブルから特定の行(レコード)を削除するには、DELETE文を使用します。この記事では、実際にサンプルテーブルを作成し、DELETE文を使って行を削除する手順を順番に解説します。

1. サンプルテーブルの作成

まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。

mysql> create table DemoTable
-> (
-> CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> CustomerName varchar(100),
-> CustomerAge int
-> );
Query OK, 0 rows affected (1.30 sec)

ここでは、顧客ID(CustomerId)を自動採番の主キーとし、顧客名(CustomerName)と年齢(CustomerAge)のカラムを持つ「DemoTable」を作成しています。

2. テーブルへのレコード挿入

次に、INSERT文を使ってテーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable(CustomerName,CustomerAge) values('John',33);
Query OK, 1 row affected (0.10 sec)

mysql> insert into DemoTable(CustomerName,CustomerAge) values('Bob',25);
Query OK, 1 row affected (0.16 sec)

mysql> insert into DemoTable(CustomerName,CustomerAge) values('David',28);
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable(CustomerName,CustomerAge) values('Carol',29);
Query OK, 1 row affected (0.18 sec)

3. テーブル内の全レコードを確認

SELECT文を使って、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

出力結果

+------------+--------------+-------------+
| CustomerId | CustomerName | CustomerAge |
+------------+--------------+-------------+
| 1 | John | 33 |
| 2 | Bob | 25 |
| 3 | David | 28 |
| 4 | Carol | 29 |
+------------+--------------+-------------+
4 rows in set (0.00 sec)

現在、4件のレコードが登録されていることが確認できます。

4. DELETE文で行を削除する

それでは、本題である行を削除するクエリを実行します。以下のように、WHERE句で条件を指定してDELETE文を実行します。

mysql> delete from DemoTable where CustomerName='David' and CustomerAge=28;
Query OK, 1 row affected (0.23 sec)

この例では、「CustomerNameが'David'かつCustomerAgeが28」という条件に一致する行を1件削除しています。WHERE句を指定しないとテーブル内の全レコードが削除されるため、実行前には必ず条件を確認しましょう。

5. 削除後のテーブルを再確認

もう一度SELECT文を実行して、レコードが正しく削除されたか確認します。

mysql> select *from DemoTable;

出力結果

+------------+--------------+-------------+
| CustomerId | CustomerName | CustomerAge |
+------------+--------------+-------------+
| 1 | John | 33 |
| 2 | Bob | 25 |
| 4 | Carol | 29 |
+------------+--------------+-------------+
3 rows in set (0.00 sec)

「David」の行が削除され、残り3件のレコードだけが表示されています。なお、AUTO_INCREMENTで採番されたIDは削除後も再利用されないため、CustomerIdは「1, 2, 4」という並びになっています。

まとめ

MySQLで行を削除するには、DELETE FROM テーブル名 WHERE 条件; の形式を使用します。ポイントは以下の通りです。

  • WHERE句で削除対象の行を明確に指定する
  • WHERE句を省略すると全レコードが削除されるので注意
  • 削除後はSELECT文で結果を確認すると安心

誤ってデータを消さないよう、本番環境では事前にバックアップを取ることもおすすめします。

  1. MySQLストアドプロシージャでDELETEクエリを実装する方法

    MySQLストアドプロシージャでDELETEクエリを実装する方法MySQLのストアドプロシージャを利用すれば、削除処理をひとつにまとめて再利用しやすくなり、パラメータを通じて動的に値を渡すことも可能です。ここでは、実際にサンプルテーブルを作成し、ストアドプロシージャ内でDELETEクエリを実行するまでの手順を解説します。1. サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1464   -> (   -> Id int,   -> Fi

  2. MySQLでテーブルから特定の行を抽出するクエリの書き方

    MySQLでは、WHERE句とORDER BY、LIMITを組み合わせることで、テーブルから条件に合致する特定の行だけを効率的に取得できます。本記事では、実際にサンプルテーブルを作成し、特定の行を抽出するクエリの実行手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。ここでは「Section(組)」と「StudentName(生徒名)」という2つのカラムを持つテーブルを用意しました。 mysql> create table DemoTable1972 ( Section char(1),