본문 바로가기

정보처리기사

[정보처리기사] 필기 노트 - SQL 활용

  • SQL 의 개념
    • SQL (Structured Query Language)이란?
      • 관계형 데이터베이스에서 데이터 정의, 조작, 제어를 하기 위한 언어
      • 원하는 정보가 무엇인지만 정의하는 비절차적 언어
    • SQL 의 분류
      • 데이터 정의어 (DDL: Data Definition Language)
      • 데이터 조작어 (DML: Data Manipulation Language)
      • 데이터 제어어 (DCL: Data Control Language)
      • 트랜잭션 제어어 (TCL: Transaction Control Language)
  • DDL
    • DDL (Data Definition Language) 이란?
      • 데이터를 정의하는 언어
    • DDL 명령어
      • CREATE: 스키마, 도메인, 테이블, 뷰, 인덱스 등을 생성할 때 사용
      • ALTER: 생성된 기본 테이블이나 도메인의 정의를 변경하고자 할 때 사용하는 명령어
      • DROP: 스키마, 도메인, 테이블, 뷰, 인덱스 등을 제거하는 명령문
  • DCL
    • DCL (Data Control Language)이란?
      • 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는데 사용되는 언어
    • TCL (Transaction Control Language) 이란?
      • 트랜잭션을 제어하는 언어
    • DCL 명령어
      • GRANT: 관리자가 사용자에게 데이터베이스에 대한 권한을 부여하기 위한 명령어
      • REVOKE: 관리자가 사용자에게 부여했던 권한을 취소하기 위해 사용되는 명령어
      • COMMIT: 데이터베이스 내의 연산이 성공적으로 종료되어 연산에 의한 수정내용을 지속적으로 유지하기 위한 명령어
      • ROLLBACK: 데이터베이스 내의 연산이 수행되기 이전 상태로 되돌리기 위해 연산 내용을 취소할 때 사용하는 명령어
      • SAVEPOINT: ROLLBACK 할 위치인 저장점을 지정하는 명령어
  • DML
    • DML (Data Manipulation Language)이란?
      • 데이터를 조작하는 명령어
    • DML 명령어
      • INSERT: 테이블에 원하는 레코드를 삽입하는 연산으로 하나의 테이블만 대상으로 연산하여야 함
      • UPDATE: 테이블에서 원하는 속성값을 변경하는 연산
      • DELETE: 테이블에서 원하는 레코드(튜플)을 삭제하는 연산
      • SELECT: 테이블이나 뷰에 접근해서 원하는 튜플이나 속성을 검색하는 명령어로 가장 많이 사용되는 SQL 명령어
  • DML_SELECT
    • DML_SELECT 의 개념
      • 테이블이나 뷰에 접근해서 원하는 튜플이나 속성을 검색하는 명령어로 가장 많이 사용되는 SQL 명령어
    • 표기 형식
      • SELECT [DISTINCT] 속성 FROM 테이블명 [WHERE 조건식] [GROUP BY 속성명 [HAVING 조건] [ORDER BY 속성명 [ASC|DESC]];
  • 트랜잭션
    • 트랜잭션(Transaction)의 개념
      • 하나의 작업을 수행하기 위해 필요한 데이터베이스 연산들을 모아 놓은 것으로, 논리적인 작업의 단위
      • 트랜잭션은 분할할 수 없는 최소의 단위
    • 트랜잭션의 특징
      • 원자성 (Atomicity): 트랜잭션의 연산이 모두 정상적으로 수행되거나 하나도 수행되지 않아야 함 (All or nothing)
      • 일관성 (Consistency): 트랜잭션이 수행된 후에도 데이터베이스의 내용에 일관성이 있어야 함
      • 격리성 (Isolation): 수행중인 트랜잭션이 완료될 때까지 다른 트랜잭션들이 중간 연산 결과에 접근할 수 없음
      • 지속성 (Durability): 트랜잭션이 수행을 완료한 후에 데이터베이스에 반영한 결과는 영구적이어야 함
  • 데이터 사전
    • 데이터 사전(Data Dictionary)의 개념
      • 데이터 사전에는 데이터베이스의 데이터를 제외한 모든 정보가 포함되어 있음
      • 시스템은 데이터 사전의 내용을 변경하는 권한을 가짐
      • 사용자에게는 읽기 전용 테이블 형태로 제공되모르 단순 조회만 가능
    • 데이터 사전 내용
      • 데이터 사전은 데이터의 데이터 즉 메타 데이터(Meta data)로 구성됨
      • 데이터 사전에는 아이디, 패스워드, 권한 등의 사용자 정보와 테이블, 뷰, 인덱스 등의 데이터베이스 객체 정보, 무결성 제약 정보와 함수, 프로시저 및 트리거 등이 포함됨
    • 뷰 (View)
      • 뷰의 생성: CREATE VIEW 로 뷰를 생성
      • 뷰의 조회: SELECT문을 이용하여 뷰를 조회
      • 뷰의 삭제: DROP VIEW 로 뷰를 삭제
  • 인덱스
    • 인덱스(Index) 의 개념
      • 데이터를 찾는 시간을 단축할 수 있는 방법
      • 기본키(Primary Key)느 기본키를 생성할 때 자동으로 인덱스가 생성되지만 다른 속성의 인덱스는 자동으로 생성되지 않음
    • 인덱스의 생성, 삭제, 변경
      • 인덱스의 생성: CREATE INDEX로 인덱스를 생성
      • 인덱스의 삭제: DROP INDEX로 인덱스를 삭제
      • 인덱스의 변경: ALTER INDEX로 인덱스의 정의를 변경
  • 조인
    • 조인(Join)의 개념
      • 두 개의 테이블을 결합하여 데이터를 추출하는 기법
      • 관계형 데이터베이스의 가장 큰 장점이면서 핵심적인 기능
    • 조인의 유형
      • 물리적 조인: 데이터베이스의 옵티마이저에 의해 내부적으로 발생하는 테이블 결합 방식으로 Nested Loop Join, Merge Join, Hash Join 등이 있음
      • 논리적 조인: 사용자의 SQL 문에 표현되는 테이블 결함 방식
      • 내부 조인(동등 조인, 자연 조인, 교차 조인)
      • 외부 조인(왼쪽 외부 조인, 오른쪽 외부 조인, 완전 외부 조인)
  • 서브 쿼리
    • 서브 쿼리 (Sub Query)의 개념
      • SQL 문 안에 포함된 SQL문
      • 메인 쿼리와 서브 쿼리는 주종 관계이며, 서브 쿼리는 메인 쿼리의 속성 정보를 사용할 수 있지만, 역으로는 성립하지 않음
    • 서브 쿼리의 유형
      • 비연관 (Un-Correlated) 서브 쿼리: 서브 쿼리가 메인 쿼리의 속성을 가지지 않음 (메인 쿼리에 서브 쿼리에서 실행된 결과 값을 제공)
      • 연관 (Correlated) 서브 쿼리: 서브 쿼리가 메인 쿼리의 속성을 가짐 (메인 쿼리가 먼저 수행되어 얻은 데이터를 서브 쿼리의 조건에 맞는지 확인)