矢沢久雄 グレープシティ アドバイザリースタッフ
今回のキーワード
・INSERT INTO文
・UPDATE文
・DELETE FROM文
今回は,データベースへの挿入,更新,削除を行うSQL命令と,SQLが提供する関数,さらに複数テーブルで構成されるデータベースでテーブルを結合する方法を説明しましょう。前回と同様に,Microsoft Accessを使って,実際にSQL文を実行してみます。百聞は一見にしかずですから,皆さんもお時間があればぜひ試してみてください。前半で使用するデータベースは,前回と同じMeisiTblテーブルだけを持ったMeisi.mdbファイルです。
図1●SQL文実行後は,追加された行だけが表示される |
挿入を行うINSERT INTO文
あらかじめ注意しておきますが,データベースへの挿入,更新,削除といった操作は,行(レコード)単位で行われます。特定の列(フィールド)だけを操作することはできません。例えば,「日経太郎,東京都,45」というレコードのNenreiフィールド(45)だけを削除することはできません。これは,考えてみれば当然のことでしょう。テーブルの構造がおかしくなってしまうからです。まず,データの挿入をやってみましょう。行を挿入することになります。そのためのSQL命令は,INSERT INTOです。以下は,MeisiTblテーブルに「日経三郎,千葉県,25」という行を挿入するSQL文です(図1[拡大表示])。
INSERT INTO MeisiTbl VALUES('日経三郎', '千葉県', 25); |
図2●新たな行が挿入されたMeisiTblテーブル |
SQL実行後のウインドウのタイトルは,「クエリ1:追加クエリ」となり,新たに追加された行だけが表示されています。なぜだか,分かりますか?INSERT INTOは,行を挿入する命令であって,すべての行を取得する命令ではないからです。引き続きSelect * FROM MeisiTbl;を実行すれば,行数が4となったテーブル全体の内容を確認できます(図2[拡大表示])。
更新を行うUPDATE文
図3●Accessが表示する警告メッセージ |
UPDATE MeisiTbl SET Nenrei = 46 WHERE Shimei = '日経太郎'; |
SETの後に「更新する列名=新しい値」を指定し,WHEREの後に「日経太郎」の行を特定するための検索条件を指定します。したがって,複数の行がヒットする検索条件を指定すれば,複数の列をまとめて更新できます。次のSQL文は,Jushoが「東京都」である行のJushoを「Tokyo」に更新します。更新の結果は,Select * FROM MeisiTbl;を実行して確認してください。
UPDATE MeisiTbl SET Jusho = 'Tokyo' WHERE Jusho = '東京都'; |
削除を行うDELETE FROM文
行の削除は,DELETE FROMで行います。更新と同様に,削除の場合も検索条件に一致する複数の行をまとめて削除できます。以下は,MeisiTblテーブルからNenreiが25歳以下の行をすべて削除するSQL文です。ここでは,25歳の「日経三郎」の行だけが削除されます。DELETE FROM MeisiTbl WHERE Nenrei <= 25; |
この場合も,SQL文の実行の前にAccessの警告メッセージが表示されるので,[はい]ボタンをクリックしてください。
SQLの命令がINSERT INTOやDELETE FROMのように2単語になっているものがあるのは,実際の英語の表現に合わせているからです。単にINSERT MeisiTblやDELETE MeisiTblという表現では,テーブル全体が挿入や削除されるようなイメージがあります。コンピュータにかかわっていると,つくづく英語が重要だと感じます。
◎今回の復習
・データの挿入にはINSERT INTOを使う
・データの更新にはUPDATEを使う
・データの削除にはDELETEを使う