MS SQL Server 의 Transact-SQL (이하 T-SQL 로 표기) 을 사용하면 알아야할 문법들과 유용한 팁들을 정리해 본다. 그리고 T-SQL 뿐만 아니라 SQL-92 표준을 따르는 표준 SQL 문의 다양한 사용법에 대하여서도 정리한다.
1. 참고링크 [Bottom] [Top]
SQL Server 2005 설명서 http://msdn2.microsoft.com/ko-kr/library/ms203721.aspx
The SQL-92 standard http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt
2. 간략한 SQL 문법 [Bottom] [Top]
-- -- SQL 쿼리 코드를 입력해 주세요 --
3. 간단한 SQL 팁 [Bottom] [Top]
3.1. 다른 테이블로 데이터 복사하기 [Bottom] [Top]
- SELECT 문 사용
새로운 테이블을 만들면서 데이터를 복사하는 방법 (새로 만들려고 하는 테이블이 있는 경우 에러 발생!)
- 테이블 구조나 데이터형은 SELECT 문에서 나열되는 컬럼 순서나 데이터형에 따라 결정된다.
-- 테이블1 ==> 테이블 생성 후 복사 SELECT [컬럼1, ...] INTO [새로운 테이블] FROM [테이블1] [WHERE {조건식}]
- INSERT 문 사용
만들어져 있는 테이블로 데이터를 복사하는 방법 (테이블이 없을 경우 에러 발생!)
-- 테이블2 ==> 테이블1 복사 INSERT INTO [테이블1] SELECT [컬럼1, ...] FROM [테이블2] [WHERE {조건식}]
- UPDATE 문 사용
테이블의 일부 값을 다른 테이블로터 복사하는 방법
-- UPDATE [테이블1] SET [컬럼1] = [식1] FROM [테이블1] AS a [INNER] JOIN [테이블2] AS b ON a.[컬럼] = b.[컬럼] [WHERE {조건식}]
3.2. 문자열 처리 팁 [Bottom] [Top]
3.2.1. 날짜 만들기 [Bottom] [Top]
-- 8자리 형식 SELECT CONVERT(CHAR(8), GETDATE(), 112) -- 결과 예: 20080101 -- 6자리 형식 SELECT RIGHT(CONVERT(CHAR(8), GETDATE(), 112), 6) --- 결과 예: 080101
3.3. 숫자 처리 팁 [Bottom] [Top]
3.3.1. ID 값 처리 팁 [Bottom] [Top]
- ID 시드값 초기화 방법
- TRUNCATE TABLE 문 사용
테이블 데이터를 삭제 시 DELETE 문 대신에 TRUNCATE TABLE 문을 사용한다.
- 사용법
-- 테이블 데이터만 삭제됨 DELETE FROM {테이블 이름} -- 테이블 데이터 및 정보까지 삭제됨 TRUNCATE TABLE '테이블 이름'
- DBCC CHECKIDENT 문 사용
- 사용법
-- ID 시드값 변경 DBCC CHECKIDENT( '테이블 이름', RESEED, {새로운 ID 시드값} ) -- 현재 ID 값 정보 얻기 DBCC CHECKIDENT( '테이블 이름' )
- 사용법
- TRUNCATE TABLE 문 사용
- ID 시드값 정보 얻기
- ID 시드 초기값 정보 얻기
- 사용법
-- ID 시드 초기값, 증가값 정보 얻기 SELECT IDENT_SEED( '테이블 이름' ) AS 'ID 시드값', IDENT_INCR( '테이블 이름' ) AS 'ID 증가값'
- 사용법
- 현재 ID 값 정보 얻기
- 사용법
-- SELECT 문 사용 SELECT MAX( {ID 컬럼} ) FROM {테이블 이름} -- DBCC CHECKIDENT 사용 DBCC CHECKIDENT( '테이블 이름' ) -- INSERT 문 실행 후 마지막으로 삽입된 ID 값 얻기 SELECT @@IDENTITY
- 사용법
- ID 시드 초기값 정보 얻기
- ID 값을 임의적으로 삽입하기
- 사용법
-- 참고> 테이블 이름 생략 시 전체 테이블이 대상이 된다. SET IDENTITY_INSERT [테이블 이름] ON -- 임의적인 ID 값을 삽입할 수 있다. INSERT INTO ...
- 사용법
3.4. DB 개체의 확장 속성값 처리 [Bottom] [Top]
- 테이블의 확장 속성값 얻기
- 사용 예
-- 테이블의 모든 컬럼 정보(확장 속성) 얻기 SELECT * FROM fn_listextendedproperty( default, 'SCHEMA', 'dbo', 'TABLE', '테이블 이름', 'COLUMN', default); -- 테이블의 특정 컬럼 정보(확장 속성) 얻기 SELECT * FROM fn_listextendedproperty( default, 'SCHEMA', 'dbo', 'TABLE', '테이블 이름', 'COLUMN', '컬럼 이름'); -- 테이블의 모든 컬럼 설명(확장 속성) 얻기 SELECT * FROM fn_listextendedproperty( 'MS_Description', 'SCHEMA', 'dbo', 'TABLE', '테이블 이름', 'COLUMN', default);
- 사용 예
- 테이블의 확장 속성값 추가
- 사용 예
-- 테이블의 특정 컬럼 정보(확장 속성) 추가 EXEC sys.sp_addextendedproperty @name = N'MS_Description', -- 확장 속성 이름 @value = N'Description String', -- 확장 속성 값 @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Table1', -- 테이블 이름 @level2type = N'COLUMN', @level2name = N'Column1' -- 컬럼 이름
- 사용 예
- 확장 속성 처리를 위한 저장 프로시저 및 함수
동작
저장 프로시저 / 함수
종류
확장 속성 조회
fn_listextendedproperty
함수
확장 속성 추가
sp_addextendedproperty
저장 프로시저
확장 속성 삭제
sp_dropextendedproperty
저장 프로시저
확장 속성 수정
sp_updateextendedproperty
저장 프로시저
자세한 사용법은 SQL Server 2005 도움말 참고
