情報処理とは何から、データベースの基本的な話(情報処理試験のデータベーススペシャリスト程度の話まで)を書く、土日のシリーズ「Hello World程度のデータベース」です。
いま、SQLをやっています。
SQLは検索(select)、挿入(insert)、削除(delete)、更新(update)とあって、今回はDELETEです。
■削除DELETEの構文
テーブルにあるレコードを削除するには、
DELETE FROM テーブル名;
で削除できます。削除できますけど、これだと、全部のレコードを削除してしまいます。
ふつう、削除したいのは、なんか、特定の1レコード、あるいは複数レコードですので、これに条件がつくことが多いです。
条件をつけるには、
DELETE FROM テーブル名 WHERE 条件文;
となります。
たとえば、OUBO_TBLのOUBOIDが5のレコードを削除するには
DELETE FROM OUBO_TBL WHERE OUBOID=5;
と書きます。なお、Accessでは、これでも動きますが、一回保存して、開くと、
DELETE * FROM OUBO_TBL WHERE OUBOID=5;と書かれてしまいます。
この*に関しては、複数テーブルに関係あるのですが、あんまり使わないと思うので、
知りたい人は、
ここ http://dev.mysql.com/doc/refman/4.1/ja/delete.html
の下のほうにある複数テーブルの削除の説明を見てください。
■レコード全削除
上記で、全部のレコードを削除するには、
DELETE FROM テーブル名;
とかきましたけど、
TRUNCATE TABLE テーブル名;
でも、レコード全削除できます。この違いは、
http://dev.mysql.com/doc/refman/4.1/ja/truncate.html
を見てください。
なお、どちらも、成功時は、正常終了の値(0)が返るとおもいます。
削除した件数を返したい場合は、
DELETE FROM テーブル名 WHERE 絶対成立する条件;
と、「絶対成立する条件」を書きます。たとえば、1=1とか、1>0とか、なんでもいいです。
■レコード全削除と、テーブルごと削除
なお、DELETE , TRUNCATE TABLEは、レコードを全部削除するだけで、テーブル自体はのこります。だからそのあと、INSERTすれば、レコードは入ります。
そうではなく、テーブルごと削除したい場合は、
DROP TABLE テーブル名;
をつかいます。そうするると、テーブル定義ごとなくなってしまいます。つぎにINSERTしても、テーブルがないので、失敗します。
くわしくは、
ここ http://dev.mysql.com/doc/refman/4.1/ja/drop-table.html
なお、DROPは、TABLEだけではなく、DROP INDEXとかDROP DATABASEとか、ほかにも、なくしちゃうのに使います。
ということで、DELETEは、ここまで
![](https://mokano.main.jp/card/analsysimg.cgi?imgfname=gokusho.jpg&ID=bun070701)