矢沢久雄 グレープシティ アドバイザリースタッフ
今回のキーワード
・SELECT文
・LIKE演算子
・IS演算子
前回の連載で,取得(選択),挿入,更新,削除というデータベースの4つの基本操作が,それぞれSELECT,INSERT,UPDATE,DELETEというSQLの命令で実現されることを説明しました。今回は,Microsoft Accessを使って実際にSQL文を実行し,その結果を確認してみたいと思います。SQLの命令の中で,最も頻繁に使われるのは,何と言ってもSELECT文です。「SELECT文を制する者はSQLを制す!」と言っても過言ではないでしょう。SELECT文を使いこなすには,WHERE以降に置かれる検索条件の指定方法をマスターすることがポイントとなります。
AccessでSQL文を実行する方法
たぶん皆さんは,何らかの目的でAccessを使った経験があるでしょう。Accessでは,SQLを知らないユーザーであっても容易にデータベースを構築し利用できるように,あらゆる操作をビジュアルなツールで実現できるようになっています。ただし,Accessも立派なDBMSであり,直接SQL文を与えて操作することも可能なのです。実際にやってみましょう。図1●MeishiTblテーブル |
図2●SQL文を実行するための準備 |
図3●SQL文を入力するウインドウ |
図4●SQL文の実行結果 |
Accessに常時表示されている「Meisi:データベース」というタイトルのウインドウの左側で「クエリ」アイコンをクリックし,右側の選択肢にある「デザインビューでクエリを作成する」をダブルクリックしてください(図2[拡大表示])。これによって,「テーブルの表示」という小さなウインドウが開きますが,[閉じる]ボタンをクリックして閉じてしまいましょう。
「表示」メニューから「SQLビュー」を選択すると,「クエリ1:選択クエリ」という名前のテキスト・エディタのようなウインドウが表示されます。これで,準備完了です。このウインドウに任意のSQL文を入力し,「クエリ」メニューから「実行」を選択すれば,SQL文が実行されます。
ためしに,SELECT * FROM MeisiTbl;というSQL文を入力して,実行してみましょう(図3[拡大表示])。結果として取得されたデータは,同じウインドウに表形式で表示されます(図4[拡大表示])。ウインドウのタイトル・バーを右クリックして表示されるメニューから「SQLビュー」を選択すれば,元のSQL文の表示に戻すこともできます。
SELECT文の構文
前回の復習になりますが,SELECT文の基本構文は,以下のようになります。
SELECT 列名 FROM テーブル名 WHERE 検索条件; |
「テーブル名」には,取得したいデータが格納されたテーブルの名前を指定します。「列名」には,テーブル内の列の名前を指定します。WHERE以降には,特定の行だけを取得するための検索条件を指定します。WHERE以降はオプションであり,省略可能です。省略すると無条件検索すなわち「すべてのデータを取得せよ」ということになります。先ほど実行したSELECT * FROM MeisiTbl;は,無条件検索です。
複数の列名やテーブル名を指定する場合は,それらをカンマ(,)で区切ります。どのテーブルに属する列であるかを明示する場合は,列名に「テーブル名.列名」と指定します。具体例は,第4回でお見せします。
検索条件の指定
SELECT文のWHERE節では,「WHERE 列名 演算子 値」という書式で検索条件を指定します。使用できる演算子には,表1に示したものがあります。
|
|
具体例を示しましょう。以下は,MeisiTblテーブルからNenreiが40歳未満の人のShimeiとNenreiを取得するSQL文です。実行結果は,図5[拡大表示]のようになります。
SELECT Shimei,Nenrei FROM MeisiTbl WHERE Nenrei < 40; |
LIKE演算子
LIKE演算子は,部分的な一致で検索するものです。部分的な一致とは,例えば,氏名の中に '郎' という文字を含んでいる人を検索するような場合に使われます。この場合には,演算子の右側に指定される値に,任意の文字または文字列を表す記号である“ワイルド・カード”と呼ばれるものを挿入します。Accessでは,任意の文字をクエスチョン・マーク(?),任意の文字列をアスタリスク(*)で表します。これは,Windowsでファイル名を指定する時に使われるワイルド・カードと同じです。ただし他のDBMSでは“?”や“*”の代わりに,“_”や“%”を使う場合があるので注意してください。以下は,氏名の中に '郎' という文字を含んでいる人のShimeiを取得するSQL文です。実行結果は,「日経太郎」,「日経次郎」となります。
SELECT Shimei FROM MeisiTbl WHERE Shimei LIKE '*郎'; |
IS演算子
IS演算子は,列の値がヌル(空)すなわち未入力であるかどうかを調べるものです。以下のSQLは,Neireiが未入力の行をすべて取得するものです。SELECT * FROM MeishiTbl WHERE Nenrei IS NULL; |
NULLは,文字通りヌルを表しています。ヌルでないことを比較したい場合は,後で説明する論理演算子を使ってWHERE Nenrei IS NOT NULLのように指定します。
◎今回の復習
・SELECT文のWHERE節では「WHERE 列名 演算子 値」という書式で検索条件を指定する
・LIKE演算子は,部分的な一致で検索する
・IS演算子は,列の値がヌル(空)すなわち未入力であるかどうかを調べる