Tiny Bunny
본문 바로가기
정보처리기사

정보처리기사(실기) - SQL 응용

by 내이름효주 2024. 4. 17.

📑 데이터베이스 기본

  • 트랜잭션: 인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성,
    데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본단위
    • 특성
      1. 원자성(Atomicity): 트랜잭션의 연산 전체가 성공 또는 실패
      2. 일관성(Consistency): 시스템이 가지는 고정요소는 수행 전과 후의 상태가 같아야함
      3. 격리성(=고립성)(Isolation): 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야함
      4. 영속성(Durability): 성공한 트랜잭션 결과는 영속적으로 데이터베이스에 저장
    • 트랜잭션 제어
      1. COMMIT: 트랜잭션 확정
      2. ROLLBACK: 트랜잭션 취소
      3. CHECKPOINT: 저장 시기 설정(ROLLBACK을 위한 시점을 지정)
    • 병행제어: 데이터베이스 일관성 유지를 위해 상호작용을 제어하는 기법
      • 로킹: 하나의 트랜잭션을 실행하는 동안 특정데이터 항목에 대해서 다른 트랜잭션이 동시에 접근하지 못하도록 상호배제 기능을 제공
        (로킹 단위 작아지면 데이터베이스 공유도 증가, 로킹 오버헤드 증가) 
      • 낙관적 검증: 트랜잭션이 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고 트랜잭션 종료 시 검증을 수행하여 데이터베이스 반영 
      • 타임 스탬프 순서
      • 다중버전 동시성제어
      • 2PC 
  • 데이터 정의어(DDL): 테이블과 같은데이터 구조를 정의하는데 사용되는 명령어들로 특정 구조를 생성, 변경, 삭제, 이름을 바꾸는 데이터 구조와 관련된 명령어
    • 스키마: 데이터베이스의 구조, 제약조건
      • 구성: 외부스키마(사용자나 개발자 관점), 개념스키마(전체적인 뷰), 내부스키마(물리적 저장 장치의 관점) 
    • 테이블: 필드로 구성된 데이터의 집합체(릴레이션, 엔터티)
      • 튜플(=행), 속성(=열). 카디널리티(행의 수), 차수(열의 수), 도메인(원자들의 집합)
    • 인덱스
    • 명령어: CREATE, ATLER, DROP, TRUNCAT
  • 데이터 조작어(DML): 데이터베이스에 저장된자료들을 입력, 수정, 삭제, 조회하는 언어
    • 명령어: SELECT, INSERT, UPDATE, DELETE
    • 조인
    • 서브쿼리
      • FROM 절 서브쿼리: 인라인 뷰
      • WHERE 절 서브쿼리: 중첩 서브쿼리 
  • 데이터 제어어(DCL): 데이터베이스 관리자가 데이터 보안, 무결성 유지, 병행 제어, 회복을 위해 관리자가 사용하는 제어용 언어
    • 명령어: GRANT(권한 부여), REVOKE(권한 취소)

📑 응용 SQL

  • 다중 행 연산자: 서브 쿼리의 결과가 여러개의 튜플을 반환하는 다중 행 서브쿼리에 사용되는 연산자
    • IN: 리턴되는 값 중에서 조건에 해당하는 값이 있으면 참
    • ANY(=SOME): 서브쿼리에 의해 리턴되는 각각의 값과 조건을 비교하여 하나 이상을 만족하면 참 
    • ALL: 값을 서브쿼리에 의해 리턴되는 모든 값과 조건 값을 비교하여 모든 값을 만족해야만 참
    • EXISTS: 메인 쿼리의 비교 조건이 서브쿼리의 결과 중에서 만족하는 값이 하나라도 존재하면 참
  • 집계 함수 구문
    • GROUP BY
    • HAVING

📑 SQL 활용 및 최적화

  • 절차형 SQL: 절차 지향적인 프로그램이 가능하도록 하는 트랜잭션 언어
    • 프로시저: 일련의쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합  
    • 사용자 정의 함수: 일련의 SQL 처리를 수행하고, 수행 결과를 단일 값으로 반환할 수 있는 절차형 SQL
    • 트리거: 데이터베이스 시스템에서 삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL 
  • 옵티마이저: SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 DBMS 내부의 핵심엔진
    • 규칙기반 옵티마이저(RBO): 통계 정보가 없는 상태에서 사전 등록된 규칙에 따라 질의 실행 계획을 선택하는 옵티마이저
    • 비용기반 옵티마이저(CBO): 통계 정보로부터 모든 접근 경로를 고려한 질의실행 계획을 선택하는 옵티마이저