5.3 クイックSQLの使用
標準ベースのOracle SQLまで拡張されるマークダウンのような短縮構文を使用して、迅速にデータ・モデルを設計し、そのプロトタイプを作成します。
- クイックSQLのスタート・ガイド
一般的なクイックSQLのユース・ケース、クイックSQLの短縮構文の基本、および「クイックSQL」ページへのアクセス方法について説明します。 - クイックSQLのヘルプの使用
クイックSQLの短縮構文については、クイックSQLのヘルプを参照してください。 - SQL短縮構文を使用したクイックSQLの生成
左ペインでSQL短縮構文を入力して「SQLの生成」をクリックすることで、単純な表およびビューのスクリプトを迅速に開発できます。 - スクリプトの保存
生成されたスクリプトの保存またはダウンロードについて説明します。 - 生成されたSQLスクリプトからのアプリケーションの作成
保存されたスクリプトからアプリケーションを作成します。 - クイックSQLのサンプルの使用
クイックSQLのサンプルを表示し、SQL短縮構文について学習します。 - 設定の構成
設定をインラインで構成してSQL構文の生成オプションを明示的に設定するか、右ペインの上部にある「設定」をクリックして生成オプションを宣言的に設定します。 - データベースの用語について
クイックSQLで使用される一般的なデータベース用語について説明します。 - クイックSQL使用時の推奨事項
効果的なデータ・モデルの作成に関して推奨される方法について説明します。 - サポートされるデータ型について
サポートされているデータ型について説明します。
5.3.1 クイックSQLのスタート・ガイド
一般的なクイックSQLのユース・ケース、クイックSQLの短縮構文の基本、および「クイックSQL」ページへのアクセス方法について説明します。
5.3.1.1 クイックSQLについて
クイックSQLを使用すると、SQLの表、トリガーおよび索引構造の作成に必要な時間と労力が削減されます。これはデータ・モデリングのかわりになるように設計されたものではありません。クイックSQLは、単純な表やビュー用のスクリプトを開発するための簡単な方法です。SQLは、生成後に微調整して拡張できます。クイックSQLでは、インデントされたテキスト・ドキュメントからリレーショナル・データ・モデルを作成するために必要なSQLを素早く生成できます。
ユース・ケース:
-
堅牢なデータ・モデルを素早く作成
-
ランダム・データを簡単に生成
-
提供された例を使用した、SQLの表作成、選択、挿入、索引、トリガー、PL/SQLパッケージおよびビューの構文の理解
親トピック: クイックSQLのスタート・ガイド
5.3.1.2 クイックSQLの短縮構文について
クイックSQLの短縮構文を使用する際は、次の規則に従います。
-
親表名: インデントせずに親表名を入力します。
-
表の列名: 2個以上の空白をインデントに統一して表の列を入力します。
-
親/子関係: 親表の下に子表をインデントして親子関係を作成します。親表の列と同じレベルに子表をインデントします。
ノート:
ベスト・プラクティスとして、主キーを指定しないでください(自動的に生成されます)。
ヒント:
クイックSQLの短縮構文の詳細は、「クイックSQL短縮」ペインの上部にある「ヘルプ」をクリックします。
設定について
「設定」ボタンをクリックすると、多数の生成オプションが表示されます。特定の行をだれがいつ作成したかや、最後に更新したかを示すユーザー列を自動的に追加できます。行順序列を追加して、行が更新されるたびに1ずつ自動的に増分できます。行順序は、失われた更新の検出を簡略化するのに役立ちます。また、PL/SQL APIを生成して、表ごとにパッケージを提供したり、行の問合せ、挿入、更新および削除を行うプロシージャを提供することもできます。アプリケーションの中には、各変更を履歴表に取得し、新旧の値をログに記録することで恩恵を受けるものもあります(これもオプションです)。
関連項目:
親トピック: クイックSQLのスタート・ガイド
5.3.1.3 クイックSQLへのアクセス
クイックSQLページにアクセスするには:
ノート:
「クイックSQL」ボタンをクリックして、「SQLスクリプト」ページの「クイックSQL」にアクセスすることもできます。「SQLスクリプトの使用」を参照してください。
親トピック: クイックSQLのスタート・ガイド
5.3.2 クイックSQLのヘルプの使用
クイックSQLの短縮構文の詳細は、クイックSQLのヘルプを参照してください。
5.3.2.2 クイックSQLのヘルプについて
クイックSQLのヘルプには、次が含まれています。
-
情報: クイックSQLについてとともに、使用開始に当たってのヒントおよびDBオブジェクトを作成するためのステップが表示されます。
-
データ型: 各列に適用できるデータ型のリスト。
-
表ディレクティブ: 表の変更に使用されるコマンド。
-
列ディレクティブ: 列定義を拡張するために使用されるコマンド。
-
ビュー: ビューを定義するための構文。
-
設定: SQL構文生成オプションを明示的に設定するためのインライン設定。
-
サンプル: 「クイックSQL短縮」へのデータ移入に使用できるデータ・モデルのサンプル。
親トピック: クイックSQLのヘルプの使用
5.3.3 SQL短縮構文でのクイックSQLの生成
左ペインでSQL短縮構文を入力して「SQLの生成」をクリックすることで、単純な表およびビューのスクリプトを迅速に開発できます。
ヒント:
サンプルを参照すると、クイックSQLの短縮構文の理解に役立ちます。サンプルを表示するには、「ヘルプ」、「サンプル」の順にクリックします。「モデルのロード」をクリックして、サンプルを選択します。
SQL短縮構文を使用してクイックSQLを生成するには、次の手順に従います。
親トピック: クイックSQLの使用
5.3.5 生成されたSQLスクリプトからのアプリケーションの作成
保存されたスクリプトからアプリケーションを作成します。
スクリプトを保存すると、「SQLスクリプト」に保存されます。保存したスクリプトを実行した後、「SQLスクリプト」ページからアプリケーションの作成ウィザードを実行できます。
保存したスクリプトからアプリケーションを作成するには:
親トピック: クイックSQLの使用
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
構文が使用されます。 -
製品売上 -
PRODUCTS
、CUSTOMERS
、CHANNELS
、PROMOTIONS
およびSALES
の各表を持つスター・スキーマを作成する短縮構文です。SALES
表には、他の表への外部キー参照が含まれています。5つの表すべてを結合するSQL VIEW
も作成されます。ランダムなサンプル・データも生成されます。数値列は、NUM
構文で指定されます。 -
プロジェクト管理:
PROJECT_MANAGEMENT
および4つのディテール表を作成します。/VIEW
構文を使用して、2つのビューが作成されます。/CHECK
構文を使用して、データベースのCHECK制約も追加されます。また、#APEX
を使用して、SQL構文生成を制御する設定が指定されます。
親トピック: クイックSQLのサンプルの使用
5.3.7 設定の構成
設定をインラインで構成してSQL構文の生成オプションを明示的に設定するか、右ペインの上部にある「設定」をクリックして生成オプションを宣言的に設定します。
- 設定について
SQL構文生成オプションを設定する方法を学習します。 - 設定の宣言的な構成
- 設定のインラインでの構成
親トピック: クイックSQLの使用
5.3.7.1 設定について
SQL構文生成オプションを設定する方法を学習します。
インライン設定を使用してSQL構文生成オプションを明示的に設定するには、「クイックSQL短縮」ペインに直接設定を入力するか、または「Oracle SQL出力」ペインの最上部にある「設定」ボタンをクリックします。
親トピック: 設定の構成
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_id
がemployee
表の主キーへの外部キーになるという具合です。外部キーを定義することで、表間の関係を宣言的に定義することになります。 -
結合: 結合とは、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: リレーショナル・データベース管理システム。
-
オブジェクト: データベース・オブジェクトは、データの格納または管理に使用される名前付きのウィジェットです。たとえば、
tables
、views
、triggers
、synonyms
はすべてデータベース・オブジェクトとみなされます。 -
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;
親トピック: クイックSQLの使用
5.3.9 クイックSQLを使用する際の推奨事項
効果的なデータ・モデルの作成に関して推奨される方法について説明します。
効果的なデータ・モデルを作成するためには多くの有効な方法がありますが、次のことをお薦めします。
-
表のネーミング: 表を複数形として定義し、列を単数形として定義します。表は、多数の行を格納するように設計されているため、複数形にするのが適切です。たとえば、
Employees
とします。 -
列のネーミング: 列名を単数形として定義します。たとえば、
First Name
とします。 -
主キー: すべての表に主キーがあり、主キーは各行を一意に識別するために使用され、子表データを関連付けるために使用できます。
-
主キー列のネーミング: すべての表に主キーがあり、
ID
と呼び、数値にする必要があります。 -
表制約: データの整合性を確保する最善の方法は、データベースに適切なデータのみを許可することです。たとえば、列が必須の場合は、
not null
制約を設定します。列が一意の場合は、一意制約を設定します。 -
参照整合性: ほとんどのリレーショナル・データベース・モデルには、1対多関係とも呼ばれる親子があります。これらは多対多関係になることもよくあります。宣言的な主キーと外部キーの構文を使用すると、データベースではこれらの関連を規定してデータの整合性を確保できます。参照整合性を定義することにより、すべての子表が実際に親表に関連するようになります。
親トピック: クイックSQLの使用
5.3.10 サポートされるデータ型について
サポートされるデータ型について説明します。
クイックSQLでは、次のデータ型がサポートされています。
-
VARCHAR2
-
NUMBER
-
INTEGER
-
DATE
-
TIMESTAMP
-
TIMESTAMPWITHTIMEZONE
-
TIMESTAMPWITHLOCALTIMEZONE
-
CLOB
-
BLOB
ヒント:
クイックSQLの短縮構文でサポートされるデータ型の詳細は、「ヘルプ」をクリックして「データ型」を選択します。親トピック: クイックSQLの使用