2022. 2. 15. 13:51ㆍDatabase/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 |