DataEdit

[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

활동하기