1. 절차형 SQL 작성하기
절차형 SQL
-
개요 : 절차 지향적인 프로그램이 가능하며, 분기, 반복 등의 제어를 활용하여 다양한 기능을 수행하는 저장 모듈을 생성
-
특징
-
DBMS 엔진에서 직접 실행
-
Block화된 구조로 기능별 모듈화가 가능
-
조건문, 반복문 등 연속적인 작업 처리 가능
-
DBMS 내부에서 처리하기 때문에 Input/Output Packet이 적음
-
프로시저(Procedure)
-
개요 : 절차형 SQL을 활용하여 특정 기능을 수행하는 트랜잭션 언어, 호출을 통해 미리 저장해 놓은 SQL 작업을 수행
-
구성
-
프로시저 예시
#프로시저 생성
CREATE OR REPLACE PROCEDUER emp_change_s(i_사원번호 IN INT)
IS /*변수를 사용하지 않으므로 예약어만 입력*/
BEGIN
UPDATE 급여 SET 지급방식 = 'S' WHERE 사원번호 = i_사원번호;
EXCEPTION
WHEN PROGRAM_ERROR THEN
ROLLBACK;
COMMIT;
END;
#프로시저 호출
EXCUTE emp_change_s(32);
#프로시저 제거
DROP PROCEDURE emp_change_s;
사용자 정의 함수(Function)
-
개요 : 프로시저와 유사하게 절차형 SQL을 활용하여 일련의 작업을 처리하고 결과를 단일값으로 반환하는 절차형 SQL
-
프로시저 vs 사용자 정의 함수
구분 | 프로시저 | 사용자 정의 함수 |
반환값 | 없거나 1개 이상 | 1개 |
파라미터 | 입·출력 가능 | 입력만 가능 |
사용 가능 명령문 | DML, DCL | SELECT |
-
구성
-
사용자 정의 함수 예시
![]() |
![]() |
#사용자 정의 함수 생성
CREATE FUNCTION Get_S_성별(i_성별코드 IN INT)
RETURN VARCHAR2
IS
BEGIN
IF i_성별코드 = 1 THEN
RETURN '남자';
ELSE
RETUEN '여자';
END IF;
END;
#사용자 정의 함수 호출
SELECT 이름, Get_S_성별(성별코드) FROM 사원;
#사용자 정의 함수 제거
DROP FUNCTION Get_S_성별
트리거(Trigger)
-
개요 : 데이터베이스 시스템에서 삽입, 삭제, 갱신 등의 이벤트가 발생할 때마다 자동으로 수행되는 절차지향 SQL
-
구성
-
트리거 예시
#트리거 생성
CREATE TRIGGER 학년정보_tri BEFORE INSERT ON 학생
REFERENCING NEW AS new_table
FOR EACH ROW /*각 튜플마다 적용*/
WHEN(new_table.학년 IS NULL)
BEGIN
:new_table.학년 := '신입생';
/*REFERENCING된 테이블 앞에는 콜론(:)을 붙임*/
/*A := B 는 A에 B를 치완하라는 의미*/
END;
#트리거 제거
DROP TRIGGER 학년정보_tri;
2. 응용 SQL 작성하기
집계 함수(Aggergate Function)
-
개요 : 여러행 또는 테이블 전체 행으로부터 하나의 결과값을 반환하는 함수, 그룹 함수나 윈도우 함수에도 적용 가능
-
분류
집계 함수 | 설명 |
COUNT(속성명) | 튜플의 수를 구하는 함수 |
SUM(속성명) | 합계를 구하는 함수 |
AVG(속성명) | 평균을 구하는 함수 |
MAX(속성명) | 최대값을 구하는 함수 |
MIN(속성명) | 최소값을 구하는 함수 |
STDDEV(속성명) | 표준편차를 구하는 함수 |
VARIAN(속성명) | 분산을 구하는 함수 |
그룹 함수(Group Function)
-
개요 : 집계 함수와 유사한 개념, 그룹별로 속성의 값을 집계
-
분류
그룹 함수 | 설명 |
ROLLUP(속성명, 속성명,···) | 인수로 주어진 속성을 대상으로 그룹별 소계를 구함 |
속성의 개수 n+1 레벨까지, 하위레벨에서 상위 레벨 순으로 데이터 집계 | |
CUBE(속성명, 속성명,···) | 인수로 주어진 속성을 대상으로 모든 조합의 그룹별 소계를 구함 |
속성의 개수 n²레벨까지 상위레벨에서 하위레벨 순으로 데이터 집계 |
-
일반 형식
SELECT [PREDICATE] 그룹함수(속성명) [AS 별칭]
FORM 테이블명
[WHERE 조건]
GROUP BY 속성명
[HAVING 조건]
윈도우 함수(Window Function)
-
개요 : GROUP BY절을 이용하지 않고 함수의 인수로 지정한 속성을 범위로 하여 속성의 값을 집계
-
윈도우(Window) : 함수의 인수로 지정한 속성, 대상 레코드의 범위
-
분류
윈도우 함수 | 설명 |
RANK() | 윈도우별로 순위를 반환, 공동 순위를 반영 |
DENSE_RANK() | 윈도우별로 순위를 반환, 공동 순위를 무시 |
ROW_NUMBER() | 윈도우별로 각 레코드에 대한 일련 번호를 반환 |
-
일반 형식
SELECT [PREDICATE] [테이블명.]속성명 [AS 별칭]
[, WINDOW함수 OVER (PARTITION BY 속성명 ORDER BY 속성명) [AS 별칭]]
FORM 테이블명
DBMS 접속
-
개요 : 사용자가 데이터를 사용하기 위해 응용 시스템을 이용하여 DBMS에 접근하는 것
-
구조
![]() |
사용자 : 웹 서버에 접속하여 데이터를 주고 받음 |
웹 서버 : 사용자의 대용량의 데이터 요청을 WAS에게 전달 |
WAS : 수신한 요청을 트랜잭션 언어로 변환하여 DBMS에 전달, DBMS로부터 데이터를 받아 요청한 웹 서버로 전달 |
-
DBMS 접속 기술
접속 기술 | 설명 |
JDBC (Java DataBase Connectivity) |
Java 언어로 다양한 종류의 데이터베이스에 접속하고 SQL문을 수행할 때 사용되는 표준 API |
ODBC (Open DataBase Connectivity) |
데이터베이스에 접근하기 위한 표준 개방형 API, 계발 언어에 관계없이 사용 가능 |
MyBatis | SQL Mapping 기반 오픈 소스 접속 프레임워크 |
'2020 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 프로그래밍 언어 활용(1/2) (0) | 2020.07.16 |
---|---|
[정보처리기사 실기] 소프트웨어 개발보안 구축 (0) | 2020.07.13 |
[정보처리기사 실기] 애플리케이션 테스트 관리 (0) | 2020.07.09 |
[정보처리기사 실기] 화면 설계 (0) | 2020.07.07 |
[정보처리기사 실기] 인터페이스 구현 (0) | 2020.07.07 |