MSSQL TIps

2022. 2. 15. 13:51Database/MSSQL

[ MSSQL 테이블 설명 쿼리 ]
DECLARE @TABLE_NAME NVARCHAR(50) = '테이블명'
SELECT A.NAME AS TABLE_NAME
, C.VALUE AS TABLE_DESCRIPTION
, D.NAME AS COLUMN_NAME
, E.VALUE AS COLUMN_DESCRIPTION
, F.DATA_TYPE AS TYPE
, F.CHARACTER_OCTET_LENGTH AS LENGTH
, F.IS_NULLABLE AS IS_NULLABLE
, F.COLLATION_NAME AS COLLATION_NAME
FROM SYSOBJECTS A WITH (NOLOCK)
INNER JOIN SYSUSERS B WITH (NOLOCK) ON (A.UID = B.UID)
INNER JOIN SYSCOLUMNS D WITH (NOLOCK) ON (D.ID = A.ID)
INNER JOIN INFORMATION_SCHEMA.COLUMNS F WITH (NOLOCK) ON (A.NAME = F.TABLE_NAME AND D.NAME = F.COLUMN_NAME)
LEFT OUTER JOIN SYS.EXTENDED_PROPERTIES C WITH (NOLOCK) ON (C.MAJOR_ID = A.ID AND C.MINOR_ID = 0 AND C.NAME = 'MS_Description')
LEFT OUTER JOIN SYS.EXTENDED_PROPERTIES E WITH (NOLOCK) ON (E.MAJOR_ID = D.ID AND E.MINOR_ID = D.COLID AND E.NAME = 'MS_Description')
WHERE A.TYPE = 'U'
AND  A.NAME = @TABLE_NAME
ORDER BY D.COLORDER;

 

[ MSSQL 데이터베이스 내 특정 컬럼이 어느 테이블에서 사용하고있는지 확인 ]

SELECT T.name AS table_name, C.name AS column_name
FROM sys.tables AS T
INNER JOIN sys.columns AS C ON T.object_id = C.object_id
WHERE C.name = 'SHPMTY'

 

[ 테이블 복사 ]
- 테이블&데이터 복사
SELECT * INTO [생성할 테이블명 ] FROM [원본 테이블명]
- 테이블 구조만 복사
SELECT * INTO [생성할 테이블명 ] FROM [원본 테이블명] WHERE 1=2

[ 컬럼수정 ]
- 수정 
ALTER TABLE ${TABLE_NAME} ALTER COLUMN ${COLUMN_NAME} ${COLUMN_TYPE} 
- 컬럼명 수정 
EXEC SP_RENAME '${TABLE_NAME.[OLD_COLUMN_NAME]}', '${NEW_COLUMN_NAME}', 'COLUMN' 
- 삭제 
ALTER TABLE ${TABLE_NAME} DROP COLUMN ${COLUMN_NAME} 
- 추가 
ALTER TABLE ${TABLE_NAME} ADD ${COLUMN_NAME} ${COLUMN_TYPE} ${COLUMN_ATTRIBUTE} 

 

[ 데이터 삭제 ]
- DELETE FROM TABLE  : 

데이터만 삭제 되며 테이블 용량은 줄어 들지 않는다. 또한 삭제후 잘못 삭제한 것을 되돌릴 수 있다. Commit이전에는 Rollback이 가능하다.
- TRUNCATE TABLE  :

테이블을 최초 생성된 초기상태로 만든다. Rollback 불가능 하다.

'Database > MSSQL' 카테고리의 다른 글

[ PIVOT ] 행을 열로 바꾸기  (0) 2022.02.15
[ STUFF / FOR XML PATH ] 여러행 하나의 행으로 합치는 방법  (0) 2022.02.15
CURSOR  (0) 2022.02.15
PROCEDURE Tips  (0) 2022.02.15
WITH (NOLOCK)  (0) 2021.01.14