MS SQL Server 의 Transact-SQL (이하 T-SQL 로 표기) 을 사용하면 알아야할 문법들과 유용한 팁들을 정리해 본다. 그리고 T-SQL 뿐만 아니라 SQL-92 표준을 따르는 표준 SQL 문의 다양한 사용법에 대하여서도 정리한다.

1. 참고링크 [Bottom] [Top]

2. 간략한 SQL 문법 [Bottom] [Top]

3. 간단한 SQL 팁 [Bottom] [Top]

3.1. 다른 테이블로 데이터 복사하기 [Bottom] [Top]

  1. SELECT 문 사용
    • 새로운 테이블을 만들면서 데이터를 복사하는 방법 (새로 만들려고 하는 테이블이 있는 경우 에러 발생!)

    • 테이블 구조나 데이터형은 SELECT 문에서 나열되는 컬럼 순서나 데이터형에 따라 결정된다.
      -- 테이블1 ==> 테이블 생성 후 복사
      SELECT [컬럼1, ...]
              INTO [새로운 테이블]
              FROM [테이블1]
              [WHERE {조건식}]
      
  2. INSERT 문 사용
    • 만들어져 있는 테이블로 데이터를 복사하는 방법 (테이블이 없을 경우 에러 발생!)

      -- 테이블2 ==> 테이블1 복사
      INSERT INTO [테이블1]
              SELECT [컬럼1, ...]
                      FROM [테이블2]
                      [WHERE {조건식}]
      
  3. 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]

3.3. 숫자 처리 팁 [Bottom] [Top]

3.3.1. ID 값 처리 팁 [Bottom] [Top]

  1. ID 시드값 초기화 방법
    1. TRUNCATE TABLE 문 사용
      • 테이블 데이터를 삭제 시 DELETE 문 대신에 TRUNCATE TABLE 문을 사용한다.

      • 사용법
        -- 테이블 데이터만 삭제됨
        DELETE FROM {테이블 이름}
        
        -- 테이블 데이터 및 정보까지 삭제됨
        TRUNCATE TABLE '테이블 이름'
        
    2. DBCC CHECKIDENT 문 사용
      • 사용법
        -- ID 시드값 변경
        DBCC CHECKIDENT( '테이블 이름', RESEED, {새로운 ID 시드값} )
        
        -- 현재 ID 값 정보 얻기
        DBCC CHECKIDENT( '테이블 이름' )
        
  2. ID 시드값 정보 얻기
    1. ID 시드 초기값 정보 얻기
      • 사용법
        -- ID 시드 초기값, 증가값 정보 얻기
        SELECT
                IDENT_SEED( '테이블 이름' ) AS 'ID 시드값',
                IDENT_INCR( '테이블 이름' ) AS 'ID 증가값'
        
    2. 현재 ID 값 정보 얻기
      • 사용법
        -- SELECT 문 사용
        SELECT MAX( {ID 컬럼} ) FROM {테이블 이름}
        
        -- DBCC CHECKIDENT 사용
        DBCC CHECKIDENT( '테이블 이름' )
        
        -- INSERT 문 실행 후 마지막으로 삽입된 ID 값 얻기
        SELECT @@IDENTITY
        
  3. ID 값을 임의적으로 삽입하기
    • 사용법
      -- 참고> 테이블 이름 생략 시 전체 테이블이 대상이 된다.
      SET IDENTITY_INSERT [테이블 이름] ON
      
      -- 임의적인 ID 값을 삽입할 수 있다.
      INSERT INTO ...
      

3.4. DB 개체의 확장 속성값 처리 [Bottom] [Top]

  1. 테이블의 확장 속성값 얻기
    • 사용 예
      -- 테이블의 모든 컬럼 정보(확장 속성) 얻기
      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);
      
  2. 테이블의 확장 속성값 추가
    • 사용 예
      -- 테이블의 특정 컬럼 정보(확장 속성) 추가
      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'                -- 컬럼 이름
      
  3. 확장 속성 처리를 위한 저장 프로시저 및 함수

    동작

    저장 프로시저 / 함수

    종류

    확장 속성 조회

    fn_listextendedproperty

    함수

    확장 속성 추가

    sp_addextendedproperty

    저장 프로시저

    확장 속성 삭제

    sp_dropextendedproperty

    저장 프로시저

    확장 속성 수정

    sp_updateextendedproperty

    저장 프로시저

    • 자세한 사용법은 SQL Server 2005 도움말 참고


CategoryDatabase

T-SQL 팁 (last edited 2008-03-19 11:29:13 by viper)