法政大学国際文化学部

情報システム概論

担当 重定 如彦

2004126

 

11回 データベース(その2)

1.      データの検索、置換、並び替え

 まず先週作成したstudent.mdbを開いてください。データベースウィンドウの左のオブジェクトの中から「テーブル」を選択し、右に表示される「生徒表」をクリックすると先週作成し生徒表のテーブルが表示されるようになるはずです。

Ø         データの検索 その1 (検索メニュー)

 データを検索するにはまず、検索したいフィールド名をクリックしてその列を選択状態にして下さい。次に、メニューの「編集」→「検索」または、ツールバーの「検索」ボタンをクリックして下さい。検索条件を設定するためのパネルが表示されるので、値を設定し、「次を検索ボタン」をクリックすると、条件を満たすレコードが選択状態になります。

パネルの中の「置換」タブをクリックすることで、データの置換を行うことも可能です。この場合、置換後の文字列を設定し、検索を行いながら置換ボタンをクリックすることで、検索したデータを置換後の文字列のデータに置換することが可能です。

 それでは、検索機能を使って以下の操作を行って下さい。

·           年齢が19才の生徒を検索する

·           性別が男の生徒を検索する

·           学年が1の生徒の学年を3に置換する

·           学年が3の生徒の学年を1に置換する(元に戻す)

Ø         データの検索 その2(選択フィルタ)

 先ほどの方法では検索結果は、一番左の列の三角印で表示されましたが、選択フィルタを使って、検索条件に一致するレコードのみを表示することが可能です。選択フィルタを使うには、検索したいデータが格納されているセルをクリックし、メニューの「レコード」→「フィルタ」→「選択フィルタ」または、ツールバーの「選択フィルタ」ボタンをクリックして下さい。この操作を行うと、カーソルのある列のフィールドの中で、カーソルの存在するセルのデータと同じデータが格納されたレコードのみがテーブルに表示されるようになります。例えば、法政 太郎の性別のセル(中身は「男」)をクリックし、「選択フィルタ」ボタンをクリックすると、性別が「男」のレコードのみが表示されるようになります。なお、選択フィルタを実行して表示されなくなったレコードは、画面に表示されなくなっただけで、データがテーブルからなくなったわけではありません。メニューの「フィルタ」→「フィルタ/並べ替えの解除」、又はツールバーの「フィルタの解除」ボタンをクリックすることで、選択フィルタを解除し、元の表示に戻すことができます。

Ø         データの検索 その3(部分一致)

 選択フィルタを実行する際に、セルの中の文字の一部分を選択することで、そのフィールドで、選択された文字が存在するレコードだけを表示することができます。このように、入力された文字の一部分だけを使って検索することを、部分一致検索、それに対し先ほど説明した文字全体を使って検索することを完全一致検索と呼びます。

 例えば、法政 太郎の「郎」の文字を選択して「選択フィルタ」ボタンをクリックして下さい。名前の中に「郎」の文字を持つ、法政 太郎と市ヶ谷 次郎の2人のレコードだけが検索され、画面に表示されるようになるはずです。

Ø         データの検索 その4(絞込み)

 選択フィルタを使って表示されたテーブルで、更に選択フィルタを使うことができます。先ほどのテーブルに、それぞれのフィールドが、「国際 学」「21」「男」「F3456789」「3」「K」という新しいレコードを追加し、選択フィルタを使って性別が「男」であるレコードだけを表示して下さい。「法政 太郎」と「市ヶ谷 次郎」と「国際 学」の3つのレコードが表示されるようになるはずです。この状態で、クラスが「K」の生徒を選択フィルタを使って表示して下さい。すると「性別」が「男」で、なおかつ「クラス」が「K」である「市ヶ谷 次郎」と「国際 学」の2つのレコードだけが表示されるようになります。

 このように、選択フィルタを複数回適用することで、複数の条件を満たすレコードだけを絞り込んで表示することが可能になります。

Ø        データの検索 その5(フォームフィルタ)

 フォームフィルタを使ってこれまでより複雑な検索を行うことができます。フォームフィルタを使うには、メニューの「レコード」→「フィルタ」→「フォームフィルタ」を実行するか、ツールバーの「フォームフィルタボタン」をクリックします。フォームフィルタを実行すると、テーブルからレコードの表示が消え、フォームフィルタの検索条件を設定するための、以下のような画面が表示されます。

 表のセルをクリックし、表示される▼ボタンをクリックすると、そのフィールドに関する検索条件を設定するためのメニューが表示されるので、メニューから選択し、検索条件を設定して下さい。すべての検索条件の設定を完了後に、メニューの「フィルタ」→「フィルタ/並べ替えの実行」または、ツールバーの「フィルタの実行」ボタンをクリックすると、設定した全ての検索条件を満たすレコードのみが表示されるようになります。なお、検索条件をクリアするには、ツールバーの「グリッドのクリア」ボタンをクリックして下さい。また、フォームフィルタによる検索を解除するには、選択フィルタと同様に「フィルタの解除」ボタンをクリックして下さい。
フォームフィルタでは以下のような特殊な検索を行うことも可能です。
·           検索条件の部分に >= 20 のような不等式をキーボードから記述することで、フィールドの中身が20以上のレコードを検索するといった検索を行うことができる。
·           検索条件の部分に *郎 のように、半角の*記号と検索したい文字を並べて入力することで、部分一致検索を行うことが出来る。なお、入力後に自動的にセルの内容が
Like
“*郎“ のように変化するが、それについては気にしなくても良い。
 それではフォームフィルタを使って以下の検索を行って下さい。
·           年齢のフィールドが19のレコードを表示する
·           性別が「男」で年齢が20以上のレコードを表示する
·           名前に「郎」の文字がはいっていて、クラスがKのレコードを表示する。

Ø         データの並び替え

 フィールド名をクリックし、ツールバーの「昇順で並び替え」または「降順で並べ替え」ボタンをクリックすることで、指定したフィールドのデータを使って、レコードを並び替えることができます。
 各自、年齢順、学年順などで並べ替えを行って下さい。

2.      ルックアップウィザード その1

 データベースのフィールドのデータ型で「ルックアップウィザード」を指定することで、フィールド内のデータをメニューから選んで入力することができるようにすることができます。まず、デザインビューを表示し、性別のデータ型のメニューから「ルックアップウィザード」を実行し、下図のようなパネルを表示して下さい。

 

次に、下の「表示する値をここで指定する」を選択して次へボタンをクリックして下さい。フィールド内に入れることが可能なデータの一覧を入力するパネルが表示されるので、下図のように「男」と「女」を入力し、次へボタンをクリックして下さい。最後にラベルを指定するパネルが表示されますが、ここはあらかじめ「性別」という文字列がテキストボックスに入っているはずなのでそのまま「完了」ボタンをクリックして下さい。


 これで設定が完了しますので、データを保存し、データシートビューを表示し、性別のフィールドをクリックしてみてください。フィールドの右にメニューを表示するための▼ボタンが表示され、それをクリックすると先ほど設定した「男」と「女」をメニューから選択することができるようになっているはずです。なお、ルックアップウィザードは先にデータの型を指定してから使用する必要がある点に注意して下さい。

3.      複数のテーブル

Accessでは、一つのデータベースに複数のテーブルを作成することが可能です。例えば先ほどのデータベースに、授業に関するデータを格納する為のテーブルを作成してみましょう。2つ目以降のテーブルの作成方法は、最初のテーブルの作成方法と全く同じです。データベースウィンドウを開き、「デザインビューでテーブルを作成する」ボタンをクリックして、以下のようなフィールドを作成して下さい。

また、上記のデータを入力後、以下の設定を行って下さい。

·           科目IDを主キーフィールドに設定する

·           ルックアップウィザードを使って以下のフィールドの項目を設定する

Ø         セメスター:「前期」、「後期」

Ø         曜日:「月」、「火」、「水」、「木」、「金」、「土」

Ø         時限:「1」、「2」、「3」、「4」、「5」、「6」、「7」

設定を行った後、保存を行い、テーブルの名前を「科目表」という名前にして下さい。次に、データシートビューを表示し、以下の図のようなテーブルを作成して下さい。

注:主キーフィールドとオートナンバー型

実は主キーフィールドは、主キーフィールドのデータを使ってテーブルのデータを一意に特定することができる必要があります。具体的にはテーブル内ですべてのレコードの主キーフィールドは異なった内容でなければならないということです。例えば生徒表に名前が「法政 太郎」というレコードを追加してみてください。エラーが表示されるはずです。

生徒表の場合、名前を主キーフィールドに設定していましたが、こうしてしまうと同姓同名の学生を入力できないという問題が発生します。そこで一般的にはIDという名前でオートナンバー型のフィールドを作成し、それを主キーフィールドにします。オートナンバー型とはテーブルにレコードを入力する度に自動的に(必ず他のレコードと異なった)数字が割り振られるデータ型のことです。なお、生徒表の場合、同じ学生証番号を持つ人は1人しかいないため、学生証番号を主キーフィールドにするという方法も考えられます。

 

 

科目IDの部分は「データ型」を「オートナンバー型」に設定したので、手で入力しなくても勝手に数字が入力されます。

複数のテーブルを作成した場合、データベースウィンドウの左の「テーブル」を選択し、右に表示されるテーブル名をダブルクリックすることで任意のテーブルのウィンドウを切り替えて表示することができます。

4.      ルックアップウィザード その2(テーブルの連携)

テーブルのフィールドの中の項目を、他のテーブルの中のフィールドのデータの中から選択して入力することができます。これを行うにはルックアップウィザードを使用します。

まず、生徒表のウィンドウを開き(ウィンドウの場所がわからない場合はデータベースウィンドウの「生徒表」をダブルクリックして下さい)、デザインシートビューを表示し、以下の図のように「受講科目1」というフィールドを追加して下さい。

次に、受講科目のデータ型のメニューからルックアップウィザードを選択し、今度は「テーブルまたはクエリの値をルックアップ列に表示する」を選択して次へボタンをクリックし、以下の手順で設定を行って下さい。

·           どのテーブルのデータを使用するかを選択するパネルが表示されるので、「科目表」を選択し、次へボタンをクリックする。

·           どのフィールドのデータを使用するかを選択するパネルが表示されるので、左の「選択可能なフィールド」から「科目名」、「セメスター」、「曜日」、「時限」、「担当講師」を選択し、「>」ボタンをクリックして「選択したフィールド」に移動して下さい。

·           次へボタンをクリックすると、表示する列の幅を選択するパネルが表示されます。それぞれの列の右端でダブルクリックを行うと列幅が自動で調整されます。調整が終わったら、完了ボタンをクリックして下さい。この時「キー列を表示しない(推奨)」というボタンが表示される場合があります。これは主キーフィールドにオートナンバー型のデータを設定した場合にチェックをONにすると良いでしょう。これは、オートナンバー型のデータを表示しても数字が表示されるだけで却って意味がわかりにくくなるためです。それ以外の場合はOFFにすると良いでしょう。

 なお、受講科目1のデータ型が「数値型」になっているのは、参照したテーブル(科目表)の主キーフィールドのデータ型を使わなければならないという決まりがあるためです。

 これで設定は終了です。データシートビューを表示し、新しく作成した「受講科目1」の部分をクリックし、▼ボタンをクリックしてメニューを表示してみて下さい(図)。

 

このように、データベースでは、複数のテーブルの中のデータをお互いに連携して利用することが可能です。この例では、選択したフィールドに複数の項目を設定することで、上記の図のように、メニューには複数のフィールドのデータが一覧で表示されます。このように設定した場合でも、メニューから選択した結果、「受講科目1」のフィールド内には一番左の項目しかデータが表示されない点に注意が必要です

5.       クエリ その1

クエリとは、データベースのデータの中から特定のフィールドを抽出(ピックアップ)して作成した表のことです。データベースのテーブルには一般的に数多くのフィールドが設定されますが、データベースのデータを利用する際には必ずしも全てのフィールドのデータが必要なわけではありません。クエリを使うことで用途に応じて必要なデータだけを表示する表を作成することが可能です。

クエリを作成するには、データベースウィンドウの左で「クエリ」をクリックし、右の「デザインビューでクエリを作成する」をクリックして下さい。まず、下図のように、表示するデータが格納されたテーブルを選択するためのパネルが表示されます。

 

 

このパネルでテーブルを選択し、追加ボタンをクリックするとそのテーブルがクエリのデザインビューに追加されます。ここでは、「生徒表」を追加し、「閉じる」ボタンをクリックして下さい。下図のように、上部に生徒表のフィールド名の一覧が追加されます。

 

ウィンドウの下部は、クエリで表示するフィールドを編集する部分です。クエリで表示するフィールドを設定するには以下のいずれかの操作を行って下さい。

·           上部のテーブルのフィールド名の一覧を表示しているウィンドウから、クエリに追加したいフィールドを選択し、ダブルクリックする。

·           下部の「フィールド」及び「テーブル」をクリックし、表示するフィールドの名前と、そのフィールドを持つテーブルをメニューから選択する。


 下部の残りの行は以下の意味を持ちます。

Ø         並べ替え:クエリの表示の順番を、そのフィールドのデータを使って並べ替えます。

Ø         表示:この部分のチェックをOFFにするとそのフィールドが表示されなくなります。

Ø         抽出条件:この部分に条件を設定することでその条件を満たすデータのみを抽出して表示することが可能です。記述の方法は、フォームフィルタと同じです。

Ø         または:この部分に抽出条件を記述することで、抽出条件を複数設定することができます。「または」が示すとおり、いずれかの条件が満たされていれば表示が行われます。

 クエリのデザインビューで「名前」、「学年」「受講科目1」を設定して下さい。設定が出来たら、テーブルの場合と同様に保存し、クエリの名前を付けて下さい。今回はそのまま「クエリ1」という名前で保存して下さい。クエリのデータを表示するには、テーブルの場合と同様にデータシートビューを表示すればOKです。下の図のように、設定したフィールドで、データが学年の昇順で並べ替えられたクエリが表示されるはずです。

次に、デザインシートビュー表示し、学年の抽出条件の部分に「<=2」を入力し、1、2年生だけをデータシートビューで表示するようにしてみて下さい(後で元に戻すこと)。

 クエリはデータベース内の必要なデータだけを抽出して表示する為に使うのが一般的であり、テーブルと異なりデータを入力する為には通常使用しません。クエリを使ってテーブルにデータを入力することはやろうと思えば可能ですが、データベース内のデータの整合性がとれなくなってしまう可能性があるので慣れないうちは行わないほうが無難です。

 

6.       課題

 前回の課題のbaseball.mdbを開き以下の操作を行い、課題のメールに添付して送ること。
l         http://sports.yahoo.co.jp/baseball/cl/standings.htmlのページをみて今年度のセ・リーグの勝敗表のテーブルを追加せよ。なお、テーブルのフィールドとして「チームID」、「チーム名」、「試合数」、「勝数」、「敗数」、「引分数」、「勝率」、「打率」、「防御率」の9項目を設定すること。
l         「チームID」のデータ型にはオートナンバー型を設定し、「チームID」を主キーフィールドに設定すること。また、勝率、打率、防御率は数値型を設定し、設定時に下部の「フィールドサイズ」の項目を「単精度浮動少数点型」にすること。
l         「打撃成績」のテーブルのデザインビューウィンドウを開き、「チーム」フィールドのデータ型のルックアップウィザードを選択し、「チーム表」のテーブルの中から「チームID」、「チーム名」、「勝数」、「負数」、「引分数」、「勝率」を選び設定すること。なお、ルックアップウィザードで列の幅を指定する際に、「キー列を表示しない」のチェックをONにすること。これを行わないと主キーレコードである「チームID」の数字が表示されてしまう。
l         「チーム表」の中の「チーム名」、「勝率」、「打率」、「防御率」の4つのフィールドのみを表示するクエリを作成せよ。なお、作成したクエリの名前は「クエリ1」のままで良い。また、上記のクエリをデザインビューを使って打率の高い順に表示するように設定せよ。
l         「打撃成績」の中の「選手名」、「チーム名」、「打率」、「本塁打」の4つのフィールドのみを表示するクエリを作成せよ。なお、作成したクエリの名前は「クエリ2」とすること。また、上記のクエリをデザインビューを使って本塁打の多い順に表示するように設定せよ。
注:クエリなどの中身をデータシートビューで表示しようとした時に、エラーパネルが表示されてうまく表示できない場合は、他のテーブルやクエリのウィンドウを全て閉じてから表示すること。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
出席、課題のメールはta04k026@edu.i.hosei.ac.jpにお願いします。

質問のメールなどは、sigesada@edu.i.hosei.ac.jpまでお願いします。

授業の資料の最新版はhttp://www.edu.i.hosei.ac.jp/~sigesada/にあります。