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 |