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文で結果を確認すると安心
誤ってデータを消さないよう、本番環境では事前にバックアップを取ることもおすすめします。
-
MySQLストアドプロシージャでDELETEクエリを実装する方法
MySQLストアドプロシージャでDELETEクエリを実装する方法MySQLのストアドプロシージャを利用すれば、削除処理をひとつにまとめて再利用しやすくなり、パラメータを通じて動的に値を渡すことも可能です。ここでは、実際にサンプルテーブルを作成し、ストアドプロシージャ内でDELETEクエリを実行するまでの手順を解説します。1. サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1464 -> ( -> Id int, -> Fi
-
MySQLでテーブルから特定の行を抽出するクエリの書き方
MySQLでは、WHERE句とORDER BY、LIMITを組み合わせることで、テーブルから条件に合致する特定の行だけを効率的に取得できます。本記事では、実際にサンプルテーブルを作成し、特定の行を抽出するクエリの実行手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。ここでは「Section(組)」と「StudentName(生徒名)」という2つのカラムを持つテーブルを用意しました。 mysql> create table DemoTable1972 ( Section char(1),