상세 컨텐츠

본문 제목

SQL 기본

개발

by Yo구르트 2016. 8. 17. 11:40

본문

728x90

#설치

디텍토리명으로 sql버전 확인가능

데이터베이스 엔진구성

DB접속허용 혼합모드.

데이터파일 : .mdf(control+dbf), .ndf(dbf)

로그파일 : .ldf(log)

Port : C:\Windows\System32\drivers\etcservices파일 참조(1433)

호환성 : C:\Program Files\Microsoft SQL Server 80(ver2000), 90(ver2005), 100(ver2008)

DB : C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA

     새로운 DB생성시, [.ndf]로 생성됨

 

 

mdf

ldf

ndf

구성정보(control)

O

 

 

DATA

O

 

O

Log

 

O

 

 

 

#데이터

Int의 비트수 : 4byte, 32bit(42~43억개 사용가능)

Ex) 나이에 대한 데이터타입 : byte – 성능고려

 

#SQL

정의(DDL) : object – 그릇(table, View)

Rollback 처리 불가

create, alter, drop, truncate

조작(DML) : data – , 컬럼 단위

                Rollback 처리 가능

insert, delete, update, select(메모리상 I/O 발생)

제어(DCL) : 권한

                Grant(권한부여), revoke(권한부여권한거부 변경), deny(권한거부)

 

#Transaction

-물리적으로 저장공간에 변화가 일어나는 작업의 단위

1) 명시적 commit : begin(o), commit(o)

2) 암시적 commit : begin(X), commit(o)

  -> DML(Oracle)

3) Auto commit : begin(X), commit(x)

-> DDL, DML(MS-SQL)

 

#Index

인덱스가 없는 경우 :  heap 구조

primary key : 테이블당1개가능

unique : 테이블당249개가능

 

 

#System DB

Master : Instrance 구성정보

Model : 기본틀 제공 Database

Msdb : SQL Server 에이전트 정보

Tempdb : 임시 DB 개체들이 생성/제거

                 -> 재부팅 사라짐

#디스크관리

운영체제 기본값 : 4K

Ms-sql 기본값 : 8K

디스크가상화 재부팅시 연결이 끊어짐

 

#File Group

Datafile 묶음

Data Object [Table, index]저장 대상

Read Only 대상

Raid 0 (Stripe방식)

Backup/Restore -> 대상:File, File Gro

 

읽기전용 : PRIMARY은 불가

WHY? PRIMARY에서 구성정보를 포함하고 있으므로

 

#Data Page

단일 SegmentData Page : 8K(*8:Extents)

혼합 SegmentIndex Page : 8K(*8:Extents)

 

Heap

데이터조작 성능이 가장 뛰어남(insert, delete, update)

Clustered Index (B-tree: root page 1)

데이터조작 성능이 떨어짐(insert시 최악)

범위형조회시 최적화(순차적으로 실행)

Non Clustered Index

범위가 넘어가면 풀스캔

데이터는 건들지 않음

 

리프레벨(맨 아래) : Clustered-Data page, Non Clustered-index page

키 제약조건 사용시, 인덱스 생성

여러가지 제약조건 사용시, 성능저하

 

#Schema

1) 용어, 사물, object에 대한 사전 정의

2) object에 대한 묶음 공간

3) 소유자의 권한 설정을 할 수 있는 대상

 

#Constraint(5+@)

1. PK : Unique + Null(X) + Index

             MS-SQL : CI (기본값)

             Oracle : BTree 구조(기본값)

2. UQ : Unique + Null(O) + Index

             MS-SQL : Null(1), NCI (기본값)

             Oracle : Null(다수),BTree 구조(기본값)

3. FK : 자기/다른 Table Unique컬럼 참조

4. CK : 범위(between), 열거(in)

5. NN : Not Null

@. DF

 

#Index 사용불가

1. 인덱스 컬럼이 where절에 미포함

2. 인덱스 컬럼 가공

3. 복수 인덱스 시, 데이터가 많은경우

 

#rid

8 bytes

페이지 주소 + 파일 ID + 슬롯번호

 

#탐색조건

A(포인트형), b(범위형)

AB(성능뛰어남), 조건을 제시할때는 명확한 것부터

Where C1 in (1,2,3)Where C1 in between 1 and 3 = where C1=1 or C1=2 or C1=3

 

#JOIN

equi join      =

non-equi join  between

inner join     ansi--> inner join

self join      자기 Table 의 컬럼을 참조하는 join

outer join     =(+) (+)=  ,

             ansi --> [left/right/full] outer join

cross join    

natural join   -> inner join 한 형태

 

(물리적 join)

Join문 기준 Table(Outer Table)을 선정하고, Table에서 처리를 시작한다.

From 뒤의 Table 순서로 처리순서를 만들고 사다면, option(force order)

Nested Loop Join : option(loop join)

Merge Join : option(merge join)

Hash Join : option(hash join)

hash>merge>NL join(force order)>NL join(기본값)

 

 

728x90

관련글 더보기

댓글 영역