code

DESCRIBE 명령을 사용하지 않고 Oracle에서 테이블을 기술하려면 어떻게 해야 합니까?

starcafe 2023. 2. 16. 21:56
반응형

DESCRIBE 명령을 사용하지 않고 Oracle에서 테이블을 기술하려면 어떻게 해야 합니까?

수강 중인 수업 때문에 어려움을 겪고 있어요.DESCRIBE 명령어와 동일하게 동작하는 Oracle 스크립트를 작성해야 합니다.우리가 사용하고 있는 책에는 데이터 사전을 사용하는 방법이 매우 서투르게 설명되어 있습니다.답을 찾는 게 아니라 올바른 방향으로 가는 거야

모든 열과 쿼리가 실행되는 스키마에서 사용자가 볼 수 있는 권한을 가진 모든 테이블을 제외하고 모든 열과 해당 설명을 찾습니다.

일반적인 쿼리는 다음과 같습니다.

select *
  from user_tab_columns
 where table_name = 'MY_TABLE'
 order by column_id

column_id는 테이블 내의 컬럼의 "순서"입니다.

'MY_TAB'이LE'는 케이싱(나쁜 아이디어)이 있는 테이블을 추가하지 않는 한 대문자로 표시됩니다.이 경우 다음과 같은 것을 사용할 필요가 있습니다.= "MyTable".

구체적으로는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: Release 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+:

여기에 이미지 설명 입력

언급URL : https://stackoverflow.com/questions/9855209/how-can-i-describe-a-table-in-oracle-without-using-the-describe-command

반응형