MySQL 速習チュートリアル

MySQL DELETE文

1. MySQL DELETE文とは

DELETEステートメントは、テーブル内の既存のレコードを削除するために使用されます。

2. DELETEの構文

DELETE FROM table_name WHERE condition;

       注意: テーブルのレコードを削除する際は、細心の注意を払ってください!DELETEステートメントにおける WHERE句 に注目してください。WHERE句は、どのレコードを削除すべきかを指定します。もし WHERE句を省略した場合、テーブル内のすべてのレコードが削除されてしまいます!

3. デモ用データベース

以下は、Northwindサンプルデータベースの「Customers(顧客)」テーブルから抽出したデータです。

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

4. SQL DELETEの実行例

以下のSQLは、「Customers」テーブルから顧客名が「Alfreds Futterkiste」であるレコードを削除します。

4.1 実行例

独自のSQLサーバーで試してみましょう:

/* 特定の顧客名を持つレコードを削除する */
DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';

実行後、「Customers」テーブルは以下のようになります。

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
2Ana Trujillo...Ana Trujillo...México D.F.05021Mexico
3Antonio Moreno...Antonio Moreno...México D.F.05023Mexico
4Around the HornThomas Hardy...LondonWA1 1DPUK
5Berglunds snabbköpChristina Berglund...LuleåS-958 22Sweden

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;