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