기존에 있던 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 |