SQL Memo

::目次::

1. SQL 文の基本
2. CREATE TABLE, CREATE VIEW
3. SELECT
4. WHERE, 比較演算子
5. 論理演算子 AND, OR, NOT, (NULL)
6. あいまい検索 LIKE, IN, BETWEEN...AND...
7. リレーションシップ
8. 演算
9. SQL 言語
10. ホスト言語と SQL の連携

SQL 文の基本

  • SQL は非手続的言語.
  • SQL を扱う場合,対話型ツールを使うか,あるいは,ホスト言語と連携させる.
  • 予約語あり(INTO, SELECT, VALUES など)

CREATE TABLE, CREATE VIEW

「表」には実表,ビュー表という種類がある.

  • 実表:データベース内に物理的に存在する表のこと(CREATE TABLE により定義される)
  • ビュー表:仮想的な表(CREATE VIEW により定義される).ビュー表は実表をもとに 作成される.作成したビュー表からビュー表を作成することも可能. ビュー表は他の表から行や列を取り出したものを表として定義するもの. ビュー表は物理的に存在するわけではないが,実表と同様,データを 問い合わせる対象として使うことができる.

SELECT

SELECT 文:SQL を利用して表から列方向に値を取り出す(射影演算に対応).
SELECT 句と FROM 句という 2 つのまとまったつながりを持つフレームを 組み合わせることが多い.

  • 列を取り出す
  • 例:
    SELECT フランス;
    FROM 各国のデータ;
    
  • 別名を付けて列を取り出す(AS)
  • 例:
    SELECT フランス AS France;
    FROM 各国のデータ;
    
  • カンマで区切って複数の列を取り出す
  • 例:
    SELECT フランス, 日本;
    FROM 各国のデータ;
    
  • 全ての列を取り出す(*)
  • 例:
    SELECT *;
    FROM 各国のデータ;
    

WHERE, 比較演算子

WHERE 句は SELECT 文の中で一定の条件を与えて絞込み検索を行う.
WHERE 句は,SELECT 句,FROM 句の後に指定する.
例:

SELECT *;
FROM 各国のデータ;
WHERE 国名 = 'フランス';

比較演算子の種類

= , >, >=, <, <= は数学と同じ.
<> :左右の不一致

論理演算子 AND, OR, NOT, (NULL)

WHERE 句により複雑な条件を加える場合に用いる. AND, OR, NOT の3つ.

  • A AND B:AかつB
  • A OR B:AまたはB
  • NOT A:Aでない

また,値が入っていない場合は,IS NULL により指定できる(逆は,IS NOT NULL).


あいまい検索 LIKE, IN, BETWEEN...AND...

LIKE + ワイルドカードによる検索ができる. ワイルドカードは,% と _
例:

SELECT *;
FROM 各国のデータ;
WHERE 国名 LIKE %共和国;

% と _ の違い:

  • %:複数文字に対するワイルドカード
  • _:一文字に対応するワイルドカード
  • 例えば,%00, _00 と書いた場合,100ならば両方でヒットするが,1000ならば, 前者でしかヒットしない.

IN():括弧内にカンマで区切って指定した値のいずれかと一致する値を持つ行を 絞り込む.

例:

SELECT *;
FROM 各国のデータ;
WHERE 人口 IN(100000,500000);

BETWEEN...AND...:特定の範囲の値を指定して絞り込む.

例:

SELECT *;
FROM 各国のデータ;
WHERE 人口 BETWEEN 100000 AND 500000;

リレーションシップ

リレーショナルデータベースにおいて表同士がもつ関係のこと.

  • 外部キー:リレーションをもつ2つの列のうち,主キーでないほうの列
  • 参照整合性:外部キーを設定することで,表同士で矛盾のない値を保つこと

演算

リレーショナルデータモデルの演算としては,和・差・積・直積・射影・選択・ 結合・商がある.

  • 和:重複行を除く2つの表にあるすべての行を取り出す演算.
  • 差:2つの表のどちらか一方だけにある行を取り出す演算.
  • 積:2つの表に共通する行を取り出す演算.
  • 直積:2つの表の行・列を全て組み合わせる演算. 取り出した結果の表の行数は2表の行数を掛け合わせた数,列数は 2表の列を足し合わせた数となる.
  • 射影:表中の列を取り出す演算.
  • 選択:表中の行を取り出す演算.
  • 結合:定義域が等しい列を介して2つの表をつなぎ合わせる演算.
  • 商:割るほうの表の行がすべて含まれる行を,もう一方の表から選び出し, 割るほうの表の列を除いたもの.

SQL 言語

3つの役割

  • DML (Data Manipulation Languate):データ操作言語
  • DDL (Data Definition Language):データ定義言語
  • DCL (Data Control Languate):データ制御言語

主な SQL の機能

  • DML (Data Manipulation Languate)
  • SELECT:行の問い合わせ
    INSERT:行の挿入
    UPDATE:行の更新
    DELETE:行の削除
    
  • DDL (Data Definition Language)
  • CREATE:実表・ビュー表などの定義
    ALTER:実表・列などの変更
    DROP:実表・ビュー表・列などの削除
    
  • DCL (Data Control Languate)
  • GRANT:権限の付与
    REVOKE:権限の削除
    COMMIT:コミット
    ROLLBACK:ロールバック
    

ホスト言語と SQL の連携

SQL 言語と連携させるプログラミング言語をホスト言語という. その方法としては,次の3つ.

  • モジュール呼び出し:SQL 文で記述されたモジュールを他の言語から呼び出して使う方法.
  • 埋め込み SQL:他の言語のコードの中に SQL 文をそのまま埋め込む方法
  • 動的 SQL:アプリケーションを実行する際に SQL 文を生成する方法.

Home

Tips

ページのトップへ戻る