【PHP講座20】SQL編7 -データの削除-

PHP講座

前回は、テーブルにあるデータの更新を行うUPDATE文を解説した。

条件を誤ると不必要な変更まで行われてしまうので、気を付けておこう。

以下がその記事だ。

【PHP講座19】SQL編6 -データの更新- | Shino’s Mind Archive

さて、今回はSQL編最後

残るは、データの削除を行うDELETE文だ。

とはいえ、ここまでの内容が理解できていれば、すんなり理解できると思う。

UPDATE文と同様、気を付けるべき点もあるので、そこも見ていこう。

スポンサーリンク

データの削除を行うDELETE文

ここまで、欲しい情報を欲しい形で表示するSELECT文新たにデータを1行追加するINSERT文元々あるデータを更新するUPDATE文を解説してきた。

最後に、既存のデータを削除するDELETE文を解説していこう。

DELETE文の構文

先に、構文を見ていこう。

DELETE FROM テーブル名 WHERE 条件;

この形だ。

テーブル名に対象のテーブル名を書き、WHEREの後に条件を書く。

そうすると、その条件に合致した行が、そのテーブルから削除される、というわけだ。

WHERE句に書ける条件は、SELECT文のときと同じ

つまり、ある列がこの値に等しいといった列名=値や、以上・以下などが書ける。

基本的な書き方はこれだけ。

多分、これまでのどの構文よりも簡単だと思う。

DELETE文具体例

では、具体例を見ていこう。

前回のUPDATE文最後に使ったaccess_testテーブルを対象に実行してみよう。

先に、今のテーブルの状態は以下のようになっているはず。

idname
1全行変更しました
2全行変更しました
3全行変更しました
4全行変更しました
5全行変更しました
access_testテーブル

…このまま試してもいいが、ちょっとデータが分かりづらい。

というわけで、前回のUPDATE文を使って、データの中身を元に戻しておこう。

戻す形は、idが1なら「データ1」、idが2なら「データ2」…という形だ。

戻せただろうか?

分からない、という方は以下の5文を実行して戻しておこう。

同時に、前回の記事を読み直して、復習をしておこう。

UPDATE access_test SET name = 'データ1' WHERE id = 1;
UPDATE access_test SET name = 'データ2' WHERE id = 2;
UPDATE access_test SET name = 'データ3' WHERE id = 3;
UPDATE access_test SET name = 'データ4' WHERE id = 4;
UPDATE access_test SET name = 'データ5' WHERE id = 5;

念のため、前回の記事を再掲しておく。

【PHP講座19】SQL編6 -データの更新- | Shino’s Mind Archive

さて、これでテーブルが以下の形に直ったはずだ。

idname
1データ1
2データ2
3データ3
4データ4
5データ5
access_testテーブル修正後

この状態で、今回のDELETE文を実行してみよう。

id列が5のデータを消してみる。

DELETE FROM access_test WHERE id = 5;

テーブル名はもちろんaccess_test、条件にはid = 5と指定した。

これを実行すると、表の5行目にあるid列が5、name列が「データ5」の行が無くなる。

なお、削除のときはphpMyAdminで確認ポップアップが表示される

条件等を再度確認して問題なければ、OKを押してしまおう。

そうすると、対象の行が削除され、以下の形になる。

idname
1データ1
2データ2
3データ3
4データ4
access_testテーブル(DELETE実行後)

これで、データの削除ができた。

DELETE文の注意点

前回のUPDATE文と同じ注意点がある。

まず、WHERE句で指定した条件に合致した行全てが削除されるということ。

例えば、以下のSQL。

DELETE FROM access_test WHERE id >= 3;

今、WHERE句にid >= 3と指定されている。

つまり、id列が3以上の行全てが合致するので、下2行が消えてしまうということだ。

もう一つ、これもUPDATE文と同様だが、WHERE句自体の省略もできる

ただ、そうするとそのテーブル内のデータ全てを削除することになる。

例えば、以下のような形。

DELETE FROM access_test;

こうすると、access_testテーブル内のデータ全てが綺麗さっぱり消えてしまう

これらも意図的であればいいのだが、そもそも全行削除はする機会がほとんどないと思う。

そのため、基本的には必ず条件をつけるようにしておこう。

また、その際の条件で何が合致するかにも気を付けること

これで間違って消してしまうと非常に厄介なことになるので、UPDATE文以上に細心の注意を払うようにしよう。

おわりに

今回は、テーブル内のデータを行単位で削除するDELETE文を解説した。

データベースに限った話ではないが、データの削除というのはミスが命取りになる作業だ

気を付けすぎるということがないので、これでもかというレベルで確認をしておこう

さて、ちょっと長くなってしまったが、SQLの解説はいったん終わりにしようと思う。

まだできることは色々とあるのだが、そもそもPHPからデータベースを呼び出す際にほぼ使うだろうという内容を解説してきている。

というわけで、次回からようやくPHP側に戻って、本格的なMySQLへのアクセスをしてみよう。

今回まで解説してきたSQLの知識と、その前にやっていたPHPの内容もガンガン使うので、先に復習しておくといいだろう。

コメント

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