✔ MSSQL 사용하면서 테이블 목록, 컬럼 정보 한번에 추출할 일이 있어서 정리해보는 조회 쿼리들.
1. 테이블, 컬럼 목록 추출하기
select A.*, isnull(b.CONSTRAINT_NAME,'') CONSTRAINT_NAME from
(
select
--TABLE_CATALOG ,
TABLE_SCHEMA ,
TABLE_NAME ,
COLUMN_NAME ,
ORDINAL_POSITION ,
DATA_TYPE ,
case when data_type in('nvarchar','geography','varbinary','varchar') then CHARACTER_MAXIMUM_LENGTH
when data_type in( 'bit','int','bigint', 'decimal') then NUMERIC_PRECISION
when data_type in ('date', 'datetime2','datetime') then DATETIME_PRECISION
else data_type
end as data_max_length,
IS_NULLABLE ,
isnull(COLUMN_DEFAULT,'') column_default
from INFORMATION_SCHEMA.COLUMNS
) A
left outer join
(
select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE
) B
on A.COLUMN_NAME = B.COLUMN_NAME
and A.TABLE_NAME = B.TABLE_NAME
order by a.TABLE_SCHEMA,A.TABLE_NAME,A.ORDINAL_POSITION;
2. 테이블 comment 조회
select NAME,
(select VALUE from SYS.EXTENDED_PROPERTIES where MAJOR_ID = A.ID AND MINOR_ID = 0 ) COMMENT
from SYSOBJECTS A
where RTRIM(A.XTYPE) = 'U'
order by NAME;
3. 컬럼 정보(commen 포함) 조회
select A.TABLE_NAME,
C.VALUE AS TABLE_COMMENT,
A.COLUMN_NAME, A.DATA_TYPE,
ISNULL(CAST(A.CHARACTER_MAXIMUM_LENGTH AS VARCHAR),
CAST(A.NUMERIC_PRECISION AS VARCHAR) + ',' +
CAST(A.NUMERIC_SCALE AS VARCHAR)) AS COLUMN_LENGTH,
A.COLUMN_DEFAULT, A.IS_NULLABLE,
B.VALUE AS COLUM_COMMENT
from INFORMATION_SCHEMA.COLUMNS A
left outer join SYS.EXTENDED_PROPERTIES B
on B.MAJOR_ID = OBJECT_ID(A.TABLE_NAME)
and A.ORDINAL_POSITION = B.MINOR_ID
left outer join
(select OBJECT_ID(OBJNAME) AS TABLE_ID, VALUE
from ::FN_LISTEXTENDEDPROPERTY(NULL, 'USER','DBO','TABLE',NULL, NULL, NULL)) C
on OBJECT_ID(A.TABLE_NAME) = C.TABLE_ID
--where A.TABLE_NAME = '테이블명'
order by A.TABLE_NAME, A.ORDINAL_POSITION
'MSSQL' 카테고리의 다른 글
다른 데이터베이스에 있는 테이블 옮기기(SQL Server Import and Export Wizard (0) | 2023.01.12 |
---|---|
System-versioned Table(Temporal Table), History Table 간단하게 이해하기 (0) | 2023.01.06 |
[MSSQL]유용한 함수들(번호, 순위) (0) | 2022.12.26 |
[MSSQL]유용한 함수들(문자, 조건 등) (0) | 2022.12.26 |
[MSSQL]유용한 함수들(날짜/시간 관련) (0) | 2022.12.26 |