본문 바로가기
자격증/SQLD - 준비중

SQLD정리 3

by Woodland 2018. 11. 29.

1. 데이터베이스 트랜젝션에 대한 설명 : ACID

- Atomacity (원자성) [원자폭탄 터지먼 다죽던가 살던가]

트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 

실행되지 않은 상태로 남아있어야 한다.

- Consistency (일관성) [한번 무결하면 일관성 있게 무결할것]

트랜잭션이 실행 되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면

트랜잭션이 실행된 이휴에도 데이터베이스의 내용에 잘못이 있으면 안된다.

- Isolation (고립성) [다른 트랜잭션 영향 받지말고 고립되어라]

트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 

잘못된 결과를 만들어서는 안된다.

- Durability (지속성) [성공된 트랜잭션은 지속되어라]

트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은

영구적으로 저장된다


2.트랜잭션에 대한 격리성(Isolation)이 낮은 경우 발생할 수 있는 문제점들

- Dirty Read

다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은

데이터를 읽는것

- Non-Repeatable Read

한 트랜잭션 내에서 같은 쿼리를 두 번 수행 했는데, 그 사이에 다른 트랜잭션이

값을 수정 또는 삭제하는 바람에 두 쿼리 결과가 다르게 나타나는 현상

- Phantom Read

한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 첫번째 쿼리에서 없던 유령

레코드가 두번째 쿼리에서 나타나는 현상을 말한다.


3. BEGIN TRANSACTION

- EX1> BEGIN TRANSACTION

- 트랜잭션을 시작하고 COMMIT TRANSACTION 또는 ROLLBACK으로 트랜잭션을 

  종료한다. ROLLBACK구문을 만나면 최초의 BEGIN시점까지 모두 ROLLBACK이

  수행된다.


4. SAVEPOINT

- EX1> 

BEGIN TRANSACTION;

SAVEPOINT SVPT1;

- 정의하면 ROLLBACK할때 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라

  현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있다.


5. NULL 값이 포함된 사칙연산의 결과값은 NULL이다.


6. NULL 값이 포함되어있는지의 여부를 확인할때는

- IS NULL 이나 IS NOT NULL을 이용한다.

- EX1> SELECT * FROM EMP1 WHERE COL1 IS NOT NULL;


7. BETWEEN 을 잘 쓰는법

- BETWEEN a AND b

   a와 b값 사이에 있는걸 뽑아낸다.

- EX1>

SELECT SUM(매출금액) AS 매출금액합계

FROM 월별매출

WHERE 년='2014' AND 월 BETWEEN '11' AND '12'

OR    년='2015' AND 월 BETWEEN '01' AND '03';


8. IN 을 잘 쓰는 법

-IN ( list)

  list 안에 있는것들중 하나라도 일치하면 가지고 온다.

- EX1>

SELECT SUM(매출금액) AS 매출금액합계

FROM 월별매출

WHERE 년='2014' AND 월 IN ('11','12')

OR    년='2015' AND 월 IN ('01','02','03');


9. 함수의 종류

- 함수에는 내장함수와 사용자 정의 함수로 나뉜다.

- 내장함수 

: 함수의 입력 행수에 따라 단일행 함수와 다중행 함수로 구분할 수 있다.

= 다중행, 단일행 모두 단일값만을 반환한다.   

= 단일행 함수

-= SELECT, WHERE ORDER BY, UPDATE의 SET절에 사용이 가능하다.

-= 1:M 관계의 두 테이블을 조인할 경우 M쪽에서 출력된 행이 하나씩

  단일행 함수의 입력값으로 사용되므로 사용할 수 있다.

= 다중행 함수

-= 집계함수

-= 그룹함수

-= 윈도우 함수


'자격증 > SQLD - 준비중' 카테고리의 다른 글

SQLD정리 -4  (0) 2018.12.01
sqld 정리 2  (0) 2018.11.28
SQLD 정리 1과목 2  (0) 2018.11.17
[데이터 모델링의 이해] 핵심체크-1  (0) 2018.11.12