intro to Oracle DB 3

§5 SQLの基礎知識

SQLのコマンド文は次に分かれる

  • DML(Data Manipulation Language):データ操作言語
    • SELECT
      格納されている行を検索する
    • INSERT
      新たに行を追加する
    • UPDATE
      格納されている行を変更する
    • DELETE
      格納されている行を削除する
  • DCL(Data Control Language):データ制御言語
    • COMMIT
      DML操作の処理を確定する
    • ROLLBACK
      DML操作の処理を取り消す
  • DDL(Data Definition Language):データ定義言語
    • CREATE
      テーブルや索引など新しいオブジェクトを作成する
    • ALTER
      既存のテーブルや索引などの定義内容を変更する
    • DROP
      既存のテーブルや索引などのオブジェクトを削除する

コマンドは大文字小文字を区別しない.列名やテーブル名についても同様.

§6 SELECT文

基本構文は

SELECT <列名> FROM <テーブル名>
  [ WHERE <検索条件> ]
  [ ORDER BY <並べ替え条件> ]

列名・テーブル名は必須.全ての列を取得するにはアスタリスクを用いる.

また,WHERE句では次の検索条件が使える

  • 等価条件検索
    WHERE <列名> = <絞り込む列値>

    文法を確かめたいなどで,全てを表示したい際には

    WHERE 1 = 1

    がおすすめ

  • 大なり小なり条件検索
    WHERE <列名> >= <絞り込む列値>

    のように検索する.比較演算子はC言語等と同様に(不等号)(等号)の順.

  • 曖昧条件検索
    _…1文字のワイルドカード(正規表現の .)
    %…n文字(n>=0)のワイルドカード(正規表現の *)
    を駆使して,次の構文に従う

    WHERE <列名> LIKE '<検索文字列>'

    文法を確かめたいなどで,全ての行を表示したい際には

    WHERE <列名> LIKE '%'
  • 複合条件検索
    WHERE句の中ではANDやORが使える
  • NULL条件検索
    NULLは比較できない値である.NULLはNULL条件でしか検索できない.

    WHERE <列名> IS NULL

    とすると,<列名>がNULL(空欄)のものだけが表示される.

ORDER BY では検索結果を昇順(ASC)か降順(DESC)で並び替えることができる.

§7 SELECT文の活用

  • 関数(受け取った値に対して決められた処理を実行する)
    • 単一行関数
      一行に対して一つの結果を戻す関数(SYSDATE, LENGTH, UPPER…)
    • グループ関数
      複数の行に対してグループを作り,グループごとに検索結果を返す関数(SUM, AVG…)
  • SYSDATE
    SELECT SYSDATE FROM dual

    システムの日付を取得することができる.
    dualテーブルはテーブルに格納されていないデータを取得する際に使用する特別なテーブル.

  • NVL
    NULL値の変換を行う.

    SELECT NVL(<対象列名>, <NULLと置き換えたい値>) FROM <テーブル名>
  • AVG
    平均を求めるグループ関数.

    • GROUP BY
      SELECT AVG( <平均値を算出する列名> ), <グループ化する列名> FROM <テーブル名> GROUP BY <グループ化する列名>

      グループ化した列を指定して集計する

  • テーブルの結合
    • 等価結合
      共通列の値をキーに二つのテーブルを結合する.指定した列の値と等しい値を持つ行を結合する.

      SELECT <表示する列を含むテーブル名>.<列名> FROM <テーブル名A>, <テーブル名B> WHERE <テーブル名A>.<共通列名> = <テーブル名B>.<共通列名>

      テーブルBにテーブルAから参照されてない値があっても,結合されたテーブルにはその値に対応する行は結合しない.

    • 外部結合
      共通列の値をキーに二つのテーブルを結合する.指定した列の値と等しい値を持つ行を結合する.

      SELECT <表示する列を含むテーブル名>.<列名> FROM <テーブル名A>, <テーブル名B> WHERE <テーブル名A>.<共通列名> = <テーブル名B>.<共通列名> (+)

      テーブルBにテーブルAから参照されてない値があると,結合されたテーブルにはその値に対応する行を挿入し,値がない列に対してはNULLで埋める.

  • (複数行)副問い合わせ(サブクエリ)
    WHERE句の中に()書きで更にSELECT文を書くことができる.
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中