ヘッダーをスキップ

Oracle Database 2日で開発者ガイド
11g リリース1(11.1)

E05694-03
目次
目次
索引
索引

戻る 次へ

3 データベース・オブジェクトの作成および使用

この章では、「データの問合せおよび操作」で説明されているデータベース・オブジェクトのタイプを作成および使用します。

CREATE TABLEALTER TABLEDROP TABLEなどの文は、暗黙的なコミットを使用するため、ロールバックできないことに注意してください。

この章の内容は次のとおりです。

データ型の使用

データ型により、データベースでこれらの値を使用できるように一連のプロパティが値と関連付けられます。データ型に応じて、Oracle Databaseのデータベースにおいて実行できる情報の操作の種類が異なります。たとえば、数値データ型を使用した場合、数値の合計は計算できますが文字は使用できません。

Oracle Databaseでは、最も一般的なVARCHAR2(長さ)NUMBER(精度、スケール)DATECHAR(長さ)CLOBTIMESTAMPおよびその他を含む様々なデータ型をサポートしています。表を作成するときに、各列のデータ型を指定する必要があり、(必要に応じて)列に格納できる最も長い値を示します。

ここで使用する一部のデータ型のおよびそのプロパティには、次の機能があります。

表の作成および使用

表は、Oracleデータベースにおけるデータ記憶領域の基本単位であり、ユーザーがアクセスできるすべてのデータを保持します。表は、表のフィールドを表す縦方向の列および表の各レコードの値を表す横方向の行から構成される2次元オブジェクトです。

この項では、必要な表およびその他のスキーマ・オブジェクトを作成し、既存のhrスキーマの従業員のパフォーマンス評価プロセスを実装します。

参照:

 

表の作成

従業員評価プロセスを実装するには、performance_partsevaluationsおよびscoresという3つの表を作成する必要があります。

SQL Developerインタフェースを使用して、表を作成するには、次の手順を実行します。

SQL Developerのグラフィカル・インタフェースを使用して、performance_parts表を作成します。

  1. 「Connections」ナビゲーション階層で、hr_connの横にあるプラス記号(+)をクリックしてスキーマ・オブジェクトのリストを展開します。

  2. 「Tables」を右クリックします。

  3. 「New Table」を選択します。


    画像の説明

  4. 「Create Table」ウィンドウで、次の情報を入力します。

    • 「Schema」HRを選択します。

    • 「Name」PERFORMANCE_PARTSを選択します。


      画像の説明

  5. 表に作成されているデフォルト列をクリックします。

  6. 表の1列目の情報として次を入力します。

    • 「Column Name」PERFORMANCE_IDを入力します。

    • 「Type」VARCHAR2を入力します。

    • 「Size」2を入力します。

    「Not Null」「Primary Key」プロパティの値を残します。「データ整合性の保証」でここに戻ります。


    画像の説明

  7. 2列目の情報として次を入力します。

    「Add Column」をクリックします。

    • 「Column Name」NAMEを入力します。

    • 「Type」VARCHAR2を入力します。

    • 「Size」80を入力します。

  8. 3列目の情報として次を入力します。

    「Add Column」をクリックします。

    • 「Column Name」WEIGHTを入力します。

    • 「Type」NUMBERを入力します。

  9. 「OK」をクリックします。

    SQL Developerにより新しい表performance_partsが生成されます。

  10. 「Connections」ナビゲーション階層で、「Tables」の横にあるプラス記号(+)をクリックして表のリストを展開します。

    performance_partshrスキーマの新しい表であり、locationsregionsの間にリストされます。

これで新しい表performance_partsが作成されました。表をクリックすると、SQL Developerウィンドウの右側に新しい列を含む表が表示されます。「SQL」タブをクリックすると、この表を作成したスクリプトが表示されます。

例3-1では、「SQL Worksheet」ペインで直接情報を入力して、evaluations表を作成します。

例3-1    SQLスクリプトでの表の作成

CREATE TABLE evaluations (
  evaluation_id    NUMBER(8,0), 
  employee_id      NUMBER(6,0), 
  evaluation_date  DATE, 
  job_id           VARCHAR2(10), 
  manager_id       NUMBER(6,0), 
  department_id    NUMBER(4,0),
  total_score      NUMBER(3,0)
)

スクリプトの結果が続きます。

CREATE TABLE succeeded.

これで新しい表evaluationsが作成されました。表をクリックすると、SQL Developerウィンドウの右側に新しい列を含む表が表示されます。「SQL」タブをクリックすると、この表を作成したスクリプトが表示されます。「Refresh」アイコンをクリックする必要があります。

例3-2では、「SQL Worksheet」ペインで情報を入力して、別の表scoresを作成します。

例3-2    SCORES表の作成

CREATE TABLE scores (
  evaluation_id   NUMBER(8,0), 
  performance_id  VARCHAR2(2), 
  score           NUMBER(1,0)
);

文の結果が続きます。

CREATE TABLE succeed.

これで新しい表scoresが作成されました。表をクリックすると、SQL Developerウィンドウの右側に新しい列を含む表が表示されます。「SQL」タブをクリックすると、この表を作成したスクリプトが表示されます。「Refresh」アイコンをクリックする必要があります。

参照:

  • CREATE TABLE文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

 

データ整合性の保証

表のデータはアプリケーションでモデル化されたビジネス・ルールを満たす必要があります。これらのルールの多くは、どのタイプのデータ値が各列に対して有効であるかを明示的に宣言するSQLを使用する整合性制約で実装されます。

整合性制約を表に適用するとき、表内のすべてのデータが対応するルールに従う必要があります。このため、表にデータを挿入または変更するSQL文がアプリケーションに含まれているときに、制約が守られていることをOracle Databaseが自動的に確認します。制約に違反する行を挿入、更新または削除しようとすると、エラーが生成され、その文がロールバックされます。移入された表に新しい制約を適用しようとすると、既存の行のいずれかで新しい制約に違反している場合にエラーが生成される場合があります。

Oracle Databaseではアプリケーションより迅速に、表内のすべてのデータが整合性制約に従っているかを確認するため、アプリケーション・ロジックに同様のチェック・タイプを含めるよりも、整合性制約により定義することでさらに確実にビジネス・ルールを規定できます。

参照:

  • 整合性制約の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

 

データ整合性制約の種類の理解

整合性制約には5つの基本タイプがあります。

整合性制約の追加

「表の作成」で作成した表に異なる種類の制約を追加します。

SQL Developerインタフェースを使用してNOT NULL制約を追加するには、次の手順を実行します。

SQL Developerのグラフィカル・インタフェースを使用して、表にNOT NULL制約を追加します。

  1. 「Connections」ナビゲーション階層で、表の横にあるプラス記号(+)をクリックして表のリストを展開します。

  2. performance_parts表を右クリックします。

  3. 「Edit」を選択します。


    画像の説明

  4. 「Edit Table」ウィンドウで、次の手順に従います。

    • 「Edit Table」ウィンドウで、「Columns」をクリックします。

    • 列リストでNAMEを選択します。

    • 「Column Properties」セクションで、「Cannot be NULL」にチェックを入れます。

      「OK」をクリックします。


      画像の説明

  5. 「Confirmation」ウィンドウで「OK」をクリックします。

    これでperformance_parts表のname列に対してNOT NULL制約が作成されました。

performance_parts表のname列の定義は次のように変更されました。制約は自動的に有効になります。

"NAME" VARCHAR2(80) NOT NULL ENABLE

例3-3は、「SQL Statement」ウィンドウで必要な情報を直接入力し、performance_parts表にさらにNOT NULL制約を追加する方法を示しています。

例3-3    SQLスクリプトでNOT NULL制約を追加

ALTER TABLE performance_parts
MODIFY weight NOT NULL;

スクリプトの結果が続きます。

ALTER TABLE performance_parts succeeded. 

これでperformance_parts表のweight列に対してNOT NULL制約が作成されました。「SQL」タブをクリックすると、Weight列の定義が変更されたことを確認できます。「Refresh」アイコンをクリックする必要があります。

"WEIGHT" NUMBER NOT NULL ENABLE
SQL Developerインタフェースを使用して、一意制約を追加するには、次の手順を実行します。

SQL Developerのグラフィカル・インタフェースを使用して、scores表に一意制約を追加します。この作業を実行するために、NOT NULL制約の場合と同様に「Edit Table」ウィンドウを使用することもできます。

  1. 「Connections」ナビゲーション階層で、表の横にあるプラス記号(+)をクリックして表のリストを展開します。

  2. scores表を右クリックします。

  3. 「Constraint」を選択して「Add Unique」を選択します。


    画像の説明

  4. 「Add Unique」ウィンドウで、次の情報を入力します。

    • 「Constraint Name」をSCORES_EVAL_PERF_UNIQUEに設定します。

    • 「Column 1」をEVALUATION_IDに設定します。

    • 「Column 2」をPERFORMANCE _IDに設定します。

    「Apply」 をクリックします。


    画像の説明

  5. 「Confirmation」ウィンドウで「OK」をクリックします。

    これでscores表に対する一意制約が作成されました。

    次のSQL文が表定義に追加されました。

    CONSTRAINT "SCORES_EVAL_PERF_UNIQUE" UNIQUE ("EVALUATION_ID", "PERFORMANCE_ID")
    
SQL Developerインタフェースを使用して、主キー制約を追加するには、次の手順を実行します。

SQL Developerのグラフィカル・インタフェースを使用して、performance_parts表に主キー制約を追加します。この作業を実行するために、NOT NULL制約のように「Edit Table」ウィンドウを使用することもできます。

  1. 「Connections」ナビゲーション階層で、表の横にあるプラス記号(+)をクリックして表のリストを展開します。

  2. performance_parts表を右クリックします。

  3. 「Constraint」を選択して、「Add Primary Key」を選択します。


    画像の説明

  4. 「Add Primary Key」ウィンドウで、次の情報を入力します。

    • 「Primary Key Name」をPERF_PERF_ID_PKに設定します。

    • 「Column 1」をPERFORMANCE_IDに設定します。

    「Apply」 をクリックします。


    画像の説明

  5. 「Confirmation」ウィンドウで「OK」をクリックします。

    これでperformance_parts表に対する主キー制約が作成されました。

次のSQL文が表定義に追加されました。

CONSTRAINT "PERF_PERF_ID_PK" PRIMARY KEY ("PERFORMANCE_ID")

例3-4では、「SQL Statement」ウィンドウで必要な情報を直接入力してevaluations表に主キー制約を作成します。

例3-4    SQLスクリプトで主キー制約を追加

ALTER TABLE evaluations
ADD CONSTRAINT eval_eval_id_pk PRIMARY KEY (evaluation_id);

スクリプトの結果が続きます。

ALTER TABLE evaluations succeeded.

evaluations表に主キーeval_eval_id_pkが作成されました。「SQL」タブをクリックすると、次のSQL文が表定義に追加されたことを確認できます。「Refresh」アイコンをクリックする必要があります。

CONSTRAINT "EVAL_EVAL_ID_PK" PRIMARY KEY ("EVALUATION_ID")
SQL Developerインタフェースを使用して、外部キー制約を追加するには、次の手順を実行します。

SQL Developerのグラフィカル・インタフェースを使用して、scores表に外部キー制約を追加します。この作業を実行するために、NOT NULL制約のように「Edit Table」ウィンドウを使用することもできます。

  1. 「Connections」ナビゲーション階層で、表の横にあるプラス記号(+)をクリックして表のリストを展開します。

  2. scores表を右クリックします。

  3. 「Constraint」を選択して、「Add Foreign Key」を選択します。


    画像の説明

  4. 「Add Foreign Key」ウィンドウで、次の情報を入力します。

    • 「Constraint Name」をSCORES_EVAL_FKに設定します。

    • 「Column Name」をEVALUATION_IDに設定します。

    • 「References Table Name」をEVALUATIONSに設定します。

    • 「Referencing Column」をEVALUATION_IDに設定します。

    「Apply」 をクリックします。


    画像の説明

  5. 「Confirmation」ウィンドウで「OK」をクリックします。

    これでevaluations表のevalution_id列に対する外部キー制約が作成されました。

  6. 次のパラメータを使用し、手順2から5を繰り返すことにより、さらに外部キー制約を追加します。

    • 「Constraint Name」をSCORES_PERF_FKに設定します。

    • 「Column Name」をPERFORMANCE_IDに設定します。

    • 「References Table Name」をPERFORMANCE_PARTSに設定します。

    • 「Referencing Column」をPERFORMANCE_IDに設定します。

    「Apply」 をクリックします。

次のSQL文が表定義に追加されました。

CONSTRAINT "SCORES_EVAL_FK" FOREIGN KEY ("EVALUATION_ID")
 REFERENCES "HR"."EVALUATIONS" ("EVALUATION_ID") ENABLE
CONSTRAINT "SCORES_PERF_FK" FOREIGN KEY ("PERFORMANCE_ID")
 REFERENCES "HR"."PERFORMANCE_PARTS" ("PERFORMANCE_ID") ENABLE

例3-5では、「SQL Statement」ウィンドウで必要な情報を直接入力してevaluations表に外部キー制約を作成します。

例3-5    SQLスクリプトで外部キー制約を追加

ALTER TABLE evaluations
    ADD CONSTRAINT eval_emp_id_fk FOREIGN KEY (employee_id) 
    REFERENCES employees(employee_id);

スクリプトの結果が続きます。

ALTER TABLE evaluations succeeded

これでemployees表のemployee_id列に外部キー制約が作成されました。「SQL」タブをクリックすると、次のSQL文が表定義に追加されたことを確認できます。「Refresh」アイコンをクリックする必要があります。

CONSTRAINT "EVAL_EMP_ID_FK" FOREIGN KEY ("EMPLOYEE_ID")
 REFERENCES "HR"."EMPLOYEES" ("EMPLOYEE_ID") ENABLE
SQL Developerインタフェースを使用して、チェック制約を追加するには、次の手順を実行します。

SQL Developerのグラフィカル・インタフェースを使用して、scores表にチェック制約を追加します。この作業を実行するために、NOT NULL制約のように「Edit Table」ウィンドウを使用することもできます。

  1. 「Connections」ナビゲーション階層で、表の横にあるプラス記号(+)をクリックして表のリストを展開します。

  2. scores表を右クリックします。

  3. 「Constraint」を選択して、「Add Check」を選択します。


    画像の説明

  4. 「Add Check」ウィンドウで、次の情報を入力します。

    • 「Constraint Name」をSCORE_VALIDに設定します。

    • 「Check Condition」をscore >=0 and score <=9に設定します。

    • 「Status」をENABLEに設定します。

    「Apply」 をクリックします。


    画像の説明

  5. 「Confirmation」ウィンドウで「OK」をクリックします。

    これでscores表のscore列に対するチェック制約が作成されました。

次のSQL文が表定義に追加されました。

CONSTRAINT "SCORE_VALID" CHECK (score >=0 and score <=9) ENABLE

表へのデータの追加、変更および削除

SQL Developerを使用して、表へのデータの入力、編集、および既存のデータの削除ができます。次の作業では、performance_parts表に対するこれらのプロセスを説明します。

SQL Developerインタフェースを使用して表へデータを追加するには、次の手順を実行します。

次の手順に従い、データ行をperformance_parts表に追加します。

  1. 「Connections」ナビゲーション階層で、performance_parts表をダブルクリックします。

  2. 表示されているperformance_parts表の「Data」タブをクリックします。

  3. 「Data」ペインで、「New Record」アイコンをクリックします。


    画像の説明

  4. 新しい行で、列または列間のタブを直接クリックし、次の情報を追加します。

    • 「PERFORMANCE_ID」WMに設定します。

    • 「NAME」Workload Managementに設定します。

    • 「WEIGHT」0.2に設定します。

    [Enter]キーを押します。


    画像の説明

  5. 次の情報とともに2番目の行を追加します。PERFORMANCE_IDBRに、NAMEBuilding Relationshipsに、およびWEIGHT0.2に設定します。

    [Enter]キーを押します。

  6. 次の情報とともに3番目の行を追加します。PERFORMANCE_IDCFに、NAMECustomer Focusに、およびWEIGHT0.2に設定します。

    [Enter]キーを押します。

  7. 次の情報とともに4番目の行を追加します。PERFORMANCE_IDCMに、NAMECommunicationに、およびWEIGHT0.2に設定します。

    [Enter]キーを押します。

  8. 次の情報とともに5番目の行を追加します。PERFORMANCE_IDTWに、NAMETeamworkに、およびWEIGHT0.2に設定します。

    [Enter]キーを押します。

  9. 次の情報とともに6番目の行を追加します。PERFORMANCE_IDRDに、NAMEResults Orientationに、およびWEIGHT0.2に設定します。

    [Enter]キーを押します。

  10. 「Commit Changes」アイコンをクリックします。

  11. 「Data Editor Log」ウィンドウを確認してから閉じます。


    画像の説明

  12. performance_parts表の新しいデータを確認します。


    画像の説明

これでperformance_parts表には6行が追加されました。

SQL Developerインタフェースを使用して、表データを変更するには、次の手順を実行します。

次の手順に従い、performance_parts表のデータを変更します。

  1. 「Connections」ナビゲーション階層で、performance_parts表をダブルクリックします。

  2. 表示されているperformance_parts表の「Data」タブをクリックします。

  3. 「Data」ペインのWorkload Management行で、weight値をクリックし、新しい値0.3を入力します。

    Building Relationships行で、weight値をクリックし、新しい値0.15を入力します。

    Customer Focus行で、weight値をクリックし、新しい値0.15を入力します。


    画像の説明

  4. [Enter]キーを押します。

  5. 「Commit Changes」アイコンをクリックします。

  6. 「Data Editor Log」ウィンドウを確認してから閉じます。


    画像の説明

これでperformance_parts表の3つの行の値が変更されました。

SQL Developerインタフェースを使用して、表データを削除するには、次の手順を実行します。

hrスキーマでモデル化された企業において、workload ManagementとResults Orientationのカテゴリに非常に多くの重複があったと仮定します。このため、performance_parts表からResults Orientation行を削除します。

  1. 「Connections」ナビゲーション階層で、performance_parts表をダブルクリックします。

  2. 表示されているperformance_parts表の「Data」タブをクリックします。

  3. 「Data」ペインでResults Orientation行をクリックします。

  4. 「Delete Selected Row(s)」アイコンをクリックします。


    画像の説明

  5. 「Commit Changes」アイコンをクリックします。

  6. 「Data Editor Log」ウィンドウを確認してから閉じます。


    画像の説明

これでperformance_parts表から1行が削除されました。

参照:

  • 『Oracle Database SQL Developerユーザーズ・ガイド』

 

表の索引付け

表で主キーを定義するとき、Oracle Databaseでは主キーが含まれる列に索引が暗黙的に作成されます。たとえば、「Indexes」ペインを見ることでevaluations表の主キーに索引が作成されたことを確認できます。


画像の説明

この項では、以前に作成した表に対して様々な種類の索引を追加する方法を説明します。

SQL Developerインタフェースを使用して、索引を作成するには、次の手順を実行します。

次の手順に従い、evaluations表に新しい索引を作成します。

  1. 「Connections」ナビゲーション階層で、evaluations表を右クリックします。

  2. 「Index」を選択して、「Create Index」を選択します。

    または、「Connections」ナビゲーション階層で、「Indexes」を右クリックし「New Index」を選択することもできます。


    画像の説明

  3. 「Create Index」ウィンドウで、次のパラメータを入力します。

    • 「Schema」HRに設定されていることを確認します。

    • 「Name」EVAL_JOB_IXに設定します。

    プラス記号のような「Add Column Expression」アイコンをクリックします。

    • 「Column Name or Expression」JOB_IDに設定します。

    • 「Order」ASCに設定します。

    「OK」をクリックします。


    画像の説明

これでevaluations表のJOB_ID列に新しい索引EVAL_JOB_IXが作成されました。この索引は、「Connections」ナビゲーション階層で索引のリストから見つけるか、またはevaluations表を開いて「Indexes」タブを参照することにより確認できます。次のスクリプトがこの索引を作成するためのSQL文です。

CREATE INDEX eval_job_ix ON evaluations (job_id ASC) NOPARALLEL;
SQL Developerインタフェースを使用して、索引を変更するには、次の手順を実行します。

次の手順に従い、EVAL_JOB_IX索引のソート順序を逆にします。

  1. 「Connections」ナビゲーション階層のプラス記号(+)で「Indexes」を拡張します。

  2. EVAL_JOB_IXを右クリックして、「Edit」を選択します。


    画像の説明

  3. 「Edit Index」ウィンドウで、「Order」DESCに変更します。

    「OK」をクリックします。

索引が変更されました。次のスクリプトがこの索引を変更するためのSQL文です。

DROP INDEX eval_job_id;
CREATE INDEX eval_job_ix ON evaluations (job_id DESC) NOPARALLEL;
SQL Developerインタフェースを使用して、索引を削除するには、次の手順を実行します。

次の手順に従い、EVAL_JOB_IX索引を削除します。

  1. 「Connections」ナビゲーション階層のプラス記号(+)で「Indexes」を拡張します。

  2. EVAL_JOB_IXを右クリックして、「Drop」を選択します。


    画像の説明

  3. 「Drop」ウィンドウで、「Apply」をクリックします。

  4. 「Confirmation」ウィンドウで「OK」をクリックします。

これでEVAL_JOB_IX索引が削除されました。次のスクリプトがこの索引を削除するためのSQL文です。

DROP INDEX "HR"."EVAL_JOB_ID";

参照:

  • CREATE INDEX文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

  • ALTER INDEX文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

  • DROP INDEX文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

 

表の削除

表およびその内容のすべてをスキーマから削除する必要がある場合があります。このためには、SQL文であるDROP TABLE文を使用してする必要があります。他の概要を学ぶために作成した表を使用し、「SQL Statement」ウィンドウで、削除できる単純な表を次のスクリプトを実行して作成します。

CREATE TABLE temp_table(
  id NUMBER(1,0),
  name VARCHAR2(10)
);
SQL Developerインタフェースを使用して表を削除するには、次の手順を実行します。

次の手順に従い、hrスキーマからTEMP_TABLEを削除します。

  1. 「Connections」ナビゲーション階層で、TEMP_TABLEを右クリックします。

  2. 「Table」を選択して、「Drop」を選択します。


    画像の説明

  3. 「Drop」ウィンドウで、「Apply」をクリックします。

  4. 「Confirmation」ウィンドウで「OK」をクリックします。

これでTEMP_TABLE表が削除されました。次のスクリプトがこの表を削除するためのSQL文です。

DROP TABLE "HR"."TEMP_TABLE";

参照:

  • DROP TABLE文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

 

ビューの使用

ビューとは、1つ以上の表またはビューに基づく論理的な表です。ビューは、異なる複数の表に格納されている情報へ頻繁にアクセスする必要のあるビジネスにおいて特に役立ちます。

ビューの作成

ビューを作成する標準的な構文は次のとおりです。

CREATE VIEW view_name AS query;
SQL Developerインタフェースを使用してビューを作成するには、次の手順を実行します。

次の手順に従い、hrスキーマから新しいビューの作成を削除します。

  1. 「Connections」ナビゲーション階層で、「Views」を右クリックします。

  2. 「New View」を選択します。


    画像の説明

  3. 「Create View」ウィンドウで、次のパラメータを入力します。

    • 「Schema」がHRに設定されていることを確認します。

    • 「Name」をSALESFORCEに設定します。

    • 「SQL Query」を次のように設定します。

      SELECT first_name || ' ' || last_name "Name", salary*12 "Annual Salary"
      FROM employees
      WHERE department_id = 80
      
      
  4. 「SQL Parse Results」で「Test Syntax」をクリックします。


    画像の説明

  5. 「OK」をクリックします。

これで新しいビューが作成されました。このビューを作成するためのSQL文は次のとおりです。

CREATE VIEW salesforce AS 
SELECT first_name || ' ' || last_name "Name", 
 salary*12 "Annual Salary"
FROM employees
WHERE department_id = 80;

例3-6では、企業および作業場所にいるすべての従業員のビューを、「文字ファンクションの使用」で使用した問合せと同じように作成します。

例3-6    SQLスクリプトでビューの作成

CREATE VIEW emp_locations AS
SELECT e.employee_id,
  e.last_name || ', ' || e.first_name name,
  d.department_name department,
  l.city city, 
  c.country_name country
FROM employees e, departments d, locations l, countries c
WHERE e.department_id=d.department_id AND
 d.location_id=l.location_id AND
 l.country_id=c.country_id
ORDER BY last_name;

スクリプトの結果が続きます。

CREATE VIEW succeeded.

これで4つの別々の表の情報を利用した、つまり4方向の結合を行った新しいビューが作成されました。「Connections」ナビゲーション階層では、「Views」のとなりのプラス記号をクリックすると、emp_locationsを確認できます。

ビューの更新

SQL Developerインタフェースでビューのプロパティを変更するには、次の手順を実行します。

マーケティング部門の従業員を追加してsalesforceビューを変更し、ビュー名をsales_marketingに変更します。

  1. 「Connections」ナビゲーション階層で、salesforceビューを右クリックします。

  2. 「Edit」を選択します。


    画像の説明

  3. 「Edit View」ウィンドウで、最後の行にOR department_id = 20を追加してSQL問合せを変更します。

    「Test Syntax」をクリックします。

    「OK」をクリックします。


    画像の説明

  4. ビューの名前を変更するには、salesforceを右クリックし、「Rename」を選択します。


    画像の説明

  5. 「Rename」ウィンドウで、「New View Name」SALES_MARKETINGに設定します。

    「Apply」 をクリックします。


    画像の説明

  6. 「Confirmation」ウィンドウで「OK」をクリックします。

これでビューが変更されました。ビュー内容を変更し、ビュー名を変更するためのSQL文は次のとおりです。

CREATE OR REPLACE VIEW salesforce AS query;
RENAME "SALESFORCE" to SALES_MARKETING;

ビューの削除

SQL Developerインタフェースを使用して、ビューを削除するには、次の手順を実行します。

DROP VIEW文を使用して、sales_marketingビューを削除します。

  1. 「Connections」ナビゲーション階層で、sales_marketingビューを右クリックします。

  2. 「Drop」を選択します。


    画像の説明

  3. 「Drop」ウィンドウで、「Apply」をクリックします。

  4. 「Confirmation」ウィンドウで「OK」をクリックします。

これでビューが削除されました。ビューを削除するためのSQL文は次のとおりです。

DROP VIEW sales_marketing;

参照:

  • CREATE VIEW文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

  • DROP VIEW文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

 

順序の使用

順序は一意の連続した値を生成するデータベース・オブジェクトであり、一意の主キーが必要なときに非常に役立ちます。hrスキーマにはすでにdepartments_seqemployees_seqおよびlocations_seqという3つの順序があります。

順序は次の擬似列を介して使用します。

順序は使用規則を除いて他のオブジェクトに接続されません。表の主キーを移入するために順序を使用する場合は、順序を表にリンクするためにネーミング規則を使用することをお薦めします。この説明においては、そのような順序に対するネーミング規則はtable_name_seqです。

参照:

  • 『Oracle Database SQL言語リファレンス』

 

順序の作成

順序はSQL Developerインタフェースまたは「SQL Statement」ウィンドウを使用して作成できます。

SQL Developerインタフェースを使用して、順序を作成するには、次の手順を実行します。

次の手順では、evaluations表の主キーで使用できる順序、evaluations_seqを作成します。

  1. 「Connections」ナビゲーション階層で「Sequences」を右クリックします。

  2. 「New Sequence」を選択します。


    画像の説明

  3. 「New Sequence」ウィンドウで、次のパラメータを入力します。

    • 「Schema」HRに設定されていることを確認します。

    • 「Name」EVALUATIONS_SEQに設定します。

    「Properties」タブで、次を実行します。

    • 「Increment」1に設定します。

    • 「Starts With」1に設定します。

    • 「Order」にチェックを入れます。

    「OK」をクリックします。


    画像の説明

これでevaluations表の主キーで使用できる順序が作成されました。プラス記号をクリックして順序ツリーを展開すると、新しい順序を確認できます。順序を作成するためのSQL文は次のとおりです。

CREATE SEQUENCE evaluations_seq INCREMENT BY 1 START WITH 1 ORDER;

例3-7では、「SQL Statement」ウィンドウで必要な情報を直接入力して、さらに順序を作成します。

例3-7    SQLスクリプトを使用した順序の作成

CREATE SEQUENCE test_seq INCREMENT BY 5 START WITH 5 ORDER;

スクリプトの結果が続きます。

CREATE SEQUENCE succeeded.

参照:

  • CREATE SEQUENCE文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

 

順序の削除

順序を削除するには、SQL文であるDROP SEQUENCEを使用します。SQL Developerでどのように順序が削除されるかを表示するには、以前に作成したtest_seq順序を使用します。新規順序が「Connections」階層ナビゲータに表示されない場合、「Refresh」アイコンをクリックします。

順序を削除するには、次の手順を実行します。

次の手順に従い、順序を削除します。

  1. 「Connections」ナビゲータで、test_seq順序を右クリックします。


    画像の説明

  2. 「Drop」ウィンドウで、「Apply」をクリックします。


    画像の説明

  3. 「Confirmation」ウィンドウで「OK」をクリックします。

これでtest_seq順序が削除されました。順序を削除するためのSQL文は次のとおりです。

DROP SEQUENCE "HR"."TEST_SEQ";

参照:

  • DROP SEQUENCE文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

 

シノニムの使用

シノニムはスキーマ・オブジェクトの別名であり、SQL文を簡素化するために、またはセキュリティ強化の目的で実際のデータベース・オブジェクトの名前をわからなくするために使用できます。さらに、データベースの表の名前を(departmentsからdivisionsのように)変更する場合、departmentsのシノニムを作成し、以前と同じアプリケーション・コードを使用し続けることができます。

SQL Developerインタフェースを使用して、シノニムを作成するには、次の手順を実行します。

次の手順では、jobsスキーマ・オブジェクトのかわりに使用できるシノニム、positionsを作成します。

  1. 「Connections」ナビゲーション階層で、「Synonyms」を右クリックします。

  2. 「New Synonym」を選択します。


    画像の説明

  3. 「New Synonym」ウィンドウで、次のパラメータを設定します。

    • 「Schema」HRに設定されていることを確認します。

    • 「Name」POSITIONSに設定します。

    「Properties」タブで、次を実行します。

    • 「Object Based」を選択します。これによりシノニムは表、ビュー、順序などの特定のスキーマ・オブジェクトを参照します。

    • 「Object Based」JOBSに設定します。

    「OK」をクリックします。


    画像の説明

これでjobs表に対してpositionsシノニムが作成されました。シノニムを作成するSQL文は次のとおりです。

CREATE SYNONYM positions FOR jobs;

例3-8では、表名jobsのかわりに新しいpositionsシノニムを使用します。

例3-8    シノニムの使用

SELECT first_name || ' ' || last_name "Name", p.job_title "Position"
FROM employees e, positions p
WHERE e.job_id = p.job_id
ORDER BY last_name;

問合せの結果が表示されます。

Name                   Position
---------------------  -------------------------
Ellen Abel             Sales Representative
Sundar Ande            Sales Representative
Mozhe Atkinson         Stock Clerk
David Austin           Programmer
...
197 rows selected

シノニムを削除するには、次の手順を実行します。

次の手順に従い、positionsシノニムを削除します。

  1. 「Connections」ナビゲータで、positionsシノニムを右クリックします。

  2. 「Drop」を選択します。


    画像の説明

  3. 「Drop」ウィンドウで、「Apply」をクリックします。


    画像の説明

  4. 「Confirmation」ウィンドウで「OK」をクリックします。

これでpositionsシノニムが削除されました。シノニムを削除するためのSQL文は次のとおりです。

DROP SYNONYM positions;

参照:

  • CREATE SYNONYM文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

  • DROP SYNONYM文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

 


戻る 次へ
Oracle
Copyright © 2005, 2008, Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引