SQLのdelete文は、数あるステートメントの中でも比較的に使用頻度が高いものではないでしょうか。簡単な命令文で、データベース内のデータを削除することができるため、SQLのdeleteステートメントはとても使い勝手の良いですね。
一見、レコードを削除するためだけのシンプルなSQLステートメントに見えるdeleteですが、初心者の方が見落としがちなdeleteステートメントの使い方が多いようです。
そこで今回の記事ではSQL deleteの使用方法を徹底的に解説していきます。SQL文の中でも特に使用頻度の高いdeleteステートメントを駆使して、WEBアプリケーションを思ったように開発できるようにしていきましょう。
- SQLにおける「delete」の概要
- SQL delete文の使い方
SQLのステートメント「delete」とは何か
SQLのステートメント「delete」とは、データベースのテーブルに挿入されている行(レコード)を削除するためのSQL文のことです。普段、WEBアプリケーションを使用しているとなかなか意識しづらいのですが、deleteステートメントを含めたデータベース言語は、至るところでWEBアプリケーションのCRUD機能を支えているのです。
先ほどSQL文が「至るところでWEBアプリケーションのCRUD機能を支えている」と述べましたが、例えば以下のようなシチュエーションでSQLのdeleteステートメントは使用しされています。
- 投稿したSNSのメッセージを削除するとき
- ECサイトなどでショッピングカートの商品を削除するとき(セッションを使用していない場合)
SQLのdeleteステートメントは基本的にすでに登録済みのデータをデータベースから削除するというシチュエーションで使用されることがほとんどです。このように考えるとWEBアプリケーション上でSQLのdeleteステートメントが使用される場面がいくつも思いつくのではないでしょうか。
SQLのあらましについて、こちらで軽くご紹介しておきましょう。SQLとは、データベースを扱うためのデータベース言語のうちの1つです。また、その中でもデータの操作に重きを置かれたSQLはデータ操作言語に当たります。
なぜそのような言語があるのかというと、人とコンピュータの両方が理解できる言葉が必要なためです。SQLは人がコンピュータに直接命令することができる手段の1つ。何をするにもプログラミングはコンピュータを介さなければいけないため、習得が好ましい言語だと言えるでしょう。
SQL deleteの使い方
SQLのdeleteステートメントについての概要を把握していただいた上で、次にSQLのdeleteステートメントの具体的な使用方法をご紹介していきましょう。
本記事では、SQLのdeleteステートメントを使用する環境としてMySQLというデータベース管理システムを使用します。MySQLに関する説明は割愛しますが、まだ使用したことがないという方はこれを機に導入してみてください。
全ての行(レコード)の削除
DELETE FROM color';
SQLのdeleteステートメントにおいて最も基本的な使い方は、全ての行(レコード)の削除です。「color」というのはテーブル名にあたり、「DELETE FROM」の後に続けて、レコード全てを削除したいテーブル名を指定することによって、全レコードの削除を行うことができます。
「DELETE FROM」は大文字になっていないといけないのですか?
そんなことはありません。「delete from」と小文字で書いても受理されます。ただしテーブル名などとSQL文を見分けるために、慣例的に大文字にする場合があります。
条件に合致した行(レコード)の削除
DELETE FROM people WHERE age < 30;
DELETE FROM cars WHERE color='red';
条件に合致した行(レコード)の削除を行う際には、「WHERE」を使います。先ほどの例と同じく「people」や「cars」はテーブル名、そしてWHEREの後の「age」「color」テーブルカラム名です。
分かりやすく日本語に直すとすると、
DELETE FROM people WHERE age < 30;→「peopleテーブルの中で年齢が30歳未満のレコードを削除してください。」
DELETE FROM cars WHERE color=’red’;→「carsテーブルの中で色がredのレコードを削除してください。」
最初にご紹介したテーブルレコードの全削除はあまり使用頻度が高くありません。それよりは、こちらでご紹介したような条件付きのSQL deleteステートメントを使用する機会が多いはずです。例えば、以下のような機会に使用することができます。
- 指定した日付のブログ投稿記事を削除する
- サイトから退会した会員のデータを削除する
このように「このデータだけを削除したい」というシチュエーションで、条件に合致した行(レコード)の削除は活躍するはずです。必ず使いこなせるようになっておきましょう。
指定した数の行(レコード)削除
DELETE FROM comments LIMIT 2;
上記でご紹介したコードのように、削除するレコードの数を指定することもできます。その際には、テーブル名の後に「LIMIT」+「数値」を付け加える必要があります。
実はこの指定した数の行(レコード)削除は、先ほどご紹介した条件に合致したレコードの削除と組み合わせることによって、より一層、活躍の幅を広げることができるのです。例えば、以下のような形で組み合わせることが可能です。
DELETE FROM comments WHERE name=’Taro’ LIMIT 2;
このSQL deleteステートメントを日本語に直すとすると、「commentsテーブルのnameカラムが『Taro』のレコードを2つ削除してください」となります。
無作為にテーブルレコードを一定数削除するよりも「この条件のレコードを〇〇個削除したい」というシチュエーションの方が多いですよね。そのような際には、指定した数の行(レコード)削除を駆使していきましょう。
まとめ
今回の記事ではSQL deleteの使用方法を徹底的に解説していきました。SQL文の中でも特に使用頻度の高いdeleteステートメントを駆使して、WEBアプリケーションを思ったように開発できるようにしていきましょう。
また今回ご紹介した方法以外にもdeleteステートメントにはさまざまな使い方があります。SQL文は使いこなすことができるようになると、データベースをフレキシブルに扱うことができるようになります。ぜひ積極的にリサーチし、delete文を使いこなせるようになりましょう。
CRUD機能というのは、データベース管理システムのことで、作成(Create)・読み取り(Read)・更新(Update)・削除(Delete)という4つの機能の頭文字をまとめた用語です。
今回の記事でご紹介するdeleteステートメントは、その名の通り、CRUDの「D」を担当しているSQL文です。