AccessのSQL文を見てみよう
サンプルとして、『学校データ』『学科データ』の2つのリンクテーブルを作成した。この2つのテーブルを 学科コードをキーとして結合し、下のような結合データ表を作成してみる。
       
結合データ表

AccessでSQL文の表示

SQL文を表示したいときは、
図のようにツールバーの左をクリックし、
SQLビューを指示すると、SQL文が

表示される。
(1)Accessでクエリ作成してみる
Accessで、クエリを作成する。2つのテーブルを追加すると、図のように学科コードが同じ列名なので、 自動的にリレーションされる。この時のSQL文をSQLビューで表示させると次のように表示される。

SELECT 学校データ.学校コード, 学校データ.学校名, 学科データ.学科名 FROM 学校データ INNER JOIN 学科データ ON 学校データ.学科コード = 学科データ.学科コード;



(2)一般的なselect文を直接入力してみる
SELECT [学校データ].[学校コード], [学校データ].[学校名], [学科データ].[学科名] FROM 学校データ, 学科データ WHERE [学校データ].[学科コード]=[学科データ].[学科コード];
([ ]については、入力していないが、自動的にAccessがつけてしまったものです。)


一般的な内部結合には、PostgreSQLでのSQL文は「select〜from〜where〜」を使う場合が多い。当然、Accessの クエリもそのようなSQL文を作成していると思ったら、「inner join」を使っていた。(1)(2)も結果の出力は、 上の図のように同じ結合データ表であるが、デザインビューは、違っている。(2)の場合は、リレーションの線がなくなり、 抽出条件で、学科コードの関係を現している。「inner join」を使った方が、条件設定をした場合に、where以降が 見やすくなり、処理速度も速くなるようである。
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へ戻る