본문 바로가기
Programming/Oracle

# 데이터베이스 설계서 작성을 위한 쿼리

by NAMP 2014. 7. 31.
# 데이터베이스 설계서 작성을 위한 쿼리


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
-- 테이블 정보 조회
SELECT * FROM user_tables
-- 인덱스 조회
SELECT * FROM user_indexes
-- 인덱스 컬럼 정보
SELECT * FROM user_ind_columns
-- 테이블 + 인덱스
SELECT * FROM user_tables ut
    LEFT JOIN user_ind_columns uic
        ON ut.table_name = uic.table_name
 
 
      
-- 테이블 + 인덱스
SELECT table_name
    , index_name
    , column_name
    , 'A' AS ST
    , decode(UI.uniqueness, 'UNIQUE', 'U') AS UQ
    FROM user_tables ut
    LEFT JOIN user_ind_columns uic
        ON ut.table_name = uic.table_name     
    LEFT JOIN user_indexes UI
        ON ut.table_name = UI.table_name
    ORDER BY table_name, UQ, column_name


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
-- 테이블 & 컬럼 정보
SELECT * FROM USER_TAB_COLS
 
-- 테이블 주석 정보
SELECT * FROM user_tab_comments
 
-- 컬럼 주석 정보
SELECT * FROM user_col_comments
 
-- 제약 정보
SELECT * FROM user_constraints
 
-- 제약 컬럼 정보
SELECT * FROM user_cons_columns
 
-- 제약 정보와 컬럼 정보를 같이 표출
SELECT uc.table_name, column_name, constraint_type
    FROM user_constraints uc
        LEFT JOIN user_cons_columns ucc
        ON uc.constraint_name = ucc.constraint_name
    WHERE constraint_type != 'C'
 
---------------------------------------------------------
-- 데이터베이스 설계서 작성을 위한 쿼리
---------------------------------------------------------
-- 컬럼 + 제약
WITH colandcons AS
(
SELECT uc.table_name, column_name, constraint_type
    FROM user_constraints uc
        LEFT JOIN user_cons_columns ucc
        ON uc.constraint_name = ucc.constraint_name
    WHERE constraint_type != 'C'
)
    
-- 테이블명 + 컬럼명 + PK, + FK + 타입(길이) + Nullable(N만)
SELECT utc.table_name
    , utcm.comments AS 테이블명
    , utc.column_name
    , uccm.comments AS 컬럼명
    , decode(constraint_type, 'P', 'O') AS PK
    , decode(constraint_type, 'F', 'O') AS FK
    , utc.data_type || '(' || utc.data_length || ')' AS data_type
    , decode(NULLABLE, 'N' , 'N') AS N
    FROM USER_TAB_COLS utc
    LEFT JOIN user_tab_comments utcm
        ON utc.table_name = utcm.table_name
    LEFT JOIN user_col_comments uccm
        ON utc.table_name = uccm.table_name
        AND utc.column_name = uccm.column_name
    LEFT JOIN colandcons cac
        ON utc.table_name = cac.table_name
        AND utc.column_name = cac.column_name
 
    ORDER BY utc.table_name, cac.constraint_type, utc.column_name
----------------------------------------------------------
-- with 와 select 를 동시에 실행해야 함



'Programming > Oracle' 카테고리의 다른 글

Oracle HINT  (0) 2014.12.01
ORACLE REGEXP  (0) 2014.11.04
[오라클] PK 컬럼 얻기  (0) 2012.10.09
scott / tiger  (0) 2012.02.29
오라클 컬럼 추가.  (0) 2012.02.06

댓글