TCL(트랜잭션 제어어)
COMMIT, ROLLBACK, SAVEPOINT
DML에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어
- 효과
데이터 무결성 보장
영구적인 변경을 하기 전 데이터 변경사항 확인 가능
논리적 연관된 작업 그룹핑하여 처리 가능
(Default) ORACLE - Not Auto Commit / SQL Server - Auto Commit
DDL 명령어
CREATE, ALTER, RENAME, DROP
직접 데이터베이스의 테이블에 영향을 미치기 때문에 DDL 명령어를 입력하는 순간 명령어에 해당하는 작업이 즉시(Auto Commit) 완료된다.
DML 명령어
INSERT, UPDATE, DELETE, SELECT
조작하려는 테이블을 메모리 버퍼에 올려놓고 작업을 하기 때문에 실시간으로 테이블에 영향을 미치는 것은 아니다.
따라서 버퍼에서 처리한 DML 명령어가 실제 테이블에 반영되기 위해서는 COMMIT 명령어를 입력하여 트랜잭션을 종료해야 한다.
SQL Server의 경우 DML도 Auto Commit 처리 된다.
TRUNCATE TABLE을 이용하여 데이터를 삭제한 이후 오류가 발견되어 다시 복구를 원할 경우 ROLLBACK 문을 이용하여 테이블 데이터를 원 상태로 되돌릴 수 있다.
SQL 연산자 종류
BETWEEN A AND B
A와 B의 값 사이에 있으면 된다. (A, B 값 포함)
IN (list)
리스트에 있는 값 중에서 어느 하나라도 일치하면 된다.
LIKE '비교문자열'
비교 문자열과 형태가 일치하면 된다.
IS NULL
NULL 값인 경우
부정 SQL 연산자
NOT BETWEEN A AND B
A와 B의 값 사이에 있지 않다. (A, B 값 포함하지 않음)
NOT IN (list)
리스트에 있는 값과 일치하지 않는다.
IS NOT NULL
NULL 값을 갖지 않음
부정 논리 연산자
!=, ^=, <> : 같지 않다.
NOT 칼럼명 = : ~와 같지 않다.
NOT 칼럼명 > : ~보다 크지 않다.
와일드 카드의 종류
% : 0개 이상의 어떤 문자 의미
_ : 1개인 단일 문자 의미
WHERE 절에서 행의 개수를 제한하는 목적으로 사용
ORACLE - ROWNUM / SQL Server - TOP
1건의 행만 가져오고 싶을 때
-ORACLE
SLECT PLAYER_NAME FROM PLAYER WHERE ROWNUM = 1;
SLECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= 1;
SLECT PLAYER_NAME FROM PLAYER WHERE ROWNUM < 2;
-SQL Server
SELECT TOP(1) PLAYER_NAME FROM PLAYER;
'IT' 카테고리의 다른 글
[SQLD] SQL기본_GROUP BY, HAVING절 (0) | 2017.11.21 |
---|---|
[SQLD] 함수 (0) | 2017.11.20 |
[SQLD] SQL기본_DDL (0) | 2017.11.20 |
[SQLD] 엔티티 (0) | 2017.10.20 |
ORACLE → MSSQL 쿼리 변환 (0) | 2017.10.18 |