4 スキーマ・オブジェクトの作成および管理
スキーマ・オブジェクトを作成、変更および削除するには、データ定義言語(DDL)文を使用します。
内容は次のとおりです。
- データ定義言語(DDL)について
データ定義言語(DDL)文はスキーマ・オブジェクトを作成、変更、削除します。DDL文の前後に、Oracle Databaseは暗黙的なCOMMIT文を発行するため、DDL文はロールバックできません。 - 表の作成および管理
表は、Oracle Databaseのデータ記憶域の基本単位です。表は、ユーザーがアクセス可能なすべてのデータを保持します。各表には、それぞれのデータのレコードを表す行が含まれています。行は、レコードのフィールドを表す列で構成されています。 - ビューの作成および管理
ビューは、表として問合せ結果を表示します。表を使用できるほとんどの場所で、ビューを使用できます。複数の異なる表に格納された情報に何度もアクセスする必要がある場合に、ビューが役立ちます。 - 順序の作成および管理
順序は一意の連続した値を生成できるスキーマ・オブジェクトであり、一意の主キーが必要な場合に非常に役立ちます。順序は、疑似列CURRVALおよびNEXTVALを通じて使用します。これらの疑似列は、それぞれ順序の現在と次の値を返します。 - シノニムの作成および管理
シノニムとは別のスキーマ・オブジェクトの別名です。シノニムを使用する理由は、セキュリティ(たとえば、オブジェクトの所有者と位置を分からなくするため)と簡素化のためです。
4.1 データ定義言語(DDL)文について
データ定義言語(DDL)文はスキーマ・オブジェクトを作成、変更、削除します。DDL文の前後に、Oracle Databaseは暗黙的なCOMMIT文を発行するため、DDL文はロールバックできません。
注意:
スキーマ・オブジェクトを作成する場合は、『Oracle Database SQL言語リファレンス』に記載されたスキーマ・オブジェクトのネーミング・ルールに注意してください。
SQL*Plus環境では、SQL>プロンプトに続いてDDL文を入力できます。
SQL Developer環境では、ワークシートにDDL文を入力できます。または、SQL Developerのツールを使用して、オブジェクトを作成、変更および削除することもできます。
スキーマ・オブジェクトを作成するDDL文に、オプションのOR REPLACE句が入る場合があります。これらの句を使用すると、DDL文の既存のスキーマ・オブジェクトを同じ名前とタイプの他のスキーマ・オブジェクトに置き換えられます。SQL Developerがこの文に対してコードを生成する場合、常にOR REPLACE句が含まれます。
SQL DeveloperでDDL文の結果を確認するには、「接続」フレームで新しく作成されたオブジェクトのスキーマ・オブジェクト・タイプを選択して、「リフレッシュ」アイコンをクリックします。
関連項目:
-
DDL文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
4.2 表の作成および管理
表は、Oracle Databaseのデータ記憶領域の基本単位です。表は、ユーザーがアクセス可能なすべてのデータを保持します。各表には、それぞれのデータのレコードを表す行が含まれています。行は、レコードのフィールドを表す列で構成されています。
注意:
このマニュアルのチュートリアルを行うには、ユーザーHRとして、SQL DeveloperからOracle Databaseに接続している必要があります。
内容は次のとおりです。
- SQLデータ型について
表を作成するときは、各列にSQLデータ型を指定します。列がどのような値を持つことができるかは、列のデータ型によって決まります。 - 表の作成
表を作成するには、SQL Developerの表の作成ツールまたはDDL文のCREATE TABLEを使用します。 - 表のデータ整合性の保証
ユーザーのアプリケーションが形成するビジネス・ルールを表内のデータが満たすことを保証するために、制約、アプリケーション・ロジック、またはその両方を使用できます。 - チュートリアル: 行の挿入ツールによる表への行の追加
このチュートリアルでは、行の挿入ツールを使用してPERFORMANCE_PARTS表に移入済の6つの行を追加する方法について説明します。 - チュートリアル: 「データ」ペインにある表のデータの変更
このチュートリアルでは、「データ」ペインのPERFORMANCE_PARTS表の3つのWEIGHT値を変更する方法を説明します。 - チュートリアル: 選択した行の削除ツールを使用した表内の行の削除
このチュートリアルでは、選択した行の削除ツールを使用して、PERFORMANCE_PARTS表から行を削除する方法について説明します。 - 索引の管理
表の1つ以上の列に索引を作成すると、その表に対するSQL文の実行を高速化できます。索引は、適切に使用すれば、ディスク入力/出力(I/O)を削減させる重要な手段となります。 - 表の削除
表を削除するには、SQL Developerの「接続」フレームと削除ツールまたはDDL文のDROP TABLEを使用します。
関連項目:
-
表の作成および移入について説明しているSQL Developerチュートリアルは、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。
-
表の一般情報は、『Oracle Database概要』を参照してください。
4.2.1 SQLデータ型について
表を作成するときは、各列にSQLデータ型を指定する必要があります。列がどのような値を持つことができるかは、列のデータ型によって決まります。
たとえば、DATE型の列は、'01-MAY-05'
という値を持つことはできますが、数値2や文字値'shoe'を持つことはできませんSQLのデータ型には、ビルトインとユーザー定義の2種類があります。(PL/SQLには追加のデータ型があります。詳細は、「PL/SQLデータ型について」を参照してください。)
関連項目:
-
埋込みSQLデータ型の要約については、『Oracle Database SQL言語リファレンス』を参照してください。
-
各埋込みSQLデータ型の概要については、『Oracle Database概要』を参照してください。
-
ユーザー定義のデータ型の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
4.2.2 表の作成
表を作成するには、SQL Developerの表の作成ツールまたはDDL文のCREATE TABLEを使用します。
この項では、従業員の次のような評価に関するデータを含む表を、これらの方法で作成する手順について説明します。
-
PERFORMANCE_PARTS。この表には、従業員のパフォーマンスに関して評価対象となるカテゴリおよびカテゴリの相対的な重みが含まれます。
-
EVALUATIONS。この表には、従業員情報、評価日、役職、マネージャおよび部門が含まれます。
-
SCORES。この表には、各評価の各パフォーマンス・カテゴリに割り当てられたスコアが含まれます。
これらの表は、このドキュメントの多くのチュートリアルおよび例に表示されます。
内容は次のとおりです。
- チュートリアル: 表の作成ツールを使用した表の作成
このチュートリアルでは、SQL Developerの表の作成ツールを使用してPERFORMANCE_PARTS
表を作成する方法について説明します。 - CREATE TABLE文を使用した表の作成
ここでは、CREATE TABLE文を使用してEVALUATIONSおよびSCORESの各表を作成する方法について説明します。
4.2.2.1 チュートリアル: 表の作成ツールを使用した表の作成
このチュートリアルでは、SQL Developerの表の作成ツールを使用してPERFORMANCE_PARTS
表を作成する方法について説明します。
表の作成ツールを使用してPERFORMANCE_PARTS表を作成するには、次の手順を実行します。
関連項目:
SQL Developerを使用して表を作成する方法の詳細は、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。
4.2.2.2 CREATE TABLE文を使用した表の作成
ここでは、CREATE TABLE文を使用してEVALUATIONSおよびSCORESの各表を作成する方法について説明します。
例4-1のCREATE TABLE文はEVALUATIONS表を作成します。
例4-2のCREATE TABLE文はSCORES表を作成します。
SQL Developerの「接続」フレームで、EVALUATIONS表とSCORES表を表示するには、「表」を展開します。
例4-1 CREATE TABLEを使用したEVALUATIONS表の作成
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) );
結果:
Table created.
例4-2 CREATE TABLEを使用したSCORES表の作成
CREATE TABLE SCORES ( EVALUATION_ID NUMBER(8,0), PERFORMANCE_ID VARCHAR2(2), SCORE NUMBER(1,0) );
結果:
Table created.
関連項目:
CREATE TABLE文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
4.2.3 表のデータ整合性の保証
表内のデータが、アプリケーションによってモデル化されるビジネス・ルールを満たすようにするには、制約とアプリケーション・ロジックのいずれかまたは両方を使用します。
ヒント:
可能な場合は常に、アプリケーション・ロジックではなく制約を使用します。Oracle Databaseは、すべてのデータが制約に従っているかの確認をアプリケーション・ロジックよりも高速に実行できます。
内容は次のとおりです。
- 制約について
制約によって、列の値が制限されます。データに対して制約に違反するような変更を試みると、エラーが発生して変更がロールバックされます。移入された表に新しい制約を適用する場合に、既存の行のいずれかが新しい制約に違反していると、エラーが発生します。 - チュートリアル: 既存の表への制約の追加
このチュートリアルでは、SQL DeveloperツールおよびALTER TABLE文の両方を使用して既存の表に制約を追加する方法を説明します。
関連項目:
-
制約の一般情報は、『Oracle Database概要』を参照してください。
-
制約の構文情報は、『Oracle Database SQL言語リファレンス』を参照してください。
-
制約の有効化および無効化の詳細は、『Oracle Database開発ガイド』を参照してください。
4.2.3.1 制約について
制約によって、列の値が制限されます。データに対して制約に違反するような変更を試みると、エラーが発生して変更がロールバックされます。移入された表に新しい制約を適用する場合に、既存の行のいずれかが新しい制約に違反していると、エラーが発生します。
制約は有効または無効にできます。デフォルトでは、有効の状態で作成されます。
制約タイプは次のとおりです。
-
Not Null。値がNULLになることを禁止します。
EMPLOYEES表では、LAST_NAME列がNOT NULL制約を持ち、全従業員に対して姓を持たせるというビジネス・ルールが適用されます。
-
一意。同じ列または列の組合せの中で複数の行が同じ値を持つことを禁止しますが、NULLの値を許可します。
EMPLOYEES表では、EMAIL列がUNIQUE制約を持つため、従業員は電子メール・アドレスを持たなくてもよいが、他の従業員と同じ電子メール・アドレスを持つことはできないというビジネス・ルールが適用されます。
-
主キー。これは、NOT NULLとUNIQUEの組合せです。
EMPLOYEES表では、EMPLOYEE_ID列がPRIMARY KEY制約を持つため、全従業員に対して一意の識別番号を持たせるというビジネス・ルールが適用されます。
-
外部キー。ある表の値が、別の表の値と一致することを要求します。
EMPLOYEES表では、JOB_ID列がJOBS表を参照するFOREIGN KEY制約を持つため、従業員はJOBS表に存在しないJOB_IDを持つことができないというビジネス・ルールが適用されます。
-
チェック。指定された条件を値が満たすことを要求します。
EMPLOYEES表にはCHECK制約がありません。ただし、EMPLOYEESに新しい列EMPLOYEE_AGEが必要であり、全従業員が18歳以上である必要があると想定します。制約CHECK
(EMPLOYEE_AGE >= 18)
によって、そのビジネス・ルールが適用されます。ヒント:
チェック制約は、必要なチェックを他の制約では実現できない場合にのみ使用します。
-
REF: REF列と参照先のオブジェクトの関係をさらに詳しく記述します。
REF列は、別のオブジェクト・タイプまたはリレーショナル表のオブジェクトを参照します。
REF制約の詳細は、『Oracle Database概要』を参照してください。
関連項目:
-
制約の種類の一般情報は、『Oracle Database概要』を参照してください。
-
制約の構文情報は、『Oracle Database SQL言語リファレンス』を参照してください。
4.2.3.2 チュートリアル: 既存の表への制約の追加
このチュートリアルでは、SQL DeveloperツールおよびALTER TABLE文の両方を使用して既存の表に制約を追加する方法を説明します。
既存の表に制約を追加するには、SQL DeveloperツールまたはDDL文のALTER TABLEを使用します。このトピックでは、これら2つの方法を使用して、「表の作成」で作成した表に制約を追加する方法を示します。
このチュートリアルでは様々な手順を説明します。最初の手順では、「表の編集」ツールを使用してNOT NULL制約をPERFORMANCE_PARTS
表のNAMES
列に追加します。その他の手順では、他のツールで制約を追加する方法を示しますが、表の編集ツールを使用して同じ制約を追加することもできます。
注意:
チュートリアルの手順を実行した後、表が持つ制約を表示するには、次のようにします。
-
「接続」フレームでは、表の名前を選択します。
-
右側のフレームで、「制約」タブをクリックします。
表のプロパティとデータの表示の詳細は、「チュートリアル: SQL DeveloperによるEMPLOYEES表のプロパティとデータの表示」を参照してください。
表の編集ツールを使用してNot Null制約を追加するには、次の手順を実行します。
-
「接続」フレームで、hr_connを展開します。
-
スキーマ・オブジェクト・タイプのリストで、「表」を展開します。
-
表のリストで、PERFORMANCE_PARTSを右クリックします。
-
選択肢のリストで、「編集」をクリックします。
-
「表の編集」ウィンドウで、「NAME」列をクリックします。
-
「NULL以外」プロパティを選択します。
-
「OK」をクリックします。
PERFORMANCE_PARTS
表のNAME
列にNot Null制約が追加されます。
次の手順では、ALTER TABLE文を使用し、PERFORMANCE_PARTS表のWEIGHT
列にNOT NULL制約を追加します。
ALTER TABLE文を使用してNot Null制約を追加するには、次の手順を実行します。
-
hr_connというタブが含まれるペインがあれば、それを選択します。そうでない場合は、「SQL Developerにおける問合せの実行」にあるように、「SQLワークシート」アイコンをクリックします。
-
ワークシート・ペインで、次の文を入力します。
ALTER TABLE PERFORMANCE_PARTS MODIFY WEIGHT NOT NULL;
-
「文の実行」アイコンをクリックします。
文が実行され、
PERFORMANCE_PARTS
表のWEIGHT
列にNot Null制約が追加されます。
次の手順では、一意を追加ツールを使用してSCORES
表に一意制約を追加します。
一意の追加ツールを使用して一意制約を追加するには、次の手順を実行します。
-
「接続」フレームで、hr_connを展開します。
-
スキーマ・オブジェクト・タイプのリストで、「表」を展開します。
-
表のリストで、SCORESを右クリックします。
-
選択肢のリストで、「制約」を選択します。
-
選択肢のリストで、「一意の追加」をクリックします。
-
「一意の追加」ウィンドウで、次の手順を実行します。
-
「制約名」にSCORES_EVAL_PERF_UNIQUEと入力します。
-
「列1」で、メニューからEVALUATION_IDを選択します。
-
「列2」で、メニューからPERFORMANCE_IDを選択します。
-
「適用」をクリックします。
-
-
「確認」ウィンドウで「OK」をクリックします。
SCORES_EVAL_PERF_UNIQUE
という名前の一意制約が、SCORES
表に追加されます。
次の手順では、主キーを追加ツールを使用し、PERFORMANCE_PARTS
表のPERFORMANCE_ID
列に主キー制約を追加します。
主キーの追加ツールを使用して主キー制約を追加するには、次の手順を実行します。
-
「接続」フレームで、hr_connを展開します。
-
スキーマ・オブジェクト・タイプのリストで、「表」を展開します。
-
表のリストで、PERFORMANCE_PARTSを右クリックします。
-
選択肢のリストで、「制約」を選択します。
-
選択肢のリストで、「主キーの追加」をクリックします。
-
「主キーの追加」ウィンドウで、次の手順を実行します。
-
「主キー名」にPERF_PERF_ID_PKと入力します。
-
「列1」で、メニューからPERFORMANCE_IDを選択します。
-
「適用」をクリックします。
-
-
「確認」ウィンドウで「OK」をクリックします。
PERFORMANCE_PARTS
表のPERFORMANCE_ID
列に、PERF_PERF_ID_PK
という名前の主キー制約が追加されます。
次の手順では、ALTER TABLE文を使用し、EVALUATIONS
表のEVALUATION_ID
列に主キー制約を追加します。
ALTER TABLE文を使用して主キー制約を追加するには、次の手順を実行します。
-
hr_connというタブが含まれるペインがあれば、それを選択します。そうでない場合は、「SQL Developerにおける問合せの実行」にあるように、「SQLワークシート」アイコンをクリックします。
-
ワークシート・ペインで、次の文を入力します。
ALTER TABLE EVALUATIONS ADD CONSTRAINT EVAL_EVAL_ID_PK PRIMARY KEY (EVALUATION_ID);
-
「文の実行」アイコンをクリックします。
文が実行され、
EVALUATIONS
表のEVALUATION_ID
列に主キー制約が追加されます。
次の手順では、「外部キーの追加」ツールを使用してSCORES
表に2つの外部キー制約を追加します。
外部キーの追加ツールを使用して2つの外部キー制約を追加するには、次の手順を実行します。
-
「接続」フレームで、hr_connを展開します。
-
スキーマ・オブジェクト・タイプのリストで、「表」を展開します。
-
表のリストで、SCORESを右クリックします。
-
選択肢のリストで、「制約」を選択します。
-
選択肢のリストで、「外部キーの追加」をクリックします。
-
「外部キーの追加」ウィンドウで、次の手順を実行します。
-
「制約名」にSCORES_EVAL_FKと入力します。
-
「列名」で、メニューからEVALUATION_IDを選択します。
-
「参照表名」で、メニューからEVALUATIONSを選択します。
-
「参照元の列」で、メニューからEVALUATION_IDを選択します。
-
「適用」をクリックします。
-
-
「確認」ウィンドウで「OK」をクリックします。
EVALUATIONS
表のEVALUTION_ID
列を参照するSCORES
表のEVALUTION_ID
列に、SCORES_EVAL_FK
という名前の外部キー制約が追加されます。次の手順では、別の外部キー制約を
SCORES
表に追加します。 -
表のリストで、SCORESを右クリックします。
-
表のリストで、「制約」を選択します。
-
選択肢のリストで、「外部キーの追加」をクリックします。
「外部キーの追加」ウィンドウが開きます。
-
「外部キーの追加」ウィンドウで、次の手順を実行します。
-
「制約名」にSCORES_PERF_FKと入力します。
-
「列名」で、メニューからPERFORMANCE_IDを選択します。
-
「参照表名」で、メニューからPERFORMANCE_PARTSを選択します。
-
「参照元の列」で、メニューからPERFORMANCE_IDを選択します。
-
「適用」をクリックします。
-
-
「確認」ウィンドウで「OK」をクリックします。
EVALUATIONS
表のEVALUTION_ID
列を参照するSCORES
表のEVALUTION_ID
列に、SCORES_PERF_FK
という名前の外部キー制約が追加されます。
次の手順では、ALTER TABLE文を使用し、EVALUATIONS
表のEMPLOYEE_ID
列に外部キー制約を追加し、EMPLOYEES
表のEMPLOYEE_ID
列を参照します。
ALTER TABLE文を使用して外部キー制約を追加するには、次の手順を実行します。
-
hr_connというタブが含まれるペインがあれば、それを選択します。そうでない場合は、「SQL Developerにおける問合せの実行」にあるように、「SQLワークシート」アイコンをクリックします。
-
ワークシート・ペインで、次の文を入力します。
ALTER TABLE EVALUATIONS ADD CONSTRAINT EVAL_EMP_ID_FK FOREIGN KEY (EMPLOYEE_ID) REFERENCES EMPLOYEES (EMPLOYEE_ID);
-
「文の実行」アイコンをクリックします。
文が実行され、
EMPLOYEES
表のEMPLOYEE_ID
列を参照するEVALUATIONS
表のEMPLOYEE_ID
列に外部キー制約が追加されます。
次の手順では、チェックを追加ツールを使用してSCORES
表にチェック制約を追加します。
チェックの追加ツールを使用してチェック制約を追加するには、次の手順を実行します。
-
「接続」フレームで、hr_connを展開します。
-
スキーマ・オブジェクト・タイプのリストで、「表」を展開します。
-
表のリストで、SCORESを右クリックします。
-
選択肢のリストで、「制約」を選択します。
-
選択肢のリストで、「チェックの追加」をクリックします。
-
「チェックの追加」ウィンドウで、次の手順を実行します。
-
「制約名」にSCORE_VALIDと入力します。
-
「CHECK条件」に、score >= 0 and score <+ 9と入力します。
-
「ステータス」では、デフォルトの
ENABLE
を受け入れます。 -
「適用」をクリックします。
-
-
「確認」ウィンドウで「OK」をクリックします。
SCORE_VALID
という名前のチェック制約が、SCORES
表に追加されます。
関連項目:
-
ALTER TABLE文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
-
SQL Developerで作成する表に制約を追加する方法については、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。
-
CREATE TABLE文で作成する表に制約を追加する方法については、『Oracle Database SQL言語リファレンス』を参照してください。
4.2.4 チュートリアル: 行の挿入ツールによる表への行の追加
このチュートリアルでは、行の挿入ツールを使用してPERFORMANCE_PARTS表に移入済の6つの行を追加する方法について説明します。
行の挿入ツールを使用してPERFORMANCE_PARTS表に行を追加するには、次の手順を実行します。
関連項目:
4.2.5 チュートリアル: 「データ」ペインにある表のデータの変更
このチュートリアルでは、「データ」ペインのPERFORMANCE_PARTS表の3つのWEIGHT値を変更する方法を説明します。
PERFORMANCE_PARTS表は、"「チュートリアル: 行の挿入ツールによる表への行の追加」で移入されました。
「データ」ペインを使用してPERFORMANCE_PARTS表のデータを変更するには、次の手順を実行します。
-
「接続」フレームで、hr_connを展開します。
-
スキーマ・オブジェクト・タイプのリストで、「表」を展開します。
-
表のリストで、PERFORMANCE_PARTSを選択します。
-
右側のフレームで、「データ」タブをクリックします。
-
「データ」ペインのNAMEが"Workload Management"である行で、次の手順を実行します。
-
WEIGHT値をクリックします。
-
値0.3を入力します。
-
[Enter]キーを押します。
行番号の左に、変更がコミットされていないことを示すアスタリスクが表示されます。
-
-
NAMEが"Building Relationships"である行で、次の手順を実行します。
-
WEIGHT値をクリックします。
-
値0.15を入力します。
-
[Enter]キーを押します。
行番号の左に、変更がコミットされていないことを示すアスタリスクが表示されます。
-
-
NAMEが"Customer Focus"である行で、次の手順を実行します。
-
WEIGHT値をクリックします。
-
値0.15を入力します。
-
[Enter]キーを押します。
行番号の左に、変更がコミットされていないことを示すアスタリスクが表示されます。
-
-
「変更のコミット」アイコンをクリックします。
行番号の左のアスタリスクが消えます。
-
「データ」ペインの下のメッセージ - ログペインに、「コミットは成功しました」という記述があることを確認します。
-
「データ」ペインで新しいデータを確認します。
関連項目:
4.2.6 チュートリアル: 選択した行の削除ツールを使用した表内の行の削除
このチュートリアルでは、選択した行の削除ツールを使用してPERFORMANCE_PARTS表から行を削除する方法について説明します。
PERFORMANCE_PARTS表は、"「チュートリアル: 行の挿入ツールによる表への行の追加」で移入されました。
選択した行の削除ツールを使用してPERFORMANCE_PARTSから行を削除するには、次の手順を実行します。
注意:
表内のすべての行を削除しても、空の表が残ります。表を削除する方法は、「表の削除」を参照してください。
関連項目:
4.2.7 索引の管理
表の1つ以上の列に対して索引を作成すると、その表におけるSQL文の実行速度が向上します。索引は、適切に使用すれば、ディスク入力/出力(I/O)を削減させる重要な手段となります。
表に主キーを定義する場合
-
既存の索引が主キー列で始まる場合、Oracle Databaseは主キーのその既存の索引を使用します。既存の索引は一意である必要はありません。
たとえば、主キー(A, B)を定義する場合、Oracle Databaseは既存の索引(A, B, C)を使用します。
-
既存の索引が主キー列で始まり、制約が即時の場合、Oracle Databaseは主キーに一意索引を作成します。
-
既存の索引が主キー列で始まり、制約が遅延可能の場合、Oracle Databaseは主キーに一意でない索引を作成します。
たとえば、「チュートリアル: 既存の表への制約の追加」では、EVALUATIONS表のEVALUATION_ID列に主キー制約を追加しました。このため、SQL Developerの「接続」 フレームで、EVALUATIONS表を選択し、「索引」タブをクリックすると、「索引」ペインに、EVALUATION_ID列に対する一意索引が表示されます。
内容は次のとおりです。
- チュートリアル: 索引の作成ツールを使用した索引の追加
このチュートリアルでは、索引の作成ツールを使用してEVALUATIONS表に索引を追加する方法について説明します。 - チュートリアル: 索引の編集ツールを使用した索引の変更
このチュートリアルでは、索引の編集ツールを使用して、索引EVAL_JOB_IXのソート順序を逆にする方法について説明します。 - チュートリアル: 索引の削除
このチュートリアルでは、「接続」フレームおよび削除ツールを使用して、索引EVAL_JOB_IXを削除する方法について説明します。
4.2.7.1 チュートリアル: 索引の作成ツールを使用した索引の追加
このチュートリアルでは、「索引の作成」ツールを使用して、EVALUATIONS表に索引を追加する方法について説明します。
EVALUATIONS表は、例4-1で作成しました。
索引を作成するには、SQL Developerの索引の作成ツールまたはDDL文のCREATE INDEXを使用します。次のようなDDL文を使用します。
CREATE INDEX EVAL_JOB_IX ON EVALUATIONS (JOB_ID ASC) NOPARALLEL;
索引の作成ツールを使用してEVALUATIONS表に索引を追加するには、次の手順を実行します。
-
「接続」フレームで、hr_connを展開します。
-
スキーマ・オブジェクト・タイプのリストで、「表」を展開します。
-
表のリストで、EVALUATIONSを右クリックします。
-
選択肢のリストで、「索引」を選択します。
-
選択肢のリストで、「索引の作成」を選択します。
-
「索引の作成」 ウィンドウで、次の手順を実行します。
-
「スキーマ」では、デフォルトのHRを受け入れます。
-
「名前」にEVAL_JOB_IXと入力します。
-
「定義」ペインが表示されない場合は、「定義」タブを選択します。
-
「定義」ペインで、「索引のタイプ」に、メニューから「一意」を選択します。
-
「式の追加」アイコンをクリックします。
「順序」が<Not Specified>の式EMPLOYEE_IDが表示されます。
-
EMPLOYEE_IDを上書きしてJOB_IDと入力します。
-
「順序」では、メニューからASC (昇順)を選択します。
-
「OK」をクリックします。
EVALUATIONS表のJOB_ID列に、EVAL_JOB_IXという名前の索引が追加されます。
-
関連項目:
文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
4.2.7.2 チュートリアル: 索引の編集ツールを使用した索引の変更
このチュートリアルでは、索引の編集ツールを使用して、索引EVAL_JOB_IXのソート順序を逆にする方法について説明します。
索引を変更するには、SQL Developerの索引の編集ツールまたはDDL文のDROP INDEXとCREATE INDEXを使用します。
次のようなDDL文を使用します。
DROP INDEX EVAL_JOB_ID; CREATE INDEX EVAL_JOB_IX ON EVALUATIONS (JOB_ID DESC) NOPARALLEL;
索引の編集ツールを使用して索引EVAL_JOB_IXのソート順序を逆にするには、次の手順を実行します。
- 「接続」フレームで、hr_connを展開します。
- スキーマ・オブジェクト・タイプのリストで、「索引」を展開します。
- 索引のリストで、EVAL_JOB_IXを右クリックします。
- 選択肢のリストで、「編集」をクリックします。
- 「索引の編集」ウィンドウで、「順序」をDESCに変更します。
- 「OK」をクリックします。
- 「置換の確認」ウィンドウで、「はい」または「いいえ」をクリックします。
関連項目:
ALTER INDEX文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
4.2.7.3 チュートリアル: 索引の削除
このチュートリアルでは、「接続」フレームおよび削除ツールを使用して、索引EVAL_JOB_IXを削除する方法について説明します。
索引を削除するには、SQL Developerの「接続」フレームと削除ツールまたはDDL文DROP INDEXのいずれかを使用します。次のようなDDL文を使用します。
DROP INDEX EVAL_JOB_ID;
索引EVAL_JOB_IXを削除するには、次の手順を実行します。
- 「接続」フレームで、hr_connを展開します。
- スキーマ・オブジェクト・タイプのリストで、「索引」を展開します。
- 索引のリストで、EVAL_JOB_IXを右クリックします。
- 選択肢のリストで、「削除」をクリックします。
- 削除ウィンドウで、「適用」をクリックします。
- 「確認」ウィンドウで「OK」をクリックします。
関連項目:
DROP INDEX文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
4.2.8 表の削除
表を削除するには、SQL Developerの「接続」フレームと削除ツールまたはDDL文のDROP TABLEを使用します。
注意:
「表の作成」で作成した表は今後のチュートリアルで必要なため、削除しないでください。表の削除の練習をする際は、簡単な表を作成し、それを削除してください。
削除ツールを使用して表を削除するには、次の手順を実行します。
- 「接続」フレームで、hr_connを展開します。
- スキーマ・オブジェクト・タイプのリストで、「表」を展開します。
- 表のリストで、削除する表の名前を右クリックします。
- 選択肢のリストで、「表」を選択します。
- 選択肢のリストで、「削除」をクリックします。
- 削除ウィンドウで、「適用」をクリックします。
- 「確認」ウィンドウで「OK」をクリックします。
関連項目:
DROP TABLE文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
4.3 ビューの作成および管理
ビューは、表として問合せ結果を表示します。表を使用できるほとんどの場所で、ビューを使用できます。複数の異なる表に格納された情報に何度もアクセスする必要がある場合に、ビューが役立ちます。
内容は次のとおりです。
- ビューの作成
ビューを作成するには、SQL Developerのビューの作成ツールまたはDDL文のCREATE VIEWを使用します。 - ビューの問合せの変更
ビューで問合せを変更するには、OR REPLACE句を持つDDL文CREATE VIEWを使用します。 - チュートリアル: 名前の変更ツールを使用したビュー名の変更
このチュートリアルでは、名前の変更ツールを使用して、SALESFORCEビューの名前を変更する方法について説明します。 - ビューの削除
ビューを削除するには、SQL Developerの「接続」フレームと削除ツールまたはDDL文のDROP VIEWを使用します。
関連項目:
-
問合せの詳細は、「表データの選択」を参照してください。
-
ビューの一般情報は、『Oracle Database概要』を参照してください。
4.3.1 ビューの作成
ビューを作成するには、SQL Developerのビューの作成ツールまたはDDL文のCREATE VIEWを使用します。
このトピックでは、これら両方の方法を使用して、次のようなビューを作成する方法を示します。
-
SALESFORCE。営業部に所属する従業員の名前と給与が含まれます。
-
EMP_LOCATIONS。全従業員の名前と事業所が含まれます。
このビューは、「INSTEAD OFトリガーの作成」で使用されます。
内容は次のとおりです。
- チュートリアル: ビューの作成ツールを使用したビューの作成
このチュートリアルでは、ビューの作成ツールを使用してSALESFORCE表を作成する方法について説明します。 - CREATE VIEW文を使用したビューの作成
この例では、CREATE VIEW文を使用して、4つの表を結合するEMP_LOCATIONSビューを作成します。
関連項目:
-
SQL Developerを使用してビューを作成する方法の詳細は、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。
-
CREATE VIEW文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
4.3.1.1 チュートリアル: ビューの作成ツールを使用したビューの作成
このチュートリアルでは、ビューの作成ツールを使用してSALESFORCEビューを作成する方法について説明します。
ビューの作成ツールを使用してSALESFORCEビューを作成するには、次の手順を実行します。
関連項目:
SQL Developerを使用してビューを作成する方法の詳細は、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。
4.3.1.2 CREATE VIEW文を使用したビューの作成
この例では、CREATE VIEW文を使用して、4つの表を結合するEMP_LOCATIONSビューを作成します。
例4-3のCREATE VIEW文は、4つの表を結合するEMP_LOCATIONS表を作成します。(結合の詳細は、「複数の表からのデータの選択」を参照してください。)
例4-3 CREATE VIEW文を使用したEMP_LOCATIONSビューの作成
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;
結果:
View EMP_LOCATIONS created.
関連項目:
CREATE VIEW文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
4.3.2 ビューの問合せの変更
ビューで問合せを変更するには、OR REPLACE句を持つDDL文CREATE VIEWを使用します。
例4-4のCREATE OR REPLACE VIEW文により、SALESFORCEビューの問合せが変更されます。
例4-4 SALESFORCEビューの問合せの変更
CREATE OR REPLACE VIEW SALESFORCE AS
SELECT FIRST_NAME || ' ' || LAST_NAME "Name",
SALARY*12 "Annual Salary"
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 80 OR DEPARTMENT_ID = 20;
結果:
View SALESFORCE created.
関連項目:
OR REPLACE句を使用したCREATE VIEWの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
4.3.3 チュートリアル: 名前変更ツールを使用したビュー名の変更
このチュートリアルでは、名前の変更ツールを使用して、SALESFORCEビューの名前を変更する方法について説明します。
ビューの名前を変更するには、SQL Developerの名前変更ツールまたはRENAME文を使用します。次のようなDDL文を使用します。
RENAME SALESFORCE to SALES_MARKETING;
名前の変更ツールを使用してSALESFORCEビューを変更するには、次の手順を実行します。
- 「接続」フレームで、hr_connを展開します。
- スキーマ・オブジェクト・タイプのリストで、「ビュー」を展開します。
- ビューのリストで、SALESFORCEを右クリックします。
- 選択肢のリストで、「名前変更」を選択します。
- 「名前変更」ウィンドウで、「新規ビュー名」フィールドにSALES_MARKETINGと入力します。
- 「適用」をクリックします。
- 「確認」ウィンドウで「OK」をクリックします。
関連項目:
RENAME文の詳細は、Oracle Database SQLリファレンスを参照
4.3.4 ビューの削除
ビューを削除するには、SQL Developerの「接続」フレームと削除ツールまたはDDL文のDROP VIEWを使用します。
次のチュートリアルでは、「接続」フレームと削除ツールを使用して、SALES_MARKETINGビュー(「チュートリアル: 名前変更ツールを使用したビュー名の変更」で変更)を削除する方法を示します。次のようなDDL文を使用します。
DROP VIEW SALES_MARKETING;
削除ツールを使用してSALES_MARKETINGビューを削除するには、次の手順を実行します。
- 「接続」フレームで、hr_connを展開します。
- スキーマ・オブジェクト・タイプのリストで、「ビュー」を展開します。
- ビューのリストで、SALES_MARKETINGを右クリックします。
- 選択肢のリストで、「削除」をクリックします。
- 「削除」ウィンドウで、「適用」をクリックします。
- 「確認」ウィンドウで「OK」をクリックします。
関連項目:
DROP VIEW文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
4.4 順序の作成および管理
順序は一意の連続した値を生成できるスキーマ・オブジェクトであり、一意の主キーが必要な場合に非常に役立ちます。順序は、疑似列CURRVALおよびNEXTVALを通じて使用します。これらの疑似列は、それぞれ順序の現在と次の値を返します。
順序の作成後、NEXTVALを使用して最初の値を取得し、順序を初期化する必要があります。順序を初期化した後のみ、CURRVALは現在の値を戻します。
HRスキーマにはDEPARTMENTS_SEQUENCE、EMPLOYEES_SEQUENCE、LOCATIONS_SEQUENCEという3つの順序があります。
ヒント:
表の主キーを移入するために順序を使用する場合は、順序に、その目的を反映する名前を付けます。(ここでは、ネーミング規則TABLE_NAME_SEQUENCEを使用します。)
内容は次のとおりです。
- チュートリアル: 順序の作成
このチュートリアルでは、データベース順序の作成ツールを使用して順序を作成し、それを使用して、EVALUATIONS表に主キーを生成する方法を示します。 - 順序の削除
順序を削除するには、SQL Developerの「接続」フレームと削除ツールまたはDDL文のDROP SEQUENCEを使用します。
関連項目:
-
順序ジェネレータの詳細は、『Oracle Database概要』を参照してください。
-
CURRVALおよびNEXTVAL疑似列の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
-
順序の管理の詳細は、『Oracle Database管理者ガイド』を参照してください。
4.4.1 チュートリアル: 順序の作成
このチュートリアルでは、データベース順序の作成ツールを使用して順序を作成し、それを使用して、EVALUATIONS表に主キーを生成する方法を示します。
EVALUATIONS表は、例4-1で作成しました。
順序を作成するには、SQL Developerの順序の作成ツールまたはDDL文CREATE SEQUENCEを使用します。次のようなDDL文を使用します。
CREATE SEQUENCE evaluations_sequence INCREMENT BY 1 START WITH 1 ORDER;
データベース順序の作成ツールを使用してEVALUATIONS_SEQUENCEを作成するには、次の手順を実行します。
-
「接続」フレームで、hr_connを展開します。
-
スキーマ・オブジェクト・タイプのリストで、「順序」を右クリックします。
-
選択肢のリストで、「新規順序」をクリックします。
-
「順序の作成」ウィンドウで、「名前」フィールドにEVALUATIONS_SEQUENCEと入力して、デフォルト値"SEQUENCE1"を上書きします。
-
「プロパティ」ペインが表示されない場合は、「プロパティ」タブをクリックします。
-
「プロパティ」ペインで、次の手順を実行します。
-
「増分」フィールドに1を入力します。
-
「接続」フィールドに1を入力します。
-
残りのフィールドでは、デフォルト値を受け入れます。
-
「OK」をクリックします。
順序EVALUATIONS_SEQUENCEが作成されます。「接続」フレームの「順序」の下にその名前が表示されます。
-
関連項目:
-
SQL Developerを使用して順序を作成する方法の詳細は、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。
-
CREATE SEQUENCE文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
-
EVALUATIONS_SEQUENCEによって作成された主キーをEVALUATIONS表に挿入するトリガーを作成する方法については、「チュートリアル: 行が挿入される前に主キーを生成するトリガーの作成」を参照してください。
4.4.2 順序の削除
順序を削除するには、SQL Developerの「接続」フレームと削除ツールまたはDDL文のDROP SEQUENCEを使用します。
この文は、順序EVALUATIONS_SEQUENCEを削除します。
DROP SEQUENCE EVALUATIONS_SEQUENCE;
注意:
例5-3で必要なため、順序EVALUATIONS_SEQUENCE
を削除しないでください。順序の削除の練習をする際は、簡単な順序を作成し、それを削除してください。
削除ツールを使用して順序を削除するには、次の手順を実行します。
- 「接続」フレームで、hr_connを展開します。
- スキーマ・オブジェクト・タイプのリストで、「順序」を展開します。
- 順序のリストで、削除する順序の名前を右クリックします。
- 選択肢のリストで、「削除」をクリックします。
- 削除ウィンドウで、「適用」をクリックします。
- 「確認」ウィンドウで「OK」をクリックします。
関連項目:
DROP SEQUENCE文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
4.5 シノニムの作成および管理
シノニムとは、他のスキーマ・オブジェクトの別名のことです。シノニムを使用する理由は、セキュリティ(たとえば、オブジェクトの所有者と位置を分からなくするため)と簡素化のためです。
簡素化には、次のような例があります。
-
ACME_CO
.SALES_DATA
のような長いオブジェクト名のかわりに、SALES
などの短いシノニムを使用します。 -
あるオブジェクトを使用するすべてのアプリケーションでそのオブジェクトの名前を変更するのではなく、名前を変更したオブジェクトに対してシノニムを使用します。
たとえば、ユーザーのアプリケーションが
DEPARTMENTS
という名前の表を使用し、その名前がDIVISIONS
に変更された場合、その表に対してDEPARTMENTS
シノニムを使用して、元の名前での参照を継続します。
内容は次のとおりです。
- シノニムの作成
シノニムを作成するには、SQL Developerのデータベース・シノニムの作成ツールまたはDDL文CREATE SYNONYMを使用します。 - シノニムの削除
シノニムを削除するには、SQL Developerの「接続」フレームと削除ツールまたはDDL文のDROP SYNONYMを使用します。
関連項目:
シノニムの一般情報は、『Oracle Database概要』を参照してください。
4.5.1 シノニムの作成
シノニムを作成するには、SQL Developerのデータベース・シノニムの作成ツールまたはDDL文CREATE SYNONYM を使用します。
次のチュートリアルでは、データベース・シノニムの作成ツールを使用して、EMPLOYEES表のためのシノニムEMPを作成する方法を示します。次のようなDDL文を使用します。
CREATE SYNONYM EMPL FOR EMPLOYEES;
データベース・シノニムの作成ツールを使用してシノニムEMPを作成するには、次のステップを実行します。
-
「接続」フレームで、hr_connを展開します。
-
スキーマ・オブジェクト・タイプのリストで、「シノニム」を右クリックします。
-
選択肢のリストで、「新規シノニム」をクリックします。
-
「新規シノニム」ウィンドウで、次の手順を実行します。
-
「シノニム名」フィールドにEMPLと入力します。
-
「オブジェクト所有者」フィールドで、HRをメニューから選択します。
-
「オブジェクト名」フィールドで、EMPLOYEESをメニューから選択します。
シノニムは特定のスキーマ・オブジェクト、この場合、EMPLOYEES表を参照します。
-
「適用」をクリックします。
-
-
「確認」ウィンドウで「OK」をクリックします。
シノニムEMPLが作成されます。これを表示するには、「接続」フレームで「シノニム」を展開します。これによって、EMPLOYEESのかわりにEMPLを使用できるようになります。
関連項目:
CREATE SYNONYM文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
4.5.2 シノニムの削除
シノニムを削除するには、SQL Developerの「接続」フレームと削除ツールまたはDDL文のDROP SYNONYMを使用します。
この文は、シノニムEMPを削除します。
DROP SYNONYM EMP;
削除ツールを使用してシノニムを削除するには、次の手順を実行します。
- 「接続」フレームで、hr_connを展開します。
- スキーマ・オブジェクト・タイプのリストで、「シノニム」を展開します。
- シノニムのリストで、削除するシノニムの名前を右クリックします。
- 選択肢のリストで、「削除」をクリックします。
- 削除ウィンドウで、「適用」をクリックします。
- 「確認」ウィンドウで「OK」をクリックします。
関連項目:
DROP SYNONYM文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。