Background Image
질의작성
2017.08.04 00:18

테이블 명세서 쿼리

조회 수 3137 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

 

SELECT

        c.class_name AS tbl_nm,

        a.attr_name AS attr_nm,

        CONCAT(

        CASE WHEN t.type_name = 'STRING'

                       THEN 'VARCHAR'

                       ELSE t.type_name

        END,

        CASE WHEN t.type_name = 'NUMERIC'

               THEN CONCAT('(', REPLACE(FORMAT(d.prec, 0), ',', ''), ', ', REPLACE(FORMAT(d.scale, 0), ',', ''), ')')

               WHEN t.type_name = 'ENUM'

               THEN ''--CAST(d.enumeration AS VARCHAR)

               /* ENUM 컬럼의 선언 부를 VARCHAR 로 변환 안됨 사후 처리 필요 */

               ELSE CONCAT('(', REPLACE(FORMAT(d.prec, 0), ',', ''), ')')

        END) AS attr_def,

        CASE    WHEN a.is_nullable = 1

                       THEN 'Y'

                       ELSE ''

        END AS attr_null,

        /* 9.x 하위 버전 */

        IF(a.data_type IN (4, 25, 26, 27, 35),

               SUBSTRING_INDEX((SELECT coll_name FROM _db_collation coll WHERE coll.coll_id = [d].[code_set]),'_',1),'') AS attr_char,

        IF(a.data_type IN (4, 25, 26, 27, 35),

               (SELECT coll_name FROM _db_collation coll WHERE coll.coll_id = [d].[code_set]),'') AS attr_coll,

        /* 10.x 전용 쿼리 */

--      IF(a.data_type IN (4, 25, 26, 27, 35),

--             (SELECT ch.charset_name FROM _db_charset ch WHERE d.code_set = ch.charset_id), '') AS attr_charset,

--      IF(a.data_type IN (4, 25, 26, 27, 35),

--             (SELECT coll.coll_name FROM _db_collation coll WHERE d.collation_id = coll.coll_id), '') AS attr_collation,

        a.default_value,

        /* 9.x 하위 버전 */

        (SELECT [description] FROM _cub_schema_comments cmt WHERE cmt.table_name = c.class_name AND cmt.column_name = a.attr_name) AS col_cmt,

        /* 10.x 전용 쿼리 */

--      a.comment,

        FORMAT(

        CASE WHEN t.type_name = 'SHORT' THEN 2.0

                       WHEN t.type_name = 'INTEGER' THEN 4.0

                       WHEN t.type_name = 'BIGINT' THEN 8.0

                       WHEN t.type_name = 'NUMERIC' THEN 16.0

                       WHEN t.type_name = 'FLOAT' THEN 4.0

                       WHEN t.type_name = 'DOUBLE' THEN 8.0

                       WHEN t.type_name = 'MONETARY' THEN 12.0

                       WHEN t.type_name IN ('CHAR', 'STRING', 'VARCHAR') THEN d.prec

                       WHEN t.type_name IN ('TIMESTAMP','TIMESTAMPLTZ') THEN 4.0

                       WHEN t.type_name = 'DATE' THEN 4.0

                       WHEN t.type_name = 'TIME' THEN 4.0

                       WHEN t.type_name IN ('DATETIME','DATETIMELTZ','TIMESTAMPTZ') THEN 8.0

                       WHEN t.type_name = 'DATETIMETZ' THEN 12.0

                       WHEN t.type_name = 'BIT' THEN FLOOR(d.prec / 8.0)

                       WHEN t.type_name = 'BIT VARYING' THEN FLOOR(d.prec / 8.0)

               ELSE 0

        END, 0) || ' Byte' AS attr_byte

FROM

        _db_class c,

        _db_attribute a,

        _db_domain d,

        _db_data_type t

WHERE

        a.class_of = c

        AND d.object_of = a

        AND d.data_type = t.type_id

        AND c.is_system_class = 0

        AND c.class_name = 'a'

ORDER BY

        c.class_name,

        a.def_order

  • ?
    덴드로비움 2017.09.09 15:49

    정말 잘 사용하고 있습니다.
    요기에 _db_index, db_index_key 를 포함시켜서 PK, FK 까지 YES,no 로 뽑을려고 하니 잘안되네요 ㅠㅠ
    방법이 없을까요?


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
74 질의작성 한건의 데이타를 여러건으로 조회하는 쿼리입니다. 권호일 2012.03.30 9410
73 질의작성 테이블 컬럼 변경 및 추가 정만영 2016.02.29 21696
72 질의작성 테이블 용량 산정 쿼리 성진 2015.12.08 7371
» 질의작성 테이블 명세서 쿼리 1 성진 2017.08.04 3137
70 질의작성 테이블 리스트 취합 SQL 김창휘 2016.03.19 5510
69 질의작성 테이블 데이터 복사 하기 정만영 2009.03.14 22289
68 질의작성 쿼리로 테이블이 존재하는지 확인하기 시난 2009.12.28 23519
67 질의작성 쿼리로 인덱스 정보 확인하기 시난 2009.12.29 24606
66 질의작성 컬럼 사이즈 변경 방법 정만영 2009.03.14 24329
65 질의작성 카디시안(한 Row를 여러 Row) 쿼리문 만들기 1 엄기호 2015.06.30 10909
64 질의작성 중복된 데이터에 대하여 일련번호를 붙이는 방법 admin 2008.11.21 17359
63 질의작성 중복된 데이터를 1개만 남기고 지우는 방법 admin 2008.11.21 17305
62 질의작성 중복데이터 제거 방법 Prototype 2009.07.01 25053
61 질의작성 전체 테이블 UPDATE시 SELECT, UPDATE를 통한 INDEX SCAN방식으로 테이블 X_LOCK을 방지하자! file 이경오 2015.08.13 13770
60 질의작성 입력된 년월 또는 두개의 날짜을 이용하여 달력 및 주차 구하기 1 성진 2016.08.10 5546
59 질의작성 입력된 날자를 이용하여 해당 주차의 모든 날자 구하기 성진 2018.04.10 1089
58 질의작성 임의의 컬럼을 rownum 으로 업데이트 하기 Prototype 2009.07.01 22519
57 질의작성 일정 범위 임의의 정수 생성 방법(random 함수 응용) 손승일 2015.12.22 6454
56 질의작성 요일 값을 반환 받을 수 있는 질의 형태 정만영 2009.03.13 17105
55 질의작성 오류데이타검증 - 숫자 이외의 데이타 확인하는 방법 권호일 2013.01.17 21113
Board Pagination Prev 1 2 3 4 Next
/ 4

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales