私が取っているクラスで苦労しています。 DESCRIBEコマンドのように動作するOracleスクリプトを作成する必要があります。使用している本では、データディクショナリの使用方法が非常に不十分です。答えを探しているのではなく、正しい方向を示しています。
探しているのは USER_TAB_COLUMNS
-すべての列と、クエリが実行されるスキーマ内のそれらの説明-または ALL_TAB_COLUMNS
-ユーザーが表示する権限を持つすべてのテーブルを除いて同じです。
典型的なクエリは次のとおりです。
select *
from user_tab_columns
where table_name = 'MY_TABLE'
order by column_id
column_id
は、テーブル内の列の「順序」です。
大文字と小文字を区別してテーブルを追加しない限り(悪い考え)、= "MyTable"
のようなものを使用する必要がある場合を除き、 'MY_TABLE'が大文字であることを確認してください。
特に、desc
は、優れたOracleリソースである ss64 から盗んだ次のものと同等です。
select column_name as "Name"
, nullable as "Null?"
, concat(concat(concat(data_type,'('),data_length),')') as "Type"
from user_tab_columns
where table_name = 'MY_TABLE';
データ辞書のトップレベルであるselect * from dictionary
または ドキュメントを見ると、この種のビューをすべて見つけることができます 。
DBA_TAB_COLUMNS
もあります。これはALL_TAB_COLUMNS
と同じですが、データベース内のすべてのテーブル用です。これは、それとテーブルの両方を表示する特権があることを前提としています。このテーブルにアクセスできない場合は、DBAにSELECT ANY DICTIONARY
権限を付与する必要があります。
テーブルを再作成するために使用できるコマンド全体を取得することもできます。
select dbms_metadata.get_ddl('TABLE','<my table name>','<table owner>') from dual;
Oracleには、データベース構造に関するメタデータを含むセットテーブルがあります。テーブルのテーブルがあります。ビューの表。列のテーブル。 USER_TABLES(スキーマ内のテーブル)、ALL_TABLES(表示する権限があるテーブル)、DBA_TABLES(特権がある場合はすべてのテーブル)などのビューを使用して、これらのテーブルをクエリできます。より一般的には、多くのデータベースベンダーは、ベンダー間でメタデータの一貫したビューを提供する「情報スキーマ」をサポートしています。ここで「ALL_TABLES」を検索し、利用可能な他のすべての情報を確認してください http://docs.Oracle.com/cd/B28359_01/server.111/b28320/toc.htm
Oracle SQLcl で新たに導入されたのは、information
コマンドまたは単にINFO table_name
です。 DESC[RIBE]
のような単純な構文があります:
SQL> info
INFORMATION
--------
This command is like describe but with more details about the objects requested.
INFO[RMATION] {[schema.]object[@connect_identifier]}
INFO+ will show column statistics
その出力は、DESCRIBE
と比較してはるかに優れており、説明的です。表、ビューまたはシノニムの列定義、または関数またはプロシージャの仕様に関する詳細情報をリストします。
例えば:これは私が受け取る出力ですSQLcl:リリース18.1.1実行すると
info employees
SQL> info employees;
TABLE: EMPLOYEES
LAST ANALYZED:2018-05-26 15:07:58.0
ROWS :107
SAMPLE SIZE :107
INMEMORY :DISABLED
COMMENTS :employees table. Contains 107 rows. References with departments,
jobs, job_history tables. Contains a self reference.
Columns
NAME DATA TYPE NULL DEFAULT COMMENTS
*EMPLOYEE_ID NUMBER(6,0) No Primary key of employees table.
FIRST_NAME VARCHAR2(20 BYTE) Yes First name of the employee. A not null column.
LAST_NAME VARCHAR2(25 BYTE) No Last name of the employee. A not null column.
EMAIL VARCHAR2(25 BYTE) No Email id of the employee
PHONE_NUMBER VARCHAR2(20 BYTE) Yes Phone number of the employee; includes country
code and area code
HIRE_DATE DATE No Date when the employee started on this job. A not
null column.
JOB_ID VARCHAR2(10 BYTE) No Current job of the employee; foreign key to job_id
column of the jobs table. A not null column.
SALARY NUMBER(8,2) Yes Monthly salary of the employee. Must be greater
than zero (enforced by constraint emp_salary_min)
COMMISSION_PCT NUMBER(2,2) Yes Commission percentage of the employee; Only
employees in sales department elgible for
commission percentage
MANAGER_ID NUMBER(6,0) Yes Manager id of the employee; has same domain as
manager_id in departments table. Foreign key to
employee_id column of employees table.(useful for
reflexive joins and CONNECT BY query)
DEPARTMENT_ID NUMBER(4,0) Yes Department id where employee works; foreign key to
department_id column of the departments table
Indexes
INDEX_NAME UNIQUENESS STATUS FUNCIDX_STATUS COLUMNS
HR.EMP_JOB_IX NONUNIQUE VALID JOB_ID
HR.EMP_NAME_IX NONUNIQUE VALID LAST_NAME, FIRST_NAME
HR.EMP_EMAIL_UK UNIQUE VALID EMAIL
HR.EMP_EMP_ID_PK UNIQUE VALID EMPLOYEE_ID
HR.EMP_MANAGER_IX NONUNIQUE VALID MANAGER_ID
HR.EMP_DEPARTMENT_IX NONUNIQUE VALID DEPARTMENT_ID
References
TABLE_NAME CONSTRAINT_NAME DELETE_RULE STATUS DEFERRABLE VALIDATED GENERATED
DEPARTMENTS DEPT_MGR_FK NO ACTION ENABLED NOT DEFERRABLE VALIDATED USER NAME
EMPLOYEES EMP_MANAGER_FK NO ACTION ENABLED NOT DEFERRABLE VALIDATED USER NAME
JOB_HISTORY JHIST_EMP_FK NO ACTION ENABLED NOT DEFERRABLE VALIDATED USER NAME
info+
のスクリーンショットは次のとおりです。