sql >> データベース >  >> RDS >> Oracle

Oracleでビューを作成する方法

    この投稿では、セキュリティと複雑さの理由からさまざまなアプリケーションで非常に頻繁に使用されるOracleビューについて説明します。Oracleビューの完全なライフサイクル、つまりOracleでビューを作成する方法、Oracleでビューを作成する方法、方法オラクルでビューを変更する、オラクルでビューをコンパイルする方法、オラクルでビューをドロップする方法、オラクルでビューを強制する、オラクルでビューの定義を確認する方法。 。

    これと同じものは、SQLビューでもほぼ有効です

    Oracleビューとは何ですか?

    -Oracleビューは、1つ以上のOracleテーブルまたはビューからのデータの表現です。

    -Oracleビューは、名前が付けられ検証されたSQLクエリであり、Oracleデータディクショナリに保存されます。

    ビューにはデータが含まれていません。呼び出されたときに実行できるのは、データベースに保存されているクエリです。表示されるすべてのデータは、ベーステーブルからのものです。ビューは、仮想テーブルまたは1つ以上のデータのマッピングと考えることができます

    -ビューは、データディクショナリでのビューの定義以外にストレージスペースを占有しません。

    • ビューを使用して、データのサブセットを表す(セキュリティの問題のため)、データのスーパーセットを表す(複数のテーブルを1つのビューに結合する)、複雑な結合を非表示にする、列に意味のある名前を付ける、およびアプリケーションとデータソースの変更を最小限に抑えます。

    -参照されるテーブルはベーステーブルと呼ばれます 。

    • ビューを作成するには、CREATEVIEWコマンドの後にSQLクエリを使用します。

    Oracleのビューの作成例

    CREATE VIEW view_name AS
    SELECT columns
    FROM tables
    [WHERE conditions];

    -列名は

    を使用して指定できます
     CREATE VIEW (col1, col2…) AS SELECT COL1, COL2… FROM …;
    

    -CREATE FORCE VIEWを使用してビューを作成すると、コンパイルエラーのあるビューが作成されます。

    -WITHREADONLY句を使用して読み取り専用ビューを作成できます。

    -Oracle 9iでは、ビューに制約を作成できます。

    -ビューに対する制約は強制されません。宣言型の制約です。制約を適用するには、ベーステーブルに制約を作成する必要があります。ビューに制約を作成するときは、常にDISABLENOVALIDATE句を含める必要があります。

    Oracleビューの作成に必要な権限

    独自のスキーマでビューを作成するには、CREATEVIEWシステム権限が必要です。別のユーザーのスキーマでビューを作成するには、CREATEANYVIEWシステム権限が必要です。

    OracleViewsの作成例

    View Creation
    Create view emp_data  as select e.empno,e.ename,e.sal,e.deptno,d.dname
    From emp e, dept d
    where e.deptno=d.deptno;
    
    Create view emp_high_sal  as select empno,ename,sal
    From emp  where sal > 100000;
    Describe the views
    Desc Emp_data
    Desc emp_high_sal
    Select the data from view
    Select * from emp_data;
    select * from emp_high_sal
    Oracleビューを変更する方法/Oracleでビューを変更する方法

    createまたはreplaceviewコマンドを使用してビューを変更できます。これにより、オブジェクト権限を削除、再作成、および再付与することなく、ビューを変更できます。ビューの変更で列を追加したり、ビューの変更で列を変更したりするようなコマンドはありません。ビューの作成または置換方法を実行する必要があります

    Create or replace view emp_high_sal  as select empno,ename,sal
    From emp  where sal > 200000;

    このコマンドは、ビューが存在しない場合はビューを作成し、存在する場合はビューを変更します。ビューにアクセスしているすべてのplsqlユニットは、ビューの変更後に無効になります

    Oracleでビューをコンパイルする方法

    ビューの再コンパイルは、

    を使用して行われます。

    ALTER VIEW COMPILE;

    Alter view  emp_high_sal  compile;
    オラクルでビューをドロップする方法

    ビューの削除は、DROPVIEWコマンドを使用して実行されます。

    ビューを削除しても、ビューの基になっているベーステーブルには影響しません。ビューを使用してベーステーブルのデータにアクセスしていたユーザーは、ベーステーブルのデータにアクセスできなくなります。

    ドロップビューview_name;

    Drop view  emp_high_sal  ;
    OracleでのForceOracleビュー/forceビューの作成

    ビューの定義クエリを実行できない場合でも、CREATEFORCEVIEWコマンドを使用してビューを作成できます。このようなビューは、エラーのあるビューと呼ばれます 。このオプションは、インポート/インストールツールが、基になるオブジェクトが存在する前にビューを作成する場合に役立ちます。

    それを理解するために例を見てみましょう。 TESTのようなテーブルはありません。ただし、force Optionを使用してテーブルを作成する前に、ビューを作成することはできます。ビューはコンパイルエラーで作成され、無効のままになります

    Create  force view TEST_V  as select col1,col2,col3 From test where col1 > 1000;
    として作成します。

    次にテーブルを作成します

    create table TEST ( col1 number, col2 number, col3 number);

    これでビューをコンパイルでき、有効になります

    alter view TEST_V compile;

    ベーステーブルが削除された場合、ビューはどうなりますか?

    基になるテーブルが削除された場合、Oracleはビューを自動的に削除しません。データベースに残り、無効な状態になります。基になるテーブルが再作成されると、それらは再び有効になります

    OracleViewデータを表示するためのディクショナリビュー

    ビューの詳細は、USER_VIEWS、ALL_VIEWS、またはDBA_VIEWSのいずれかを照会することにより、ディクショナリから照会できます。ビューはセキュリティと情報の隠蔽に役立ちますが、ネストが深すぎると問題が発生する可能性があります。ビューを使用する利点のいくつか:

    • SQLステートメントの複雑さを軽減します
    • テーブル内の特定の行のみを他のユーザーと共有します
    • ベーステーブルの名前と所有者を非表示にします
    • ビューには3つのカテゴリがあります
    USER_% このビューには、ユーザーが所有するオブジェクトに関する情報のみが含まれます。例
    USER_TABLES、USER_TAB_COLS
    ALL-% このビューには、ユーザーがデータベース内でアクセスできるオブジェクトに関する情報が含まれています。

    ALL_TABLES、ALL_TAB_COLS
    DBA_% このビューには、システム内のすべてのオブジェクトに関する情報が含まれています。これらは、DBAロールを持つユーザーがアクセスできる制限付きビューです。

    DBA_TABLES
    ビュー情報に関するDBA_%ビュー ビュー情報に関するALL_%ビュー ビュー情報に関するUSER_%ビュー
    更新可能な列 DBA_UPDATABLE_COLUMNS ALL_UPDATABLE_COLUMNS USER_UPDATABLE_COLUMNS
    ビュー情報について表示 dba_views all_views user_views
    Oracleのすべてのビューの一覧表示
    To list all views owned by the current user
    select  view_name from user_views;
    
    To list all views in a database:
    
    Select  owner,view_name from dba_views;
    
    To list views accessible to the current user:
    
    select view_name from all_views;
    
    To describe the view in sqlplus
    desc <view_name>
    Oracleでビュー定義を確認する方法

    テーブルDBA_VIEWSのTEXT列を照会します。

    Syntax:
    SQL> set long 10000
    
    SQL> select TEXT
    2  FROM DBA_VIEWS
    3  where OWNER = '<owner_name>'
    4  and VIEW_NAME  = '<view_name>';
    
    

    ディクショナリビューのスタックを経由せずに、Oracleデータベースからビュー定義(DDLステートメント)を抽出する方法

    Syntax:
    SQL> set long 1000
    SQL> set pagesize 0
    SQL>select DBMS_METADATA.GET_DDL('VIEW','<view_name>') from DUAL

    Oracleビューの詳細な記事が気に入っていただければ幸いです。オラクルでビューを作成する方法、オラクルでビューを作成する例、オラクルでビューを変更する方法、オラクルでビューをコンパイルする方法、オラクルでビューをドロップする方法、オラクルでビューを強制する方法など、ビューでよくある質問に答えようとしました、Oracleでビュー定義を確認する方法

    読むべき関連記事
    oracleテーブルの作成:テーブルは、Oracleデータベースのデータストレージの基本単位です。 Oracle createtableコマンドを使用して外部キー/プライマリキーを使用してテーブルを作成する方法について説明します
    Oracleでの外部テーブル:Oracleでの外部テーブルの使用法については、この投稿を確認してください。外部表の作成、その使用方法
    oracleでのシーケンス:oracleでのシーケンスとは、すべてのオプションの説明、それらの作成方法、シーケンスのOracle 12c新機能、それらを削除および変更する方法
    オラクルのインデックス:オラクルのインデックス情報、オラクルのさまざまなタイプのインデックス、オラクルのインデックスの作成/ドロップ/変更方法
    Oracleマテリアライズド・ビュー:Oracleマテリアライズド・ビュー、Oracleマテリアライズド・ビュー・ログ、グループのリフレッシュ、ビューとマテリアライズド・ビューの違い
    マテリアライズド・ビューのリフレッシュの進行状況を監視する方法
    oracle alter table modify column type:oraclealtertableを使用してoracleの列を変更する方法に関するこの投稿を確認してください列を変更します。列の変更によりデフォルト値が変更され、nullが許可されない場合があります
    Oracleのビューを更新する:この投稿をチェックして、Oracleのビューを更新し、ビューoracleに挿入し、Oracleデータベースのビューから削除します

    >

    推奨コース

    OracleSQLの優れたUdemyコースは次のとおりです。
    Oracle-Sql-ステップバイステップ:このコースでは、基本的なSQL、結合、テーブルの作成とその構造の変更、ビューの作成、ユニオン、ユニオンなどすべてについて説明します。 。 SQL初心者のための素晴らしいコースと必須のコース
    完全なOracleSQL認定コース :これは、SQL開発者のスキルに対応できるようになりたい人にとっては良いコースです。わかりやすい説明コース
    OracleSQLDeveloper:Essentials、Tips and Tricks :OracleSql開発者ツールは多くの開発者によって使用されています。このコースでは、それを効果的に使用して生産的なSQL開発者になるための秘訣とレッスンを提供します。
    Oracle SQL Performance Tuning Masterclass 2020 :パフォーマンスの調整は、重要で最も求められているスキルの1つです。これは、それについて学び、SQLパフォーマンスの調整を開始するための良いコースです


    1. LIKE'%...%'ワイルドカードクエリのPL/SQLパフォーマンスチューニング

    2. リモート接続MysqlUbuntu

    3. SQL Server 2016:関係を作成する

    4. OracleのNLS_NCHAR_CHARACTERSETとNLS_CHARACTERSETの違い