정보처리기사/실기

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

hot_py 2020. 7. 22. 20:58

프로시저

프로시저 : 절차형 SQL을 활용하여 특정 기능을 수행할 수 있는 트랜잭션 언어, 데이터 조작어(DML)수행

프로시저 구성 요소(순서)

-선언부

-시작/종료부

-제어부

-SQL

-예외부

-실행부

 

제어부(CONTROL) 

조건문

IF문

IF 조건 THEN
 문장;
ELSIF 조건 THEN
 문장;
ELSE
 문장;
END IF;

 

CASE문

CASE 변수
  WHEN 값1 THEN
    SET 명령어;
  WHEN 값2 THEN
    SET 명령어;
  ELSE
    SET 명령어;
END CASE;

 

반복문

LOOP문

LOOP
    문장;
    EXIT WHEN 탈출조건
END LOOP;

 

WHILE문

WHILE 반복 조건 LOOP
 LOOP
 문장;
END LOOP;

 

FOR LOOP문

FOR 인덱스 IN 시작 값... 종료값
 LOOP
 문장;
END LOOP;

 

예외부(EXCEPTION)

EXCEPTION
 WHEN 조건 THEN
   SET 명령어;

 

실행부(TRANSACTION)

COMMIT : 트랜잭션 성공

ROLLBACK : 트랜잭션 비정상 종료로 연산을 다시 하거나 연산 취소

 

사용자 정의 함수

사용자 정의 함수 : 프로시저와동일하고 반환에서의 부분만 프로시저와 다르다, 종료시 단일값을 반환

 

-선언부

-시작/종료부

-제어부

-SQL

-예외부

-반환부

 

트리거 : 삽입, 삭제, 수정등(DML)의 데이터변경 이벤트가 발생하면 DBMS에서 자동 실행 

트리거 목적 : 무결성 유지, 로그 메시지 출력 등과 작업 자동 실행

트리거 종류

-행 트리거 : 변화가 생길때마다 실행

-문장 트리거 : 단 한번 실행

 

트리구 구성

-선언부

-이벤트부

-시작/종료부

-제어부

-SQL

-예외부

 

트리거 인벤트 순서

-BEFORE : DML 수행 전에 트리거 실행

-AFTER  : DML 성공 실행 후 트리거 실행

 

응용 SQL 작성

데이터 분석 함수 : 총합, 평균 등 데이터 분석을 위해서는 복수행 기준 데이터를 모아 처리

특성 

-복수행을 그룹별로 모아놓고 그룹당 단일 계산 결과 반환

-GROUP BY 구문을 활용하여 복수행 그룹핑

-SELECT, HAVING, ORDER BY 구문에 활용

 

데이터 분석 함수의 종류

-집계 함수 : 전체 행으로부터 하나의 결과값 반환

-그룹 함수 : 컬럼 값에 따라 그룹화하여 중간 합계 분석 데이터 산출

-윈도 함수 : 데이터베이스를 사용한 온라인 분석 처리

 

집계 함수

-GROUP BY 구문

-HAVING 구문

 

집계 함수 종류

-COUNT : 줄의 수

-SUM : 컬럼 합계

-AVG : 컬럼 평균

-MAX : 컬럼 최대값

-MIN : 컬럼 최솟값

-STDDEV : 컬럼간 표준편차

-VARIAN : 컬럼간의 분산

 

그룹함수

-ROLLUP 함수 : 지정 컬럼보다 하나 더 큰 레벨만큼 중간 집계, 소계 등 중간 집계 값을 산출

-CUBE 함수 : 결합 가능한 모든 값에 다차원 집계

-GROUPPING SET 함수 : 컬럼 순서와 무관한 결과를 얻을 수 있는 그룹 함수

 

윈도 함수 = OLAP 함수

-순위 함수

-행순서 함수

-그룸 내 비율 함수

 

순위 함수

-RANK : 특정 항목에 대한 순위를 구하는 함수, 동일 순위의 레코드 존재 시 후순위는 넘어감

-DENSE_RANK : 레코드의 순위 계산, 동일 순위의 레코드 존재 시에도 후순위로 넘어가지 않음

-ROW_NUMBER : 레코드의 순위 계산, 동일 순위의 값이 존재해도 이와 무관하게 연속 번호 부여

 

행 순서 함수

-FIRST_VALUE : 파티션별 윈도우에서 가장 먼저 나오는 값을 찾음

-LAST_VALUE : 파티션별 윈도우에서 가장 늦게 나오는 값을 찾음

-LAG : 파티션별 윈도우에서 이전 로우의 값 반환

-LEAD : 파티션별 윈도우에서 이후 로우의 값 반환

 

그룹 내 비율 함수

-RATIO_TO_REPORT :  주어진 그룹에 대해 합을 기준으로 각 로우의 상대적 비율 반환

-PERCENT_RANK :  : 주어진 그룹에 대해 제일 먼저 나오는것을 0, 제일 늦게 나오는 것을 1로 하면 순서별 백분율

 

응용 시스템 DBMS 접속 기술

자바 데이터베이스 연결(JDBC)

-JDBC는 SQL을 사용하여 DBMS에 질의하고 데이터를 조작하는 API를 제공

 

MyBatis 

- SQL MAPPING 기반 오픈 소스 DBMS에 질의하기 위한 SQL 쿼리를 별도의 XML파일로 분리하고 Mapping 을 통해서 SQL을 실행

-MyBatis는 DBMS 의존도가 높고 SQL 질의언어를 사용하기 때문에 국내 실무 개발 환경에 맞아 많이 사용

-#{파라미터명} 으로 사용

장점

- 복잡한 JDBC 코드 단순화

-SQL을 거의 그대로 사용

-Spring 기반 프레임워크와 통합 기능 제공

-우수한 성능

-조건에 따라 SQL 구문 자체 변경 가능

 

데이터 제어어(DCL)

-GRANT : 데이터 베이스 권한 부여

-REVOKE : 데이터 베이스 권한 회수

GRANT 권한 ON 테이블 TO 사용자
[WITH 권한옵션];

REVOKE 권한 ON 테이블 FROM 사용자
[CASCADE CONSTRAINTS];