続いて既存のレコードを削除する方法について見ていきましょう。

insert文によってテーブルに作成したレコードは delete 文で削除できます。
delete from categories where id = 100;
delete 文は次のような構文になります。
delete from テーブル名 where 列名 = データ, ...;
先ほどのSQLの場合は削除対象のテーブルを categories テーブルとしています。また select 文と同様に where 句を使って削除対象となるレコードを決定します。さきほどのSQL文の場合は where 句によって id が 100 のレコードを削除対象としています。
それでは実際にMySQLクライアントプログラムから delete 文を実行してみましょう。
MariaDB [eldb]> delete from categories where id = 100;
Query OK, 1 row affected (0.01 sec)
MariaDB [eldb]>
Query OK というメッセージからSQLが正しく処理されたことがわかります。delete 文の削除結果を確認するためにもう一度 select 文を実行してみましょう。
MariaDB [eldb]> select * from categories;
+----+-------+
| id | title |
+----+-------+
| 2 | Test |
| 3 | Test |
+----+-------+
2 rows in set (0.00 sec)
MariaDB [eldb]>
期待していたとおり id が 100 のレコードが削除されているのがわかります。
where句を指定しない場合
さいごに、あまり一般的な使い方ではないですが where 句を省略した delete 文を考えてみましょう。
delete from categories;
上記のように where 句を省略して delete 文を実行するとテーブル上のすべてのレコードが delete 文の対象となります。つまり、categories テーブルのすべてのレコードが削除されます。
MySQLクライアントプログラムから delete 文を実行してみましょう。
MariaDB [eldb]> delete from categories;
Query OK, 2 rows affected (0.00 sec)
MariaDB [eldb]>
Query OK というメッセージからSQLが正しく処理されたことがわかります。delete 文の更新結果を確認するためにもう一度 select 文を実行してみましょう。
MariaDB [eldb]> select * from categories;
Empty set (0.00 sec)
MariaDB [eldb]>
実行結果のようにすべてのレコードが削除されているのがわかります。このように where 句を記述し忘れると削除の影響範囲がテーブル全体となる点に注意しておいてください。
以上でSQLの基本的な操作についての解説は完了です。
まとめ
- テーブルの既存レコードを削除するには
delete文を使う delete文はwhere句で削除条件を指定できるwhere句を省略するとテーブルのすべてのレコードが削除対象となるので注意する