Etc/📃 Certification

[정보처리기사] 3과목 4장 - SQL 활용

posted by sangmin

3과목 - 데이터베이스 구축

4장. SQL 활용


108. 프로시저 (Procedure)

프로시저의 개요

  • 프로시저란 절차형 SQL을 활용하여 특정 기능을 수행하는 일종의 트랜잭션 언어로, 호출을 통해 미리 저장해 놓은 SQL 작업 수행

  • 데이터베이스에 저장되어 수행되기 때문에 Stored Procedure라고도 불림

  • 시스템의 일일 마감 작업, 배치 작업 등에 주로 사용

  • 프로시저 구성도

    DECLARE
    BEGIN
    	CONTROL
    	SQL
    	EXEPTION
    	TRANSACTION
    END
    • DECLARE : 프로시저의 명칭, 변수, 인수, 데이터 타입을 정의하는 선언부
    • BEGIN / END : 프로시저의 시작과 종료
    • CONTROL : 조건문 또는 반복문이 삽입되어 순차적으로 처리
    • SQL : DML 또는 DCL 삽입
    • EXCEPTION : BEGIN ~ END 안의 구문에서 예외가 발생하면 이를 처리하는 방법을 정의
    • TRANSACTION : 수행될 데이터 작업들을 DB에 적용할지 취소할지 결정

프로시저 생성

CREATE [OR REPLACE] PROCEDURE 프로시저명(파라미터)
[지역변수 선언]
BEGIN
    프로시저 BODY;
END;
  • OR REPLACE : 동일한 프로시저 이름이 존재하는 경우, 기존의 프로시저를 대체
  • 파라미터
    • IN : 호출 프로그램이 프로시저에게 값을 전달할 때 지정
    • OUT : 프로시저가 호출 프로그램에게 값을 반환할 때 지정
    • INOUT : 호출 프로그램이 프로시저에게 값을 전달하고, 프로시저 실행 후 호출 프로그램에 값을 반환할 때 지정
  • 프로시저 BODY : 프로시저의 코드를 기록하는 부분

프로시저 실행

EXECUTE 프로시저명;
EXEC 프로시저명;
CALL 프로시저명;

프로시저 제거

DROP PROCEDURE 프로시저명;

109. 트리거 (Trigger)

트리거의 개요

  • 트리거는 데이터베이스 시스템에서 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL
  • 목적 : 데이터 변경 및 무결성 유지, 로그 메시지 출력
  • 트리거 구문에는 DCL을 사용할 수 없음

트리거의 구성

DECLARE
EVENT
BEGIN
    CONTROL
    SQL
    EXEPTION
END
  • EVENT : 트리거가 실행되는 조건 명시

트리거의 생성

CREATE [OR REPLACE] TRIGGER 트기러명 [동작시기 옵션][동작 옵션] ON 테이블명
REFERENCING [NEW | OLD] AS 테이블명
FOR EACH ROW
[WHEN 조건식]
BEGIN
    트리거 BODY;
END;
  • 동작시기 옵션 : 트리거가 실행될 때를 지정
    • AFTER : 테이블이 변경된 후에 트리거 실행
    • BEFORE : 테이블이 변경되기 전에 트리거 실행
  • 동작 옵션 : 트리거가 실행되게 할 작업의 종류 지정
    • INSERT / UPDATE / DELETE
  • NEW | OLD : 트리거가 적용될 테이블의 별칭 지정
    • NEW : 추가되거나 수정에 참여할 테이블
    • OLD : 수정되거나 삭제 전 테이블
  • FOR EACH ROW : 각 튜플마다 트리거 적용

트리거의 제거

DROP TRIGGER 트리거명;

110. 사용자 정의 함수

사용자 정의 함수의 개요

  • 프로시저와 유사하게 SQL을 사용하여 일련의 작업을 연속적으로 처리
  • 종료 시 처리 결과를 단일값으로 반환하는 절차형 SQL (출력 파라미터 없음)
  • 사용자 정의 함수는 데이터베이스에 저장되어 DML문의 호출에 의해 실행
  • 테이블 조작은 할 수 없고 SELECT를 통한 조회만 가능

사용자 정의 함수의 구성

DECLARE
BEGIN
    CONTROL
    SQL
    EXEPTION
    RETURN
END
  • SQL : SELECT문이 삽입되어 데이터 조회 작업 수행
  • RETURN : 호출 프로그램에 반환할 값이나 변수 정의 (단일값)

사용자 정의 함수 생성

CREATE [OR REPLACE] FUNCTION 사용자 정의 함수명(파라미터)
[지역변수 선언]
BEGIN
    사용자 정의 함수 BODY;
    RETURN 반환값;
END;
  • 파라미터
    • IN : 호출 프로그램이 사용자 정의 함수에게 값을 전달할 때 지정
    • 매개변수명
    • 자료형
  • RETURN 반환값

사용자 정의 함수 실행

SELECT 사용자 정의 함수명 FROM 테이블;
INSERT INTO 테이블명(속성명) VALUES (사용자 정의 함수명);
DELETE FROM 테이블명 WHERE 속성명 = 사용자 정의 함수명;
UPDATE 테이블명 SET 속성명 = 사용자 정의 함수명;

사용자 정의 함수 제거

DROP FUNCTION 사용자 정의 함수명;

111. DBMS 접속 기술

DBMS 접속의 개요

  • 사용자가 데이터 사용을 위해 응용 시스템을 이용하여 DBMS에 접근하는 것
  • 응용 시스템은 매개 변수를 전달 받아 SQL을 실행하고 DBMS로부터 전달받은 결과를 사용자에게 전달하는 매개체 역할 수행

DBMS 접속 기술

  • DBMS에 접근하기 위해 사용되는 API 또는 API 사용을 편리하게 도와주는 프레임워크
  • JDBC (Java DataBase Connectivity)
    • Java 언어로 다양한 종류의 데이터베이스에 접속하고, SQL문을 수행할 때 사용되는 표준 API
  • ODBC (Open DataBase Connectivity)
    • 데이터베이스에 접근하기 위한 표준 개방형 API로, 개발 언어에 관계없이 사용 가능
  • MyBatis
    • JDBC 코드를 단순화하여 사용할 수 있는 SQL Mapping 기반 오픈 소스 접속 프레임워크
    • SQL 문장을 분리하여 XML 파일을 만들고, Mapping을 통해 SQL 실행

동적 SQL (Dynamic SQL)

  • 개발 언어에 삽입되는 SQL 코드를 문자열 변수에 넣어 처리하는 것
  • 동적 SQL은 사용자로부터 SQL문의 일부 또는 전부를 입력받아 실행할 수 있음
  • 정적 SQL에 비해 속도가 느리지만 유연한 개발이 가능

112. SQL 테스트

SQL 테스트의 개요

  • SQL이 작성 의도에 맞게 원하는 기능을 수행하는지 검증하는 과정

단문 SQL 테스트

  • DDL, DML, DCL이 포함되어 있는 SQL과 TCL (Transaction Control Language)을 테스트하는 것으로, 직접 실행
  • DESCRIBE 명령어를 이용하여 DDL로 작성된 테이블이나 뷰의 속성 확인 가능

절차형 SQL 테스트

  • 프로시저, 사용자 정의 함수, 트리거 등의 절차형 SQL은 디버깅을 통해 테스트
  • SHOW 명령어를 통해 오류 확인

113. ORM (Object-Relational Mapping)

ORM의 개요

  • ORM은 객체지향 프로그래밍의 객체와 관계형 데이터베이스의 데이터를 매핑하는 기술
  • ORM으로 생성된 가상의 객체지향 데이터베이스는 프래그래밍 코드와 독립적이므로 재사용 및 유지보수가 용이

ORM 프레임워크

  • JAVA : JPA, Hibernate, EclipseLink 등
  • C++ : ODB, QxOrm 등
  • Python : Django, SQLAlchemy 등
  • iOS : DatabaseObjects, Core Data 등
  • .NET : NHibernate, Dapper 등
  • PHP : Doctrine, Propel, RedBean 등

ORM의 한계

  • 프레임워크가 자동으로 SQL을 작성하기 때문에 의도대로 SQL이 작성되었는지 확인할 필요가 있음
  • 객체지향적인 사용을 고려해야 하고, 프로젝트가 크고 복잡해질수록 ORM 기술 적용이 어려움

114. 쿼리 성능 최적화

쿼리 성능 최적화의 개요

  • 데이터 입출력 애플리케이션의 성능 향상을 위해 SQL 코드를 최적화하는 것
  • 최적화 전 성능 측정 도구인 APM을 사용하여 최적화 할 쿼리 선정
  • 최적화 할 쿼리에 대해 옵티마이저가 수립한 실행 계획 검토
  • 옵티마이저
    • RBO (Rule Based Optimizer, 규칙 기반 옵티마이저)
      • 규칙에 정의된 우선순위를 기준으로 최적화
      • 성능 기준 : 개발자의 SQL 숙련도
    • CBO (Cost Based Optimizer, 비용 기반 옵티마이저)
      • 액세스 비용을 기준으로 최적화
      • 성능 기준 : 옵티마이저의 예측 성능

참고

 

시나공 정보처리기사 필기

2020년 정보처리기사 NCS기반 전면 개편!정보처리기사 시험은 NCS 학습 모듈 중 정보통신 분야의 ‘정보기술’ 분류에 포함된 ‘정보기술개발’과 ‘정보기술운영’에 속한 125개의 학습 모듈을

book.naver.com