前回は、テーブルにあるデータの更新を行う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テーブルを対象に実行してみよう。
先に、今のテーブルの状態は以下のようになっているはず。
id | name |
---|---|
1 | 全行変更しました |
2 | 全行変更しました |
3 | 全行変更しました |
4 | 全行変更しました |
5 | 全行変更しました |
…このまま試してもいいが、ちょっとデータが分かりづらい。
というわけで、前回の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
さて、これでテーブルが以下の形に直ったはずだ。
id | name |
---|---|
1 | データ1 |
2 | データ2 |
3 | データ3 |
4 | データ4 |
5 | データ5 |
この状態で、今回のDELETE文を実行してみよう。
id列が5のデータを消してみる。
DELETE FROM access_test WHERE id = 5;
テーブル名はもちろんaccess_test、条件にはid = 5
と指定した。
これを実行すると、表の5行目にあるid列が5、name列が「データ5」の行が無くなる。
なお、削除のときはphpMyAdminで確認ポップアップが表示される。
条件等を再度確認して問題なければ、OKを押してしまおう。
そうすると、対象の行が削除され、以下の形になる。
id | name |
---|---|
1 | データ1 |
2 | データ2 |
3 | データ3 |
4 | データ4 |
これで、データの削除ができた。
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の内容もガンガン使うので、先に復習しておくといいだろう。
コメント