5.3 クイックSQLの使用

標準ベースのOracle SQLまで拡張されるマークダウンのような短縮構文を使用して、迅速にデータ・モデルを設計し、そのプロトタイプを作成します。

5.3.1 クイックSQLのスタート・ガイド

一般的なクイックSQLのユース・ケース、クイックSQLの短縮構文の基本、および「クイックSQL」ページへのアクセス方法について説明します。

5.3.1.1 クイックSQLについて

クイックSQLを使用すると、SQLの表、トリガーおよび索引構造の作成に必要な時間と労力が削減されます。これはデータ・モデリングのかわりになるように設計されたものではありません。クイックSQLは、単純な表やビュー用のスクリプトを開発するための簡単な方法です。SQLは、生成後に微調整して拡張できます。クイックSQLでは、インデントされたテキスト・ドキュメントからリレーショナル・データ・モデルを作成するために必要なSQLを素早く生成できます。

ユース・ケース:

  • 堅牢なデータ・モデルを素早く作成

  • ランダム・データを簡単に生成

  • 提供された例を使用した、SQLの表作成、選択、挿入、索引、トリガー、PL/SQLパッケージおよびビューの構文の理解

5.3.1.2 クイックSQLの短縮構文について

クイックSQLの短縮構文を使用する際は、次の規則に従います。

  • 親表名: インデントせずに親表名を入力します。

  • 表の列名: 2個以上の空白をインデントに統一して表の列を入力します。

  • 親/子関係: 親表の下に子表をインデントして親子関係を作成します。親表の列と同じレベルに子表をインデントします。

ノート:

ベスト・プラクティスとして、主キーを指定しないでください(自動的に生成されます)。

ヒント:

クイックSQLの短縮構文の詳細は、「クイックSQL短縮」ペインの上部にある「ヘルプ」をクリックします。

設定について

「設定」ボタンをクリックすると、多数の生成オプションが表示されます。特定の行をだれがいつ作成したかや、最後に更新したかを示すユーザー列を自動的に追加できます。行順序列を追加して、行が更新されるたびに1ずつ自動的に増分できます。行順序は、失われた更新の検出を簡略化するのに役立ちます。また、PL/SQL APIを生成して、表ごとにパッケージを提供したり、行の問合せ、挿入、更新および削除を行うプロシージャを提供することもできます。アプリケーションの中には、各変更を履歴表に取得し、新旧の値をログに記録することで恩恵を受けるものもあります(これもオプションです)。

関連項目:

設定の構成

5.3.1.3 クイックSQLへのアクセス

クイックSQLページにアクセスするには:

  1. ワークスペースホームページで、「SQLワークショップ」アイコンをクリックします。
  2. 「ユーティリティ」をクリックします。
  3. 「クイックSQL」をクリックします。

    クイックSQLページが表示されます。

ノート:

「クイックSQL」ボタンをクリックして、「SQLスクリプト」ページの「クイックSQL」にアクセスすることもできます。SQLスクリプトの使用を参照してください。

5.3.2 クイックSQLのヘルプの使用

クイックSQLの短縮構文の詳細は、クイックSQLのヘルプを参照してください。

5.3.2.1 クイックSQLのヘルプへのアクセス

クイックSQLのヘルプにアクセスするには:

  1. 「クイックSQL」ページに移動します。
    1. ワークスペースホームページで、「SQLワークショップ」アイコンをクリックします。
    2. 「ユーティリティ」をクリックします。
    3. 「クイックSQL」をクリックします。
  2. 「クイックSQL短縮」ペインの上部にある「ヘルプ」をクリックします。
    クイックSQLヘルプ・ウィンドウが表示されます。
  3. クイックSQLの短縮構文の詳細を参照するには、次のいずれかのタブをクリックします。
    • 情報: クイックSQLについてとともに、使用開始に当たってのヒントおよびデータベース・オブジェクトを作成するためのステップが表示されます。

    • データ型: 各列に適用できるデータ型のリスト。

    • 表ディレクティブ: 表の変更に使用されるコマンド。

    • 列ディレクティブ: 列定義を拡張するために使用されるコマンド。

    • ビュー: ビューを定義するための構文。

    • 設定: SQL構文生成オプションを明示的に設定するためのインライン設定。

    • サンプル: 「クイックSQL短縮」へのデータ移入に使用できるデータ・モデルのサンプル。

5.3.2.2 クイックSQLのヘルプについて

クイックSQLのヘルプには、次が含まれています。

  • 情報: クイックSQLについてとともに、使用開始に当たってのヒントおよびDBオブジェクトを作成するためのステップが表示されます。

  • データ型: 各列に適用できるデータ型のリスト。

  • 表ディレクティブ: 表の変更に使用されるコマンド。

  • 列ディレクティブ: 列定義を拡張するために使用されるコマンド。

  • ビュー: ビューを定義するための構文。

  • 設定: SQL構文生成オプションを明示的に設定するためのインライン設定。

  • サンプル: 「クイックSQL短縮」へのデータ移入に使用できるデータ・モデルのサンプル。

5.3.3 SQL短縮構文でのクイックSQLの生成

左ペインでSQL短縮構文を入力して「SQLの生成」をクリックすることで、単純な表およびビューのスクリプトを迅速に開発できます。

ヒント:

サンプルを参照すると、クイックSQLの短縮構文の理解に役立ちます。サンプルを表示するには、「ヘルプ」「サンプル」の順にクリックします。「モデルのロード」をクリックして、サンプルを選択します。

SQL短縮構文を使用してクイックSQLを生成するには、次の手順に従います。

  1. 「クイックSQL」ページに移動します。
    1. ワークスペースホームページで、「SQLワークショップ」アイコンをクリックします。
    2. 「ユーティリティ」をクリックします。
    3. 「クイックSQL」をクリックします。
  2. 「クイックSQL短縮」ペイン(左ペイン)で、SQL短縮構文を入力します。
  3. 「SQLの生成」をクリックします。

    生成されたSQLが「Oracle SQL出力」ペインに表示されます。

    ノート:

    生成されたスクリプトを保存したり、スクリプトをレビューおよび実行できます。

  4. 「SQLスクリプトを保存」をクリックします。

    「スクリプトを保存」ダイアログが表示されます。

  5. 「スクリプトを保存」ダイアログで、次のステップを実行します。
    1. 「スクリプト名」に、名前を入力します。
    2. 「スクリプトを保存」をクリックします。
      スクリプトが「SQLスクリプト」の下に保存されます。

    ノート:

    スクリプトからアプリケーションを作成するには、SQLスクリプト・ページに移動し、保存したスクリプトを実行します。また、「レビューおよび実行」ボタンをクリックして、スクリプトをレビューおよび実行することもできます。

    関連項目:

    SQLスクリプトの使用

5.3.4 スクリプトの保存

生成されたスクリプトの保存またはダウンロードについて説明します。

5.3.4.1 SQLスクリプトの保存

生成したスクリプトを保存する方法について説明します。

SQLスクリプトを保存するには:

  1. 「クイックSQL」ページで、左ペインにクイックSQLの短縮構文を入力し、「SQLの生成」をクリックします。
    生成されたSQLが「Oracle SQL出力」ペインに表示されます。
  2. 「SQLスクリプトを保存」をクリックします。
  3. 「スクリプトを保存」ダイアログで、次のステップを実行します。
    1. 「スクリプト名」に名前を入力します。
    2. 「スクリプトを保存」をクリックします。

      保存したスクリプトが「SQLスクリプト」の下に保存されます。

    ノート:

    スクリプトからアプリケーションを作成するには、SQLスクリプト・ページに移動し、保存したスクリプトを実行します。また、「レビューおよび実行」ボタンをクリックして、スクリプトをレビューおよび実行することもできます。

5.3.4.2 SQLスクリプトのダウンロード

クイックSQL短縮および生成されたSQLスクリプトをローカルにダウンロードするには、次の手順に従います。

  1. 「クイックSQL」ページで、左ペインにクイックSQLの短縮構文を入力し、「SQLの生成」をクリックします。
    生成されたSQLが「Oracle SQL出力」ペインに表示されます。
  2. SQL出力ペインで、生成されたSQLを下にスクロールします。

    最下部にある-- Generated by Quick SQLで始まる行がSQL短縮構文です。設定を指定した場合は、# settings = で始まる行の後に表示されます。前述の例のクイックSQL構文および設定を次に示します。

    -- Generated by Quick SQL Wednesday May 01, 2019  10:04:45
     
    /*
    departments /insert 4
       name /nn
       location
       country
       employees /insert 14
          name /nn vc50
          email /lower
          cost center num
          date hired
          job vc255
    
    view emp_v departments employees
    
    # settings = { language: "EN", APEX: true }
    */
    
  3. 「ダウンロード」をクリックして、クイックSQL短縮および生成されたSQLをローカルに保存します。

5.3.5 生成されたSQLスクリプトからのアプリケーションの作成

保存されたスクリプトからアプリケーションを作成します。

スクリプトを保存すると、「SQLスクリプト」に保存されます。保存したスクリプトを実行した後、「SQLスクリプト」ページからアプリケーションの作成ウィザードを実行できます。

保存したスクリプトからアプリケーションを作成するには:

  1. ワークスペースホームページで、「SQLワークショップ」アイコンをクリックします。
  2. 「SQLスクリプト」をクリックします。
    SQLスクリプト・ページが表示されます。
  3. 保存したスクリプトを実行します。
    1. スクリプトを探し、「実行」をクリックします。
    2. 「スクリプトの実行」で「即時実行」をクリックします。

      結果ページが表示されます。

  4. アプリケーションを作成するには、「アプリケーションの作成」をクリックします。

    「アプリケーションの作成」ウィザードが表示されます。

    ノート:

    データベース・アプリケーションの作成は、複数ステップのプロセスです。アプリケーション名と外観を指定したら、ページを追加し、機能を選択して、アプリケーション設定を構成します。

  5. アプリケーションの作成ウィザードで、次のステップを実行します。
    1. アプリケーション名を入力し、外観を選択し、ページを追加し、機能を選択して、アプリケーション設定を構成します。

      ヒント:

      詳細は、オンライン・ヘルプを参照してください。

    2. 「アプリケーションの作成」をクリックします。

5.3.6 クイックSQLのサンプルの使用

クイックSQLのサンプルを表示して、SQL短縮構文について学習します。

5.3.6.1 クイックSQLのサンプルについて

クイックSQLのヘルプには、4つのサンプルが含まれています。サンプルを選択して「モデルのロード」をクリックすると、SQL短縮構文および生成されたSQLの両方を表示できます。

使用可能なクイックSQLのサンプルは次のとおりです。

  • 部門および従業員 - 短縮SQL構文によって、DEPARTMENTS表とEMPLOYEES表、およびSQL結合VIEWを作成します。/INSERT構文を使用して、ランダム・データも生成されます。/NNによって、NOT NULL SQL列制約が追加されます。表、列および子表を定義するために、インデントされたリストが使用されます。主キー列および外部キー列は自動的に追加されます。主キー列や外部キー列を指定する必要はありません。

  • 従業員スキル: 親表および子表を識別するインデントを使用して、DEPARTMENTS表、EMPLOYEES表およびSKILLS表を作成します。SQLデータ型を指定するために短縮構文VC255が使用されます。ランダム・データを生成するために/INSERT構文が使用されます。

  • 製品売上 - PRODUCTSCUSTOMERSCHANNELSPROMOTIONSおよびSALESの各表を持つスター・スキーマを作成する短縮構文です。SALES表には、他の表への外部キー参照が含まれています。5つの表すべてを結合するSQL VIEWも作成されます。ランダムなサンプル・データも生成されます。数値列は、NUM構文で指定されます。

  • プロジェクト管理: PROJECT_MANAGEMENTおよび4つのディテール表を作成します。/VIEW構文を使用して、2つのビューが作成されます。/CHECK構文を使用して、データベースのCHECK制約も追加されます。また、#APEXを使用して、SQL構文生成を制御する設定が指定されます。

5.3.6.2 クイックSQLのサンプルへのアクセス

クイックSQLのサンプルにアクセスするには:

  1. 「クイックSQL」ページに移動します。
    1. ワークスペースホームページで、「SQLワークショップ」アイコンをクリックします。
    2. 「ユーティリティ」をクリックします。
    3. 「クイックSQL」をクリックします。
  2. 「クイックSQL短縮」ペインの「サンプル」をクリックします。

    サンプル・ページが表示されます。

  3. サンプルを選択し、「モデルのロード」をクリックします。

    サンプルが「クイックSQL短縮」ペインにロードされ、生成されたSQLが「Oracle SQL出力」ペインに表示されます。

5.3.7 設定の構成

設定をインラインで構成してSQL構文の生成オプションを明示的に設定するか、右ペインの上部にある「設定」をクリックして生成オプションを宣言的に設定します。

5.3.7.1 設定について

SQL構文生成オプションを設定する方法を学習します。

インライン設定を使用してSQL構文生成オプションを明示的に設定するには、「クイックSQL短縮」ペインに直接設定を入力するか、または「Oracle SQL出力」ペインの最上部にある「設定」ボタンをクリックします。

5.3.7.2 設定の宣言的な構成

設定を宣言的に構成するには:

  1. 「クイックSQL」ページに移動します。
    1. ワークスペースホームページで、「SQLワークショップ」アイコンをクリックします。
    2. 「ユーティリティ」をクリックします。
    3. 「クイックSQL」をクリックします。
  2. 「Oracle SQL出力」ペインの「設定」をクリックします。

    設定ページが表示されます。適切な属性を構成します。

  3. 「表」の内容は次のとおりです。
    • オブジェクト接頭辞: データベース・オブジェクトの接頭辞。指定された値の接頭辞がすべてのオブジェクト名に付けられます。
    • スキーマ: オブジェクト名に接頭辞としてスキーマ名が付けられます。デフォルトでは、オブジェクト名にスキーマ接頭辞はありません。
    • 削除時 - 親行の削除時の外部キーの動作を定義します。オプションは次のとおりです。
      • カスケード - ON DELETE CASCADEが指定された外部キーでは、対応する親が削除されたときに、子行が自動的に削除されます。
      • 制限 - ON DELETE RESTRICTが指定された外部キーでは、子行が存在する場合に親行の削除が防止されます。
      • Nullの設定 - ON DELETE SET NULLが指定された外部キーでは、親表のレコードが削除された場合、子表の対応するレコードの外部キー・フィールドがNullに設定されます。
    • 圧縮 - 表を圧縮するかどうかを指定します。

      表の圧縮を使用すると、ディスク領域が節約され、バッファ・キャッシュでのメモリー使用量が減少します。表の圧縮は、読取り中の問合せ実行の高速化にもつながります。ただし、データのロードやDMLのためのCPUオーバーヘッドがかかります。表の圧縮は、アプリケーションに対して完全に透過的です。このオプションは、非常に長い読取り専用操作が行われるオンライン分析処理(OLAP)システムで特に有効ですが、オンライン・トランザクション処理(OLTP)システムでも使用できます。

    • 挿入の生成 - 挿入を生成すると、時間がかかり、有用性に影響することがあります。データ・モデルを調整する際に挿入の生成をオフにし、データの生成の準備ができた時点でオンにすることを検討してください。
  4. 「列」の内容は次のとおりです。
    • 主キー - 表の主キーの移入方法を定義します。オプションは次のとおりです。
      • トリガーおよびGUID経由 - 連続していない長さが不統一なランダムな数値を主キーに移入します。この方法は、より安全性が高く、主キーの競合を気にせずに様々なデータベースからデータをマージできる点で有用です。この主キーの移入は、データベース・トリガーを介して実装されます。
      • トリガーおよび順序経由 - 連番を使用して主キーを増分します。この主キーの移入は、データベース・トリガーを介して実装されます。
      • 12c Identityデータ型 - 主キーにデフォルトで増加し続ける数値を設定します。この方法では、トリガー・ロジックを実装する必要はありません。
    • 日付データ型: どのタイプの日付を使用して、日付として識別される列を格納するかを定義します。オプションは、「日付」「タイムスタンプ」および「ローカル・タイムゾーン付きタイムスタンプ」です。
    • セマンティクス - オプションは次のとおりです。
      • デフォルト - データベース設定がデフォルト設定されます。この設定について詳しくない場合は、「デフォルト」を選択します。
      • BYTE: 列がバイト長セマンティクスを持つことを示します。
      • CHAR: 列が文字セマンティクスを持つことを示します。
  5. 「追加列」の内容は次のとおりです。
    • 含む: 表に自動的に追加する追加列。オプションは、「監査列」「行キー」「行バージョン番号」および「セキュリティ・グループID」です。
  6. 「オプション」の内容は次のとおりです。
    • データ言語: /INSERTフラグを使用してデータを生成するために使用する言語を制御します。
    • PL/SQL API - 「はい」を選択すると、すべての表で表ごとに1つのパッケージのPL/SQL APIが生成されます。「いいえ」を選択すると、名前の最後が/apiである表のPL/SQL APIのみが生成されます。
    • DROPを含める - 出力にオブジェクトの削除コマンドを含めます。「はい」を設定すると、作成されるデータベース・オブジェクトごとに削除コマンドが生成されます。次に例を示します。
      drop table X including contents;
      drop table Y including contents;
    • 履歴表 - 「はい」を選択すると、すべての表へのすべての更新と削除を記録する履歴表が作成されます。この履歴表に挿入する、PL/SQLの更新後または削除後のトリガーが作成されます。1つ以上の表に/historyオプションが含まれている場合にのみ履歴表を作成するには、「いいえ」を選択します。次に例を示します。
      employees /history
         name
         email
         phone num
    • 自動主キー - 表の主キー列を自動的に生成する場合は、「はい」を選択します。主キー列名はIDで、数値型になります。

      ヒント:

      例を参照するには、フィールドレベルのヘルプを参照してください。
    • 長いVARCHAR - Oracle Database 12.1以降で使用可能です。長いVARCHARを使用すると、列に最大32Kバイトを格納できます。この機能を使用する場合は、データベースが長いVARCHARをサポートするように構成されていることを確認します。
    • エディション化可能: 生成時に、トリガーやパッケージなどのPL/SQLオブジェクトによって、これらはエディション化可能になります。
    • APEX有効: 監査列をサポートするために生成される構文を制御します。
    • タグ・フレームワーク: 「はい」または「いいえ」を選択します。
    • 互換性 - Oracle Databaseのリリースを選択します。生成されたSQLは、選択したデータベース・リリースと互換性があることが保証されます。
  7. 「プリファレンス」の内容は次のとおりです。
    • 主キーに表名を接頭辞として付けます: 主キーのデータベース表の列に表の名前を接頭辞として付けます。
    • 作成された列名 - 監査列の生成時に、この監査列の名前を制御します。
    • 作成者の列名 - 監査列の生成時に、この監査列の名前を制御します。
    • 更新された列名 - 監査列の生成時に、この監査列の名前を制御します。
    • 更新者の列名 - 監査列の生成時に、この監査列の名前を制御します。
  8. 構成を保存するには、「変更の保存」をクリックします
  9. デフォルト設定をリセットするには、「リセット」をクリックします

5.3.7.3 設定のインラインでの構成

設定をインラインで構成して、SQL構文生成オプションを明示的に設定できます。設定をインラインで構成する場合は、次のようにします。

  • 設定は新しい行で開始する必要があります。複数の設定を入力するには、# settings =で開始します。1行に1つの設定を入力する場合は、#を使用します。
  • すべての値で大文字と小文字が区別されません。
  • わかりやすくするためにカッコ、空白およびカンマを追加できますが、無視されます。
  • すべての設定を生成するには、# verbose: trueを使用します

「クイックSQL短縮」ペインに直接設定を入力すると、スクリプトをダウンロードして後で貼り付けても、同じSQL生成オプションが使用されます。たとえば、次のように入力すると、すべての表名の前にTESTが付加され、スキーマOBE用に生成されます。

# settings = { prefix: "test", schema: "OBE" }.
Alternatively, enter each setting on a separate line for the same result:
# prefix: "test" 
# schema: "OBE"

ヒント:

設定のリストを表示するには、「ヘルプ」「設定」の順にクリックします。

5.3.8 データベース用語について

クイックSQLで使用される一般的なデータベース用語について説明します。

クイックSQLでよく言及されているデータベース用語は次のとおりです。

  • BLOB: バイナリ・ラージ・オブジェクトまたはCLOBです。BLOBは、バイナリ・データを格納し、文字セットのエンコーディングを行いません。BLOBサイズでは、システム構成に応じて4GB以上を格納できます。

  • チェック制約: チェック制約は、特定の列に含まれる値を制限する宣言的な方法です。

    create table projects (
    	          id     number primary key, 
    	          name   varchar2(50), 
    	          status varchar2(30) check (status in ('OPEN','CLOSED'))
    	          );
  • CLOB: キャラクタ・ラージ・オブジェクト(CLOB)です。VARCHAR2データ型の最大サイズは32,767バイトですが、CLOBサイズでは最大4GBの文字データを格納できます。

  • : RDBMS表では、行と列で構成される表にデータが格納されます。各列には名前が付けられます。たとえば、first_nameです。

  • データベース: コンピュータに保持されているデータを構造化したセット(特に様々な方法でアクセスできるもの)。

  • データ・モデル: データ・モデルは、データの要素を編成し、それらが互いにどのように関連しているかを定義するための方法です。モデルは通常、物理データベース・モデルに変換すると表と列に変換されるエンティティにデータを編成します。このツールは、インデントされたテキストから物理データ・モデルを作成するための非常に基本的なツールです。重大なデータ・モデリングには、適切なデータ・モデリング・ツールOracle SQL Data Modelerを使用することをお薦めします。これは、生産性を高め、データ・モデリング・タスクを簡略化する無料のグラフィカル・ツールです。

  • データ型: 表内の各列にデータ型があります。データ型によく使用されるのは、文字列(VARCHAR2)数値日付です。

  • DML: データ操作言語。SQLコマンドには次のものがあります。

    • INSERT: 表に新しい行を追加するためのSQL文。

    • UPDATE: 表内の1つ以上のデータ行を更新するためのSQL文。

    • DELETE: 表から1つ以上のデータ行を削除するためのSQL文。

  • 外部キー: 別の表を参照する、表内の1つ以上の列。たとえば、従業員を部門別に編成している場合、employees表内のdepartment_idemployee表の主キーへの外部キーになるという具合です。外部キーを定義することで、表間の関係を宣言的に定義することになります。

  • 結合: 結合とは、2つ以上の表またはビューの行を結合するSQL問合せです。FROM句に複数の表を記述すると、必ず問合せは結合問合せになります。リレーショナル・データベース・モデルの主な利点は、繰り返し発生するデータを1つの場所に格納できることです。たとえば、部門と従業員という2つの表があるとします。次に、両方の表からデータを選択する問合せを示します。

    select d.name, d.location, e.name, e.job
    	    from   departments d, employees e
    	    where  e.department_id = e.id

    部門の名前や場所に変更があった場合には、1箇所でのみ変更されます。

  • リレーショナル・データベース: リレーショナル・モデルにデータを編成するデータベース・モデル。リレーショナル・モデルは、リレーションとも呼ばれ、列と行からなる1つ以上の表にデータが編成されます。リレーショナル・データベース内のデータにアクセスし、データベース・オブジェクトを定義するための標準言語はSQLです。

  • RDBMS: リレーショナル・データベース管理システム。

  • オブジェクト: データベース・オブジェクトは、データの格納または管理に使用される名前付きのウィジェットです。たとえば、tablesviewstriggerssynonymsはすべてデータベース・オブジェクトとみなされます。

  • PL/SQL: Oracleが開発したSQL言語の手続き型拡張要素です。PL/SQLは、手続き型言語SQLを表します。PL/SQLはサーバー側に格納される手続き型言語で、Oracleデータベースのデータに対して手続き操作を実行するのに使用できます。

  • 問合せ: リレーショナル・データベース内のデータにアクセスしたり問い合せるには、SQL SELECT文を使用します。SQLでは、SELECT文により、1つ以上の表またはビューからデータを問い合せることができます。

    • projectsという表にある3つの列の問合せ

      select id, name, status
          from projects
          where status = 'OPEN';
    • 集約問合せ

      select count(*) count_of_projects,
                 sum(case when status = 'OPEN' then  1 else 0) open_projects,
                 sum(case when status = 'CLOSED' then  1 else 0) closed_projects
          from projects;
  • 予約語: オブジェクト識別子として使用できない名前。たとえば、SELECTを表名として使用することはできません。

  • : RDBMS表では、行と列で構成される表にデータが格納されます。各行は、1つ以上の列で構成されています。

  • 順序: 順序とは、複数のユーザーが一意の整数を生成するために使用できるデータベース・オブジェクトです。シーケンス・ジェネレータは順序番号を生成し、一意主キーの自動的な生成、および複数の行または表の間のキーの調整に役立ちます。順序は、次の構文を使用して作成できます。

    create sequence project_seq;

    順序値は、project_seq.currval (現在の値)またはproject_seq.nextval (次の値)を使用して参照できます。nextvalにアクセスするたびに、順序が増分されます。デフォルトの増分は1です。

  • スキーマ: スキーマは、表などのデータベース・オブジェクトを作成するためのネームスペースです。データベースにデータベース表を作成することはなく、データベースのスキーマ内に作成します。各データベースには、任意の数のスキーマを格納できます。スキーマは、ユーザーと呼ばれることもあります。新規にデータベースを用意する場合は、まずスキーマ(またはユーザー、両者は同じものです)を作成し、次にそのスキーマまたはユーザー内に表を作成します。スキーマを作成するには、SQL create schemaコマンドまたはcreate userコマンドを使用します。スキーマは、データベース内にデータベース・オブジェクトを編成するための手段です。

  • SQL: Structured Query Language。データベース表を定義したり、表内のデータを操作するために使用される言語。

  • 構造化データ: リレーショナル・データベース・データは、データが行と列に整然と編成されるため、構造化とよく呼ばれます。非構造化とは通常、データに構造が適用されていないことを言います。

  • : 行と列に編成された関連データを格納するデータベース・オブジェクト。

    • 表の作成

      create table projects (
              id     number primary key, 
              name   varchar2(50), 
              status varchar2(30)
              );
    • 表への行の挿入

      insert into projects (id, name, status)
            values (1, 'My Project','OPEN');
    • 表のデータの問合せ

      select id, name, status
            from projects
            where status = 'OPEN';
  • トリガー: データベース・トリガーは、特定の表で発生した特定のイベントに応えて自動的に実行されるプロシージャ・コードです。たとえば、行挿入の前や後です。次のトリガーは、列を強制的に小文字にします。

    create or replace trigger PROJECTS_BIU
    	        before insert or update 
    	        on PROJECTS
    	        for each row
    	    begin
    	        :new.OWENER_EMAIL := LOWER(:new.OWENER_EMAIL);
    	    end;
    	/
  • ビュー: データベース・ビューは、SQL文の結果セットに基づいた仮想表です。ビューは、ストアド・クエリーとも呼ばれます。複数の表を結合するビューを作成できます。このようなビューを作成したら、表の場合と同じように問い合せることができます。次に、ビューを作成するSQLの例を示します。

    	create view department_employees as
    	select d.name, d.location, e.name, e.job
    	    from   departments d, employees e
    	    where  e.department_id = e.id;

5.3.9 クイックSQLを使用する際の推奨事項

効果的なデータ・モデルの作成に関して推奨される方法について説明します。

効果的なデータ・モデルを作成するためには多くの有効な方法がありますが、次のことをお薦めします。

  • 表のネーミング: 表を複数形として定義し、列を単数形として定義します。表は、多数の行を格納するように設計されているため、複数形にするのが適切です。たとえば、Employeesとします。

  • 列のネーミング: 列名を単数形として定義します。たとえば、First Nameとします。

  • 主キー: すべての表に主キーがあり、主キーは各行を一意に識別するために使用され、子表データを関連付けるために使用できます。

  • 主キー列のネーミング: すべての表に主キーがあり、IDと呼び、数値にする必要があります。

  • 表制約: データの整合性を確保する最善の方法は、データベースに適切なデータのみを許可することです。たとえば、列が必須の場合は、not null制約を設定します。列が一意の場合は、一意制約を設定します。

  • 参照整合性: ほとんどのリレーショナル・データベース・モデルには、1対多関係とも呼ばれる親子があります。これらは多対多関係になることもよくあります。宣言的な主キーと外部キーの構文を使用すると、データベースではこれらの関連を規定してデータの整合性を確保できます。参照整合性を定義することにより、すべての子表が実際に親表に関連するようになります。

5.3.10 サポートされるデータ型について

サポートされるデータ型について説明します。

クイックSQLでは、次のデータ型がサポートされています。

  • VARCHAR2

  • NUMBER

  • INTEGER

  • DATE

  • TIMESTAMP

  • TIMESTAMPWITHTIMEZONE

  • TIMESTAMPWITHLOCALTIMEZONE

  • CLOB

  • BLOB

ヒント:

クイックSQLの短縮構文でサポートされるデータ型の詳細は、「ヘルプ」をクリックして「データ型」を選択します。