Mail
 ナビゲーション リンクのスキップ

4.SQL

★SQLとは?

リレーショナルデータベースの特徴の一つに、操作するための言語、SQLを備えていることがあります。
リレーショナルデータベースの関連性を持ったテーブルを操作する言語、それがSQLです。
SQLの規格は世界的に統一されていますが、製品によって微妙に違います。
SQLは大きく二つに分かれます。

★DDL

例えばテーブルを作成する。
逆にテーブルを削除する。
キーとなるカラムを指定する。
テーブルどうしの関連性を指定する。
上記のようなデータベースの構造を作るためのSQLです。

Accessのような個人用のデータベースを使う場合は、覚える必要はほとんどありません。
Visualツールが用意されていますので、SQLを知らなくても、データベースの構造を作成することができます。

★DML

テーブルにデータを設定する。
逆にデータを削除する。
データを更新する。
検索する。
などのテーブルのデータを操作するためのSQLです。

こちらも個人用のデータベースを使う場合は、ご存じなくても何とかなります。
特にデータの挿入/削除/更新などは、ご存じなくても問題ないと思います。
ただし検索用のSQLは知っておいた方が、何かと都合が良いでしょう。
Accessには、Visualツールがあって、検索用のSQLを自動的に生成してくれますが、なかなか自分の思い通りに動かないことが多く、そのときにSQLを知っていれば、生成されたSQLをチェックして、どこがまずいか問題点を見つけだすことが出来ます。
検索時のSQLの基本型はこんな感じです。

SELECT 項目名
FROM テーブル名
WHERE 条件

例えば「CDテーブル」から「CDID」が1番の「CD名」検索したいとします。
そのときのSQLは

SELECT CD名
FROM CDテーブル
WHERE CDID = 1

となります。
SELECTで取ってきたい項目は、1個だけでなく、複数でも良いですし、FROMで指定するテーブルも複数が可能です。
上記のような簡単なものは、ほとんど作られることはないですし、問題にならないと思います。

SELECT 曲テーブル.曲ID, 曲テーブル.曲名, 曲テーブル.作曲年月日, 曲テーブル.作曲番号, 作曲者テーブル.作曲家姓, 作曲者テーブル.作曲家名, 国テーブル.国名, 作曲者テーブル.生年月日, 作曲者テーブル.没年月日
FROM (国テーブル INNER JOIN 作曲者テーブル ON 国テーブル.国ID = 作曲者テーブル.国ID) INNER JOIN 曲テーブル ON 作曲者テーブル.作曲者ID = 曲テーブル.作曲者ID
WHERE (((曲テーブル.曲名)='交響曲第9番') AND ((作曲者テーブル.作曲家姓)='ベートーベン'))

上記のSQLは、ベートーベン交響曲第9番の情報を、複数のテーブルを結合して持ってきています。

SQLの詳細については、たくさん本も出ていますし、丁寧に解説されている、ホームページもあります(検索サイトで、"SQL"で探してみてください)ので、そちらをご参照ください。