【試して覚える】SQLite で Delete 文入門

プログラミング入門
この記事は約3分で読めます。

前回は insert 文によるデータの使いについて解説しましたので、今回は delete 文によるデータの削除について解説したいと思います。

SQLを試したい場合は、 こちら でツールを公開していますので、ダウンロードをお願いします。

Delete文の書式

Delete 文は次の書式となります。

delete from テーブル名 where 検索条件

where 区に削除対象を絞り込むための検索条件を記述します。

もし where 区を記述し忘れた場合、全レコードが削除されてしまいますので、ご注意ください。

delete を試してみる

では、商品マスタから 「メーカー」が SONY のデータだけを削除することを考えてみましょう。

一番心配なのが、where 区の条件を間違えて意図していないレコードを削除してしまう事です。

そうならないように、通常は削除対象が正しく絞り込めているかを確認するため、 select 文を実行します。

今回の場合は、次のようになります。

実行すると22件がヒットしました。

表示されたデータにおいて「メーカー」が SONY であることが確認できたら、抽出条件は意図したものになっている(つまり正しい)と判断できます。

後は、select * の部分を delete に変更して実行するだけです。

ツールで実行すると以下の様な画面になります。

一瞬全てのデータが消えたと勘違いされるかもしれませんが、delete 文は結果を返さないので、単に何も表示されていないだけです。

では、本当に削除されたかどうかを確認するために、最初に実行した select 文を再度実行します。

今度は、カラム名だけ表示されていますね。

検索した結果、ヒットするレコードが0件だったということです。

確かに削除されていますが、もしかして本当に全件削除されたってことは無いでしょうか?

そういう疑問を持つことは正しいです。

というのは、間違えて全件消した場合も同じ結果(カラム名だけが表示される)が返ってくるからです。

そこで、今度は where 区を外して全件表示してみます。

すると、今回は71件ヒットしましたね。

これで、少なくとも誤って全件削除してしまったという疑いは晴れました。

今回は件数が少ないので全件表示してもストレスなく結果が返ってきますが、もし1000万件とかのデータを確認する場合、結果がなかなか返ってこないか、あるいは返ってきてもメモリ不足で表示できない場合があります。

データ件数が多いテーブルの場合は、表示件数を制限するとか、別の抽出条件を指定するとかの方法で確認します。

ちなみに、sqlite の場合、select 文の末尾に limit 表示件数 という指定をすれば、表示件数を制限することが出来ます。

例えば、検索結果の10件だけ表示したい場合は次の様になります。

まとめ

今回は delete 文を解説しました。

  • where 区で削除対象の絞り込み条件を指定する。
  • where 区を指定しないと、全件が削除される。
  • select で絞り込み条件を確認してから,delete文に置き換えて実行すると安心

という3点を押さえておけば、delete 文は単純です。

本サイトで公開しているツールを使えば、間違って削除してもすぐに元に戻せますので、色々とお試しいただければと思います。

タイトルとURLをコピーしました