반응형


기존에 있던 DB 스키마를 분석하면서 DB쪽 관련된 명령어 부분을 잘 모르는 것 같아서 간단히 정리해 보았다.


주석 관련


-- 한줄 주석


/*

블록주석

*/


USE [데이터베이스 네임] -> 사용할 DB를 지정, 이 명령어 후 쿼리문은 해당 DB에 적용된다.


SELECT 열 이름 FROM 테이블명 -> 해당 테이블에서 해당 열을 가져온다.


ex) SELECT * FROM MSPark.Test -> Test에 있는 모든 열을 가져온다.

ex) SELECT id, pwd FROM MSPark.Test -> Test에 있는 id, pwd 열을 가져온다.

ex) SELECT id as 아이디, pwd '비밀번호', [직업] = job FROM MSPark.Test -> Test에 있는 id, pwd, job 열을 가져온다.

-> 표시될 때 id는 아이디로 pwd는 비밀번호로 job은 직업으로 변경되서 나온다.


GO -> 쿼리문을 실행한다.


SET ANSI_NULLS (ON / OFF) -> ON : 해당 열에 NULL이 있어도 가져오지 않는다.

                                               OFF : 해당 열에 NULL이 있으면 그 열을 가져온다.


SET QUOTED_IDENTIFIER (ON / OFF) -> ON : 식별자를 구분할 때 쌍따옴표와 대괄호만 가능하다. 리터럴 문자열은 홑따옴표만 가능하다.

                                                           OFF : 식별자를 구분할 때 대괄호만 가능하다. 리터럴 문자열은 홑따옴표, 쌍따옴표만 가능하다.


CREATE TABLE [테이블명] (                -> 해당 테이블명의 테이블을 만든다.

[추가할 열의 이름] [타입] [조건]    -> 해당 테이블에 해당 열을 추가한다.

) ON [파일그룹명]                               -> 해당 테이블을 해당 파일 그룹에 만든다.


ex) CREATE TABLE [dbo].[Test] (       -> dbo.Test 테이블이 생성된다.

[ID] [varchar](32) NOT NULL,        -> 32자 문자열인 ID 열이 생긴다. NULL은 들어갈 수 없다.

[PWD] [varchar](32) NOT NULL     -> 32자 문자열인 PWD 열이 생긴다. NULL은 들어갈 수 없다.

) ON [PRIMARY]                                -> 기본적으로 존재하는 PRIMARY 파일 그룹에 생성된다.


* IDENTITY(시작번호, 증가량) -> 시작번호부터 시작하여 증가량만큼 거진다.


ex) [NO] [int] IDENTITY(1,1) NOT NULL -> NO는 1부터 시작해서 1씩 커진다.


* CONSTRAINT : 제약 조건

  PRIMARY KEY 제약 조건 -> 기본키 설정

  FOREIGN KEY 제약 조건

  UNIQUE 제약 조건

  CHECK 제약 조건

  DEFAULT 정의 -> 기본적으로 들어가는 값 정의

  Null 값 허용


* 기본적으로 B-Tree의 구조로 Indexing을 처리함


Clustered Index -> 테이블당 한 개만 생성 가능

   인덱스로 지정한 열에 맞춰서 자동 정렬

   Primary Key로 지정되면 자동으로 Clustered Index 생성

   Primary Key나 Unique와 같이 중복되지 않는 제약 조건에 한해서 생성

   생성할 때 데이터 페이지 전체를 다시 정렬

   기존에 대용량 데이터가 입력된 상태면 심각한 시스템 부하를 줄 수 있음

   인덱스 자체의 리프 페이지가 데이터 자체

   검색속도는 더 빠르지만 입력/수정/삭제는 더 느리다. 


Nonclustered Index  -> 테이블당 여러 개 생성 가능

                                  생성할 때 데이터 페이지는 그대로 두고 별도의 페이지에 인덱스만 구성

                                  인덱스 자체의 리프 페이지는 데이터가 위치하는 포인터다.

                                  검색은 더 느리지만 입력/수정/삭제는 더 빠르다.

                                  남용할 경우 시스템 성능이 떨어질 수 있음


CREATE UNIQUE 옵션 CLUSTERED INDEX [인덱스명] ON [테이블명]

CREATE UNIQUE 옵션 NONCLUSTERED INDEX [인덱스명] ON [테이블명]

(

[열 이름] ASC or DESC

)

INCLUDE 옵션

WHERE 옵션

WITH 옵션

ON 파일 그룹 옵션

FILESTREAM_ON 옵션


* WITH 옵션 -> PAD_INDEX = {ON | OFF} -> 인덱스 페이지에 여유를 얼마나 두겠는가? (ON이면 아래 fillfactor만큼 적용)

                      FILLFACTOR = fillfactor

    SORT_IN_TEMPDB = {ON | OFF} -> 인덱스를 생성할때 임시 파일을 이용함

    IGNORE_DUP_KEY = {ON | OFF}

    STATISTICS_NORECOMPUTE = {ON | OFF}

    DROP_EXISING = {ON | OFF}

    ONLINE = {ON | OFF} -> 인덱스 생성 중에도 기본 테이블의 쿼리 가능

    ALLOW_ROW_LOCKS = {ON | OFF} -> 인덱스에 접근할 때 행 수준의 잠금을 허용

    ALLOW_PAGE_LOCS = {ON | OFF} -> 인덱스에 접근할 때 페이지 수준의 잠금을 허용

    MAXDOP = maxdop -> 인덱스 생성에 사용할 CPU 개수 강제 지정

    DATA_COMPRESSION = {NONE | ROW | PAGE} -> 압축 관련

    ON PARTITIONS 


반응형

'프로그래밍' 카테고리의 다른 글

SSAO  (0) 2015.01.15
Breakpoint Condition 기능 활용  (0) 2013.08.27
Bullet Helper 클래스  (0) 2012.11.26
warning LNK4099 해결방법  (0) 2012.10.06
Visual Studio Property Sheets를 이용해서 공통된 속성 관리하기  (0) 2012.10.04
Posted by msparkms
,