MySQL DELETE文
1. MySQL DELETE文とは
DELETEステートメントは、テーブル内の既存のレコードを削除するために使用されます。
2. DELETEの構文
DELETE FROM table_name WHERE condition;注意: テーブルのレコードを削除する際は、細心の注意を払ってください!DELETEステートメントにおける WHERE句 に注目してください。WHERE句は、どのレコードを削除すべきかを指定します。もし WHERE句を省略した場合、テーブル内のすべてのレコードが削除されてしまいます!
3. デモ用データベース
以下は、Northwindサンプルデータベースの「Customers(顧客)」テーブルから抽出したデータです。
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
4. SQL DELETEの実行例
以下のSQLは、「Customers」テーブルから顧客名が「Alfreds Futterkiste」であるレコードを削除します。
4.1 実行例
独自のSQLサーバーで試してみましょう:
/* 特定の顧客名を持つレコードを削除する */
DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';実行後、「Customers」テーブルは以下のようになります。
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 2 | Ana Trujillo... | Ana Trujillo | ... | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno... | Antonio Moreno | ... | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | ... | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | ... | Luleå | S-958 22 | Sweden |
5. すべてのレコードを削除する
テーブル自体を削除することなく、テーブル内のすべてのレコードを削除することが可能です。この方法では、テーブルの構造、属性、およびインデックスはそのまま保持されます。
5.1 全レコード削除の構文
DELETE FROM table_name;以下のSQLは、「Customers」テーブルを削除することなく、その中のすべてのレコードを削除します。
/* テーブルを残したまま、中の全データを消去する */
DELETE FROM Customers;6. テーブルを完全に削除する(DROP TABLE)
テーブルそのものを完全に破棄(削除)したい場合は、DROP TABLEステートメントを使用します。
6.1 DROP TABLEの構文
DROP TABLE table_name;以下のSQLは、「Customers」テーブル全体を削除(ドロップ)します。これにはデータだけでなく、テーブルの定義自体も含まれます。
/* Customersテーブルとその構造を完全に削除する */
DROP TABLE Customers;