반응형
테이블 및 컬럼에 디스크립션 (또는 코멘트) 추가하는 방법과 추가한 내용을 조회하는 방법을 소개해 드리겠습니다.
SQL Server에서 디스크립션을 추가하고 수정하는 명령어는 아래와 같습니다.
sp_addextendedproperty
sp_updateextendedproperty
컬럼 디스크립션(Description) 추가, 수정 스크립트
-- 테이블 생성
CREATE TABLE dbo.CUST_TABLE (
custid varchar(10)
, custname varchar(20)
, country varchar(20)
)
GO
-- 데이터 입력
INSERT INTO CUST_TABLE(custid, custname, country) VALUES ('C2455', 'junsu', 'korea');
INSERT INTO CUST_TABLE(custid, custname, country) VALUES ('C1575', 'mina', 'korea');
INSERT INTO CUST_TABLE(custid, custname, country) VALUES ('C2474', 'hara', 'singapore');
INSERT INTO CUST_TABLE(custid, custname, country) VALUES ('C2479', 'leo', 'singapore');
GO
-- 디스크립션 내용 정의
DECLARE @DESCEIPTION nvarchar(100) = N'고객아이디'
DECLARE @USER_NAME varchar(10) = 'dbo'
DECLARE @TABLE_NAME varchar(100) = 'CUST_TABLE'
DECLARE @COL_NAME varchar(100) = 'custid'
-- 디스크립션 입력
EXEC sp_addextendedproperty 'MS_Description' , @DESCEIPTION , 'user' , @USER_NAME , 'table' , @TABLE_NAME, 'column' , @COL_NAME
GO
-- 디스크립션 수정
EXEC sp_updateextendedproperty 'MS_Description' , @DESCEIPTION , 'user' , @USER_NAME , 'table' , @TABLE_NAME, 'column' , @COL_NAME
GO
테이블 디스크립션을 입력하거나 수정하고 싶다면 같은 스크립트를 사용하되 테이블 레벨까지만 입력합니다.
테이블 디스크립션(Description) 추가, 수정 스크립트
DECLARE @DESCEIPTION nvarchar(100) = N'고객정보 테이블'
DECLARE @USER_NAME varchar(10) = 'dbo'
DECLARE @TABLE_NAME varchar(100) = 'CUST_TABLE'
DECLARE @COL_NAME varchar(100) = 'custid'
EXEC sp_addextendedproperty 'MS_Description' , @DESCEIPTION , 'user' , @USER_NAME , 'table' , @TABLE_NAME
GO
EXEC sp_updateextendedproperty 'MS_Description' , @DESCEIPTION , 'user' , @USER_NAME , 'table', @TABLE_NAME
GO
이제 디스크립션이 제대로 입력되었는지 확인해보도록 하겠습니다.
테이블 디스크립션(Description) 조회 스크립트
DECLARE @table_name nvarchar(50) = 'CUST_TABLE';
SELECT sc.colorder AS idx
, so.name AS table_name
, sep1.value AS table_description
, sc.name AS column_name
, sep2.value AS column_description
FROM sysobjects so WITH(NOLOCK)
JOIN syscolumns sc WITH(NOLOCK) on sc.id = so.id
JOIN information_schema.columns isc WITH(NOLOCK) ON so.name = isc.table_name AND sc.name = isc.column_name
LEFT OUTER JOIN sys.extended_properties sep1 WITH(NOLOCK) ON sep1.major_id = so.id AND sep1.minor_id = 0 AND sep1.name = 'MS_Description'
LEFT OUTER JOIN sys.extended_properties sep2 WITH(NOLOCK) ON sep2.major_id = sc.id AND sep2.minor_id = sc.colid AND sep2.name = 'MS_Description'
WHERE 1=1
AND so.type = 'U'
AND so.name = @table_name
order by sc.colorder
쿼리를 조회하면 위에서 입력한 디스크립션이 잘 들어간 것을 확인할 수 있습니다.
반응형
'IT 이야기 > DB' 카테고리의 다른 글
[DB 기술면접] 클러스터 인덱스, 넌클러스터 인덱스 차이점은? (0) | 2022.09.08 |
---|---|
[MSSQL] INSERT문 다양한 사용법 (0) | 2022.09.07 |
[MSSQL] 데이터베이스 정렬 방식 (COLLATE, COLLATION) (0) | 2022.09.05 |
[DB 기술면접] 인덱스(index)란 무엇인가, 생성 방법과 원리 (0) | 2022.09.04 |
SQLP 응시자격 (4년제 대학 졸업했으면 바로 응시가능 합니다.) (0) | 2022.09.03 |