[SQLD 정리]8DAY
by Bigdaditor과목 2 SQL 기본 및 활용
1장 SQL 기본
제 4절 TCL
2. COMMIT
# COMMIT은 입력, 삭제, 수정한 자료에 문제가 없다고 판단 시, 트랜잭션을 정상 종료시키는 명령이다.
# ORACLE
DELETE FROM tbl;
COMMIT;
# COMMIT이나 ROLLBACK 이전의 데이터 상태는
- 메모리 BUFFER에만 영향을 받았기 때문에 데이터의 변경 이전 상태로 복구 가능하다.
- 사용자는 SELECT 문장으로 결과를 확인 가능하다.
- 다른 사용자는 현재 사용자가 수행한 명령의 결과를 볼 수 없다.
- 변경된 행은 잠금이 설정되어서 다른 사용자가 변경할 수 없다.
# COMMIT 이후 데이터 상태는
- 변경 사항이 데이터베이스에 반영된다.
- 모든 사용자는 결과를 볼 수 있다.
- 행에 대한 잠금이 풀리고 다른 사용자들이 행을 조작할 수 있다.
# SQL Server의 COMMIT
- SQL Sever는 기본적으로 AUTO COMMIT모드이기 때문에 DML 수행 후 사용자가 COMMIT이나 ROLLBACK을 처리할 필요가 없다.
[ SQL Server의 트랜잭션 ]
방식 | 설명 |
AUTO COMMIT | # 명령어가 성공적으로 수행되면 자동으로 COMMIT을 수행 |
암시적 트랜잭션 | # 트랜잭션의 시작은 DBMS가 처리하고 트랜잭션의 끝은 사용자가 명시적으로 COMMIT또는 ROLLBACK으로 처리한다. |
명시적 트랜잭션 |
# 트랜잭션의 시작과 끝을 모두 사용자가 명시적으로 지정하는 방식이다. # BEGIN TRANSACTION으로 트랜잭션을 시작하고 COMMIT TRANSACTION 또는 ROLLBACK TRANSACTION으로 트랜잭션을 종료한다. |
3. ROLLBACK
# COMMIT 이전에는 변경 사항을 취소할 수 있는 명령이다.
# ORACLE
DELETE FROM tbl;
ROLLBACK;
# SQL Server의 ROLLBACK
- AUTO COMMIT이 기본 방식이므로 임의적으로 ROLLBACK을 수행하려면 명시적으로 트랜잭션을 선언해야한다.
BEGIN TRAN
DELETE FROM tbl;
ROLLBACK;
# ROLLBACK 후 데이터 상태는
- 데이터에 대한 변경 사항은 취소된다.
- 이전 데이터는 다시 재저장된다.
# COMMIT과 ROLLBACK을 사용함으로써
- 데이터 무결성이 보장된다.
- 데이터의 변경 사항이 확인 가능하다.
- 논리적으로 연관된 작업을 그룹핑하여 처리가능하다.
4. SAVEPOINT
# 전체작업을 롤백하는 것이 아니라 현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있게 해주는 명령이다.
# 복수의 저장점을 정의할 수 있으며 동일이름으로 저장점을 정의했을 때는 나중에 정의한 저장점이 유효하다.
# 저장점까지의 롤백은 ROLLBACK 뒤에 저장점 명을 지정한다.
# 특정 저장점까지 롤백하면 그 저장점 이후에 설정한 저장점이 무효된다.
제 5절 WHERE 절
1. WHERE절 개요
2. 연산자의 종류
3. 비교연산자
[ 문자유형비교방법 ]
구분 | 비교방법 |
비교연산자의 양쪽이 | |
# CHAR 유형인 경우 |
# 길이가 서로 다른 CHAR형 타입이면 작은 쪽에 SPACE를 추가하요 길이를 같에 한 후에 비교한다 # 서로 다른 문자가 나올 때까지 비교한다. |
# VARCHAR 유형인 경우 |
# 짧은 것이 끝날 때까지만 비교한 후에 길이가 긴 것이 크다고 판단. # 길이가 같고 다른 것이 없다면 같다고 판단. |
# 상수값과 비교할 경우 | # 상수 쪽을 변수 타입과 동일하게 바꾸고 비교한다. |
4. SQL 연산자
# IS NULL 연산자
- NULL 값과의 수치연산은 NULL 값을 리턴한다.
- NULL 값과의 비교연산은 거짓을 리턴한다.
- 어떤 값과 비교할 수도 없으며, 특정 값보다 크다, 적다라고 표현할 수 없다.
5. 논리연산자
6. 부정연산자
7. ROWNUM, TOP 사용
# ROWNUM
- 테이블이나 집합에서 원하는 만큼의 행만 가져오고 싶을 때 WHERE 절에서 행의 개수를 제한하는 목적으로 사용
SELECT * FROM tbl WHERE ROWNUM = N;
SELECT * FROM tbl WHERE ROWNUM <= N;
SELECT * FROM tbl WHERE ROWNUM < N;
# TOP 절
TOP(N) [PERCENT] [WITH TIES]
- N: 반환할 행의 숫자
- PERCENT: 쿼리 결과 집합에서 처음 N%의 행만 반환됨
- WITH TIES: ORDER BY 절이 지정된 경우에만 사용할 수 있다. TOP N의 마지막 행과 같은 값이 있는 경우 추가 행이 출력되도록 지정할 수 있다.
SELECT TOP(N) * FROM tbl;
'자격증 > SQLD' 카테고리의 다른 글
[SQLD 정리]9DAY (0) | 2019.11.20 |
---|---|
[SQLD 정리]7DAY (0) | 2019.11.15 |
[SQLD 정리]6DAY (0) | 2019.11.12 |
[SQLD 정리]5DAY (0) | 2019.11.07 |
[SQLD 정리]4DAY (0) | 2019.11.06 |
블로그의 정보
DataEdit
Bigdaditor