使わない知識はだんだんと薄れていきます。
MySQLについても結構昔に勉強したはずなのですが普段遣いのコマンドはともかくとしてド忘れてしてることが結構あります。
ということで学び直しをしていますが、あまりに基本的なことはあーはいはいという感じで眠くなってしまったりもするのでアウトプットして勉強した気になることとします!
前回のあらすじ
SQL文におけるUPDATE文の使い方を学びました
DELETEとは
DELETE文はテーブル内のレコードを削除するSQL文です。
レコード追加を行うINSERT、更新を行うUPDATE、取得を行うSELECTとともにDML四天王と呼ばれています(嘘)
DMLとはData Manipulation Languageのことを指し、上記4つの事を言います。
この他に構造を定義するためのDDL、権限などを制御するDCLとともにSQL御三家と呼ばれています(嘘)
DELETE文の使い方
まずDELETE FROM テーブル名;
のように指定するとテーブルの中身が全て削除されます。
しかしSQLを業務等で使うに当たりテーブルの中身を全部消すような使い方はほぼしないと思います。
テーブル内の削除する対象データを絞り込むにはWHERE
句を使用して削除するデータを限定します。
それでは、なんとなく山田さんの存在を消したくなりましたので消しましょう。
以下のSQL文は仮想環境Envader(ubuntu, MySQL(MariaDB))を使用しコマンド実行しています。
DELETE FROM テーブル名 WHERE name="山田さん" ;
これで山田さんはデータベースのテーブル上から消えました。
つづいて売上トップ独走中の佐藤さんのデータを5件削除したいと思います。この場合はLIMIT句を使います。
DELETE FROM テーブル名 WHERE name="佐藤さん" LIMIT 5;
はい、佐藤さんお疲れ様でした~。
ところで、値の大小条件はORDER BYで指定することができます。
IDが5より小さいデータは残念ながら抹消しましょう。
DELETE FROM テーブル名 WHERE 5 > id ORDER BY id;
さらにid降順(DESC)に並び替えて上位5件を削除します。
DELETE FROM テーブル名 ORDER BY id DESC LIMIT 5;
デフォルトの並び順はASC(降順)です。
下等なidどもをやっつけました。
以上で一通りのDELETE文の使い方の学習を終了とします。
SQL文参考:【MySQL の基本】DELETE文の使い方について
注意点
一番最初に書いた通り、条件指定をしないとテーブルの中身は全て消えてしまいます。
WHERE
などで対象を指定しましょう。
学んだこと
- DELETE文の使い方それぞれ
- 条件指定しないと全部消えるヤバいコマンドであること
これでSQL軍のDML四天王全てを討伐しました。やったぜ。
参考資料