728x90
📕 2과목 - SQL 기본 및 활용
📌 1장 - SQL 기본
📍 Q.22 ?
- Not Null 을 꼭 확인해야함.
- 고객 아이디 'C002' 를 지우면 다른 연결된 것에 Null로 들어가게 되는 데,
- 주문 테이블의 고객ID의 값이 Not Null로 명시되어 있음.
-------------------------- q.22 의 사진
📍 Truncate Table 과 Drop Table ?
- truncate 와 drop 은 로그를 남기지 않음.
- Truncate Table
- 테이블 자체가 삭제되는 것이 아님.
- 해달 테이블에 들어있던 모든 행들이 제거되고, 저장 공간을 재사용 가능하도록 해제함.
- 즉,, ❗❗ 특정 테이블의 모든 데이터를 삭제하고, 디스크 사용량을 초기화 하기 위해 사용.
- 테이블을 초기 상태로 만듦.
- ❗❗ UNDO를 위한 데이터를 생성하지 않기 때문에 동일 데이터량 삭제시 Delete 보다 빠름.
- Drop Table
- 테이블 구조를 완전히 삭제하기 위해서 실행함.
- 테이블의 데이터를 모두 삭제하고, 디스크 사용량도 초기화 할 수 있지만, 테이블의 스키마 정의도 함께 삭제함.
- 테이블 정의 자체를 삭제.
- Delete Table
- 테이블의 데이터를 모두 삭제하지만, 디스크 사용량을 초기화 하지는 않음.

📍 트랜젝션 ?
- 원자성
- 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행 되던지, 아예 실행 전의 상태로 롤백 되던지.
- 고립성
- 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안됨.
- 일관성
- 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못된 것이 있으면 안됨.
- 지속성
- 트랜잭션이 성공적으로 수행되면, 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장됨.
📍 데이터베이스 트랜잭션에 대한 격리성이 낮은 경우 발생할 수 있는 문제점 ? (Q.28)
- Dirty Read
- 다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은 데이터를 읽는 것을 말함.
- Non - Repeatable Read
- 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 그 사이에 다른 트랜잭션이 값을 수정 또는 삭제하는 바람에 두 쿼리 결과가 다르게 나타나는 현상을 말함.
- Phantom Read
- 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 첫번째 쿼리에서 없던 유령 레코드가 두번째 쿼리에서 나타나는 현상.
- 트랜잭션의 특성 (원영독일) 은 ❗❗ 목표 ❗❗ ✔✔ 문제점은 아님. ❗❗
📍 Rollback ?
- 테이블 내 입력한 데이터나, 수정한 데이터, 삭제한 데이터에 대하여 COMMIT 이전에는 롤백을 이용해서 변경사항을 취소할 수 있음.
- 데이터 변경 사항이 취소되어 데이터의 이전 상태로 복구되며, 관련된 행에 대한 잠금(Locking) 이 풀리고, 다른 사용자들이 데이터 변경을 할 수 있게 됨.
- ORACLE 에서는 DDL 문장 수행 후 --> Auto Commit
- SQL Server 에서는 DDL 문장 수행 후 --> 사용자 Commit
- SQL Server 에서는 Create Table 문장도 TRANSACTION의 범주에 포함됨.
📍 BEGIN TRANSACTION ?
- Begin 으로 트랜잭션을 시작하고. Commit 이나 Rollback 으로 트랜잭션을 종료시킴.
- Rollback 구문을 만나면 최초의 Begin Transaction 시점까지 모두 Rollback 이 수행됨.
- SAVEPOINT 를 정의하면, Rollback 할 때, 트랜젝션에 포함된 전체 작업을 롤백하는 것이 아니라, 현 시점에서 savepoint까지 트랜잭션의 일부만 롤백 할 수 있음.
- Begin Transaction;
- Save Transaction sp1;
- Rollback Transaction sp1;
- Commit;
- --> commit 후에는 rollback 불가.
📍 연산자의 우선순위 ?
- 괄호로 묶은 연산
- 부정 연산자 (NOT)
- 비교 연산자 ( >, <, = 등등) 과 SQL 비교 연산자( between, in, like, is null )
- AND
- OR
📍 Null의 연산 ?
- 사칙연산 ( + , -, *, / )
- Null + 10 = Null
- Null - 10 = Null
- Null * 10 = Null
- Null / 10 = Null
- 비교 연산자( >, <, = 등등 )
- 연산의 결과가 거짓으로 리턴됨.
- 조건(연산의 결과) 이 거짓이라서 출력 결과에서 제외되서 출력 결과에서 제외됨.
- 연산의 결과가 거짓으로 리턴됨.
- 특정 값보다 크다, 적다. 로 표현할 수 없음.
728x90
'나를 기록하기 > [자격증] SQLD' 카테고리의 다른 글
[SQLD] 2과목 2장 - SQL 활용(Q.65~91) (0) | 2022.05.22 |
---|---|
[SQLD] 2과목 1장 - SQL 기본(Q.52~63) (0) | 2022.05.21 |
[SQLD] 2과목 1장 - SQL 기본(Q.36~51) (0) | 2022.05.21 |
[SQLD] 2과목 1장 - SQL 기본(Q.1~21) (0) | 2022.05.16 |
[SQLD ] 1과목 1장 - 데이터 모델링의 이해 (0) | 2022.03.26 |