SELECT A.TABLE_NAME,
A.ORDINAL_POSITION as '순번',
A.COLUMN_NAME as '필드명',
concat(DATA_TYPE, case when CHARACTER_MAXIMUM_LENGTH is null then '' else concat('[',CHARACTER_MAXIMUM_LENGTH,']') end) as '타입',
CASE WHEN C.TABLE_NAME IS NOT NULL THEN 'PK' ELSE '' END as '키',
IS_NULLABLE as 'NULL',
CASE WHEN C.TABLE_NAME IS NOT NULL THEN 'YES' ELSE '' END as '자동여부',
COLUMN_DEFAULT as '기본값',
B.DESCRIPTION as '설명'
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
ORDER BY TABLE_NAME, '순번'