| |
サンプルとして、『学校データ』『学科データ』の2つのリンクテーブルを作成した。この2つのテーブルを
学科コードをキーとして結合し、下のような結合データ表を作成してみる。![]() ![]() | |
結合データ表![]()
| |
(1)Accessでクエリ作成してみる Accessで、クエリを作成する。2つのテーブルを追加すると、図のように学科コードが同じ列名なので、 自動的にリレーションされる。この時のSQL文をSQLビューで表示させると次のように表示される。 SELECT 学校データ.学校コード, 学校データ.学校名, 学科データ.学科名 FROM 学校データ INNER JOIN 学科データ ON 学校データ.学科コード = 学科データ.学科コード; ![]() | |
(2)一般的なselect文を直接入力してみる SELECT [学校データ].[学校コード], [学校データ].[学校名], [学科データ].[学科名] FROM 学校データ, 学科データ WHERE [学校データ].[学科コード]=[学科データ].[学科コード]; ([ ]については、入力していないが、自動的にAccessがつけてしまったものです。) ![]() MS-AccessのSQLはJetのSQLが生成され、それがODBCを介することで、PostgreSQL用のSQL文に書き換えられるため、 多少、構文が違っても同じ結果を得ることができる。 |
|
(3)Accessで外部結合をする PostgreSQL7.1から実装された、外部結合(outer join)をAccessでやってみる。テーブルのリレーションラインを ダブルクリックすると、下記のような画面が現れ、3を指定する。『学校データ』テーブルにはない、総合学科も 含めて、結合されたクエリが表示される。 SELECT 学校データ.学校コード, 学校データ.学校名, 学科データ.学科名 FROM 学校データ RIGHT JOIN 学科データ ON 学校データ.学科コード = 学科データ.学科コード; outer joinは、結合をする場合に、一方のテーブルにないデータも表示させる場合に 使う。この場合には、右(right)の『学科データ』テーブルにあるすべてのデータを表示させており、『学校データ』 テーブルには、総合学科がないが、結合表には表示される。当然、学校コードと学校名は、null値になる。 左のテーブルのすべてデータを表示したいときには、left (outer) joinとする。 outerは、省略可能である。oracleでは、select 文に(+)をつけて、outer joinを現す。 ![]() ![]() Accessは、SQL文を意識せずに簡単にデータベースの構築ができ、RDBMSサーバがなくても利用できる。 Accessを使って、データベースの演習を実施する場合には、このように、裏でSQL文が動いていることを教え ることも良いのではないだろうか。また、SQL文を実際に書かせることも良い演習になると思う。 |
HOMEへ | データベーストップへ | <<<AccessとPostgreSQLへ戻る |