나를 기록하기/[자격증] SQLD

[SQLD] 2과목 1장 - SQL 기본(Q.22~35)

배고파요 2022. 5. 17. 12:46
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 불가. 

 
 
 

📍 연산자의 우선순위 ?

  1. 괄호로 묶은 연산
  2. 부정 연산자 (NOT)
  3. 비교 연산자 ( >, <, = 등등) 과 SQL 비교 연산자( between, in, like, is null )
  4. AND
  5. OR

 
 
 
 

📍 Null의 연산 ?

  • 사칙연산 ( + , -, *, / )
    • Null + 10 = Null
    • Null - 10 = Null
    • Null * 10 = Null
    • Null / 10 = Null
  •  비교 연산자( >, <, = 등등 )
    • 연산의 결과가 거짓으로 리턴됨.
      • 조건(연산의 결과) 이 거짓이라서 출력 결과에서 제외되서 출력 결과에서 제외됨.
  • 특정 값보다 크다, 적다. 로 표현할 수 없음.

 
 
 
 
 
 
 
 
 
 

728x90