DB

[MSSQL] 테이블 정의서 작성 쿼리

91cm 2018. 9. 14. 00:05
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 A.COLUMN_NAME as 컬럼명 
 
, A.DATA_TYPE as 데이터타입 
 
,  CASE  WHEN  
         A.CHARACTER_MAXIMUM_LENGTH IS NULL 
         THEN  ISNULL (A.NUMERIC_PRECISION, ''
         ELSE  A.CHARACTER_MAXIMUM_LENGTH  
    END AS [길이] 
 
, CASE 
       WHEN 
       A.COLUMN_DEFAULT is null 
       THEN '' 
       ELSE A.COLUMN_DEFAULT 
  END AS [기본값]
 
, CASE WHEN 
       C.TABLE_NAME IS NOT NULL 
       THEN 'PK' 
       ELSE ''
  END PK 
 
'      ' as 컬럼설명 
 
, CASE 
       WHEN B.DESCRIPTION IS NULL 
       THEN ''
       ELSE B.DESCRIPTION 
  END AS 기타정보 
 
,CASE 
      WHEN A.IS_NULLABLE = 'YES' 
      THEN 'YES' 
      ELSE 'NO' 
END AS IS_NULLABLE  
 
FROM INFORMATION_SCHEMA.COLUMNS A  
 
LEFT OUTER JOIN (SELECT a.object_id AS TABLE_ID,  
                        a.name AS TABLE_NAME, b.name AS COLUMN_NAME,  
                        b.column_id AS COLUMN_ID, c.value AS DESCRIPTION 
                  FROM sys.objects a 
                  LEFT JOIN sys.columns b ON a.object_id=b.object_id 
                  LEFT JOIN sys.extended_properties c ON  (a.object_id=c.major_id AND b.column_id=c.minor_id) 
                ) B  
ON A.TABLE_NAME = B.TABLE_NAME  
AND A.COLUMN_NAME = B.COLUMN_NAME 
 
LEFT OUTER JOIN  
  INFORMATION_SCHEMA.KEY_COLUMN_USAGE C 
  ON A.TABLE_NAME = C.TABLE_NAME AND A.COLUMN_NAME = C.COLUMN_NAME 
 
WHERE A.TABLE_NAME ='테이블명' 
 
 
 
cs