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

Oracleのテーブルのすべての制約を確認する方法

    Oracleのテーブルの制約は、以下のビューを使用して見つけることができます
    user_constraints
    all_constraints
    dba_constraints
    User_cons_columns
    all_cons_columns
    dba_cons_columns

    Oracleデータベースでのアクセスに応じてビューを使用できます。次に、例を使用してOracleのテーブルのすべての制約を確認する方法を説明します

    Oracleでテーブルのすべての制約を見つける方法

    最初にテーブルを作成しましょう

     SQL> CREATE TABLE "DEPT"( "DEPTNO" NUMBER(2,0)、 "DNAME" VARCHAR2(14)、 "LOC" VARCHAR2(13)、CONSTRAINT "PK_DEPT" PRIMARY KEY( "DEPTNO"));テーブルが作成されました。 SQL> CREATE TABLE "EMP"( "EMPNO" NUMBER(4,0)、 "ENAME" VARCHAR2(10)null以外、 "JOB" VARCHAR2(9)null以外、 "MGR" NUMBER(4,0)、 "HIREDATE "DATE、" SAL "NUMBER(7,2)、" COMM "NUMBER(7,2)、" DEPTNO "NUMBER(2,0)、CONSTRAINT" PK_EMP "PRIMARY KEY(" EMPNO ")、CONSTRAINT" FK_DEPTNO "FOREIGN KEY( "DEPTNO")REFERENCES "DEPT"( "DEPTNO")ENABLE);テーブルが作成されました。

    これで、以下のoracleselect制約クエリを使用して制約を見つけることができます

     SQL> col CONSTRAINT_NAME format a20 SQL> col INDEX_NAME format a20 SQL> col CONSTRAINT_TYPE format a5 SQL> column SEARCH_CONDITION format a30 SQL> column R_CONSTRAINT_NAME format a20 select CONSTRAINT_NAME C_NAME、INDEX_NAME、CONSTRAINT_TYPE、Search_condition、R_CONS 'EMP'; 

    ここで、CONSTRAINT_TYPEは制約のタイプを定義します
    PはOracle主キーを表します
    Cはチェック制約またはnull以外の制約を表します
    Rは外部キー制約を表します
    Uは一意キー制約を表します


    現在、主キー、外部キー、および一意キー制約の列は、以下のクエリを使用して見つけることができます

    SQL>列OWNER形式a10SQL>列CONSTRAINT_NAME形式a120SQL>列CONSTRAINT_NAME形式a20SQL>列COLUMN_NAME形式a20SQL>SELECT OWNER、CONSTRAINT_NAME、COLUMN_NAME、POSITION from User_cons_columns where TABLE_NAME ='EMP'; 

    制約に単一の列がある場合、Position列のnull値を取得します。制約に複数の列が存在する場合、Positionは制約内の列の順序を指定します

    同様のクエリを使用して、DEPTテーブルの制約を選択できます

     SQL> select CONSTRAINT_NAME C_NAME、INDEX_NAME、CONSTRAINT_TYPE、Search_condition、R_CONSTRAINT_NAME R_NAME from user_constraints where TABLE_NAME ='DEPT'; 
     SQL> SELECT OWNER、CONSTRAINT_NAME、COLUMN_NAME、POSITION from User_cons_columns where TABLE_NAME ='DEPT'; 

    Oracleで名前で制約を見つける方法

     select CONSTRAINT_NAME、INDEX_NAME、CONSTRAINT_TYPE、Search_condition、R_CONSTRAINT_NAME R_NAME from user_constraints where CONSTRAINT_NAME ='&1'またはselect owner、CONSTRAINT_NAME、INDEX_NAME、CONSTRAINT_TYPE、Search_condition、R_CONSTRAINT_NAME R_NAME from all_ 

    テーブル内の参照整合性制約を確認する方法

     SQL> select CONSTRAINT_NAME C_NAME、INDEX_NAME、CONSTRAINT_TYPE、Search_condition、R_CONSTRAINT_NAME R_NAME from user_constraints where TABLE_NAME ='EMP' and CONSTRAINT_TYPE ='R'; 

    参照されている親テーブルは、R_CONSTRAINT_NAME

    を使用して見つけることができます。
     SQL> select CONSTRAINT_NAME、INDEX_NAME、CONSTRAINT_TYPE、table_name from user_constraints where CONSTRAINT_NAME ='PK_DEPT'; 

    テーブルの主キーを確認する方法

     SQL> select CONSTRAINT_NAME C_NAME、INDEX_NAME、CONSTRAINT_TYPE from user_constraints where TABLE_NAME ='EMP' and CONSTRAINT_TYPE ='P'; C_NAME INDEX_NAME CONST ---- ------- ----- PK_EMP PK_EMP P 

    Oracleのテーブルで一意の制約を見つけるためのクエリ

     SQL> CREATE TABLE DEPT_MASTER(dept_nr NUMBER UNIQUE、dept_name varchar2(100)NOT NULL、dept_status NUMBER(1,0)NOT NULL、created_at date);テーブルが作成されました。 SQL> user_constraintsからCONSTRAINT_NAME、INDEX_NAME、CONSTRAINT_TYPEを選択します。ここでTABLE_NAME='DEPT_MASTER'およびCONSTRAINT_TYPE='U';

    制約に関するその他のクエリ

     select table_name from user_constraints where(r_constraint_name)in(selectConstraint_name from user_constraints where table_name ='T' andconstraint_type in('P'、'U')); 

    したがって、データディクショナリビューを使用して、Oracleのテーブルのすべての制約を簡単に見つけることができます。次に、変更、無効化、削除などのアクションを実行できます。これらの制約を適用します。制約は、Oracleデータベースにデータ整合性ルールを適用しているため、それらを変更/削除する際には注意が必要です。

    Oracleデータベースのテーブルのすべての制約をチェックする方法に関するこのコンテンツが気に入っていただければ幸いです。この記事に対するフィードバックを提供してください。

    また読む
    Oracleでの制約の削除:altertableコマンドを使用してOracleで制約を削除できます。同じコマンドを使用して、プライマリ、外部キー、チェック、null以外、および一意の制約を削除できます
    OracleのCoalesce関数:OracleのCoalesce関数は、nullでない場合は最初の式を返し、それ以外の場合は残りの式を合体します
    Oracleでの補足ログ:Oracleでの補足ログは、SQLを再構築して他のデータベースに適用するために必要な追加の列情報です。
    Oracleでオブジェクトの依存関係を検索するためのクエリ:検索するためのクエリを確認してくださいOracleでのオブジェクトの依存関係、子レベルの依存関係、親レベルの依存関係、dbms_utility.get_dependencyを使用した検索
    OracleデータベースでのJSON:OracleでJSONを使用する方法、JSONデータを含むテーブルを作成する方法、方法抽出するには、JSONデータをoracle
    https://docs.oracle.com/cd/B19306_01/server.102/b14200/clauses002.htm

    に挿入します。

    推奨コース

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


    1. Hibernateを使用して階層結果を取得するためのデータベースクエリの再帰-Java

    2. SQLServer2012および2014オンラインインデックスの再構築の問題の修正

    3. Word、Excel、PowerPointでのキーボードのみのナビゲーションの使用(パート1:リボン)

    4. PL/SQLの単体テスト