본문 바로가기
License/정보처리기사_실기

121-130

by jaunnnngs21 2022. 3. 23.

SEC 121) 'DML' - SELECT-1

20.5, 필기 20.8, 20.6

* 일반형식

SELECT [PREDICATE][테이블명.]속성명[AS별칭][,[테이블명.]속성명,...]

[,그룹함수(속성명)[AS별칭]]

[,Window함수 OVER(PARTITION BY 속성명1, 속성명2,...

ORDER BY 속성명3, 속성명4,...)]

FROM 테이블명[,테이블명,...]

[WHERE 조건]

[GROUP BY 속성명, 속성명, ...]

[HAVING 조건]

[ORDER BY 속성명 [ASC | DESC];

 

- SELECT

- PREDICATE: 검색할 튜플 수를 제한하는 명령어를 기술

DISTICT: 중복된 튜플이 있으면 그 중 첫 번째 한 개만 표시

- 속성명: 검색하여 불러올 속성() 또는 속성을 이용한 수식을 지정함

- AS: 속성이나 연산의 이름을 다른 이름으로 표시하기 위해 사용

- FROM: 검색할 데이터가 들어있는 테이블 이름을 기술

- WHERE: 검색할 조건을 기술

- ORDER BY: 데이터를 정렬하여 검색할 때 사용

- 속성명: 정렬의 기준이 되는 속성명을 기술함

- [ASC | DESC]: 정렬 방식으로, 'ASC'는 오름차순, 'DESC'는 내림차순, 생략하면 오름차순으로 지정

** 추가내용(조건연산자~복수테이블 검색)은 책 2p30~p42 참고

 

SEC 122) 'DML' - SELECT-2 (A)

* 일반형식

SELECT [PREDICATE][테이블명.]속성명[AS별칭][,[테이블명.]속성명,...]

[,그룹함수(속성명)[AS별칭]]

[,Window함수 OVER(PARTITION BY 속성명1, 속성명2,...

ORDER BY 속성명3, 속성명4,...)]

FROM 테이블명[,테이블명,...]

[WHERE 조건]

[GROUP BY 속성명, 속성명, ...]

[HAVING 조건]

[ORDER BY 속성명 [ASC | DESC];

 

- 그룹함수: GROUP BY절에 지정된 그룹별로 속성의 값을 집계할 함수를 기술

- WINDOW 함수: GROUP BY절을 이용하지 않고 속정의 값을 집계할 함수를 기술

- PARTITION BY: WINDOW 함수의 적용범위가 될 속성을 지정

- ORDER BY: PARTITION 안에서 정렬기준으로 사용할 속성을 지정함

- GROUP BY : 특정 속성을 기준으로 그룹화하여 검색할 때 사용. 일반적으로 GROUP BY절은 그룹 함수와 함께 사용됨

- HAVING: GROUP BY와 함께 사용되며, 그룹에 대한 조건을 지정

 

필기 20.8

* 그룹함수

- 그룹 함수는 GROUP BY 절에 지정된 그룹별로 속성의 값을 집계할 때 사용됨

함수 기능
COUNT(속성명) 그룹별 튜플 수를 구하는 함수
SUM(속성명) 그룹별 합계를 구하는 함수
AVG(속성명) 그룹별 평균을 구하는 함수
MAX(속성명) 그룹별 최대값을 구하는 함수
MIN(속성명) 그룹별 최소값을 구하는 함수
STDDEV(속성명) 그룹별 표준편차를 구하는 함수
VARIANCE(속성명) 그룹별 분산을 구하는 함수
ROLLUP(속성명, 속성명, ...) 인수로 주어진 속성을 대상으로 그룹별 소계를 구하는 함수
속성의 개수가 n개이면, n+1 레벨까지, 하위레벨에서 상위레벨순으로 데이터 집계
CUBE(속성명, 속성명, ...) ROLLUP과 유사한 형태, CUBE는 인수로 주어진 속성을 대상으로 모든 조합의 그룹별 소계를 구함
속성의 개수가 n개이면, 레벨까지, 상위레벨에서 하위레벨 순으로 데이터 집계

 

* WINDOW 함수

- WINDOWS 함수는 GROUP BY절을 이용하지 않고 함수의 인수로 지정한 속성의 값을 집계

- 함수의 인수로 지정한 속성이 집계할 범위가 되는데, 이를 윈도우(WINDOW)라고 부름

>> WINDOW 함수

- ROW_NUMBER(): 윈도우별로 각 레코드에 대한 일련번호를 반환

- RANK(): 윈도우별로 순위를 반환, 공동 순위를 반영

- DENSE_RANK(): 윈도우별로 순위를 반환, 공동 순위 무시하고 순위를 부여

 

* WINDOW 함수 이용 검색

- GROUP BY 절을 이용하지 않고 함수의 인수로 지정한 속성을 범위로 하여 속성의 값을 집계

 

** 추가내용(p44-p56)은 책을 참고해 주세요.

 

SEC 123) 'DML' - JOIN (C)

* JOIN

- JOIN2개의 릴레이션에서 연관된 튜플을 결합해, 하나의 새로운 릴레이션을 반환

- JOIN은 일반적으로 FROM절에 기술, 릴레이션이 사용되는 곳 어디에나 사용가능

- JOIN은 크게 INNER JOINOUTER JOIN으로 구분

 

* INNER JOIN

- INNER JOIN은 일반적으로 EQUI JOINNON-EQUI JOIN으로 구분

- 조건이 없는 INNER JOIN을 수행하면 CROSS JOIN과 동일한 결과를 얻을 수 있음

>> EQUI JOIN

- EQUI JOINJOIN 대상 테이블에서 공통 속성을 기준으로 ‘=’(equal) 비교에 의해 같은 값을 가지는 행을 연결해 결과를 생성하는 JOIN 방법

- EQUI JOIN에서 JOIN 조건이 ‘=’일 때 동일한 속성이 두 번 나타나게 되는데, 이 중 중복된 속성을 제거하여 같은 속성을 한 번만 표기하는 방법을 NATURAL JOIN이라고 한다.

- EQUI JOIN에서 연결고리가 되는 공통 속성을 JOIN속성이라고 한다.

- WHERE 절을 이용한 EQUI JOIN의 표기형식

>> SELECT [테이블명1,]속성명,[테이블명2,]속성명, ...

FROM 테이블명1, 테이블명2, ...

WHERE 테이블명1, 속성명= 테이블명2, 속성명;

 

- NATURAL JOIN절을 이용한 EQUI JOIN의 표기 형식

>> SELECT [테이블명1,]속성명, [테이블명2,]속성명, ...

FROM 테이블명1 NATURAL JOIN 테이블명2;

 

>> NON-EQUI JOIN

- NON-EQUI JOIN은 조건에 ‘=’ 조건이 아닌 나머지 비교 연산자(>, <, <>, >=,<= 연산자를 사용하는 JOIN 방법)

** 표기 형식

SELECT [테이블명1,]속성명, [테이블명2,]속성명, ...

FROM 테이블명1, 테이블명2, ...

WHERE (NON-EQUI JOIN 조건);

 

* OUTER JOIN

- OUTER JOIN은 릴레이션에서 JOIN 조건에 만족하지 않는 튜플도 결과로 출력하기 위한 JOIN 방법으로, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN

 

>> LEFT OUTER JOIN: INNER JOIN의 결과를 구한 후, 우측 항 릴레이션의 어떤 튜플과도 맞지 않는 좌측 항의 릴레이션에 있는 튜플들에 NULL값을 붙여서 INNER JOIN의 결과에 추가

** 표기 형식

- SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...

FROM 테이블명1 LEFT OUTER JOIN 테이블명2

ON 테이블명1.속성명= 테이블명2.속성명;

- SELECT[테이블명1.]속성명, [테이블명2.]속성명, ...

FROM 테이블명1, 테이블명2

WHERE 테이블명1.속성명 = 테이블명2.속성명(+);

 

>> RIGHT OUTER JOIN: INNER JOIN의 결과를 구한 후, 좌측 항 릴레이션의 어떤 튜플과도 맞지 않는 우측 항의 릴레이션에 있는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과에 추가

** 표기 형식

- SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...

FROM 테이블명1 LEFT OUTER JOIN 테이블명2

ON 테이블명1.속성명= 테이블명2.속성명;

- SELECT[테이블명1.]속성명, [테이블명2.]속성명, ...

FROM 테이블명1, 테이블명2

WHERE 테이블명1.속성명(+) = 테이블명2.속성명;

 

>> FULL OUTER JOIN

- LEFT OUTER JOINRIGHT OUTER JOIN을 합쳐놓은 것

- INNER JOIN의 결과를 구한 후, 좌측 항의 릴레이션의 튜플들에 대해 우측 항의 릴레이션의 어떤 튜플과도 맞지 않는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과에 추가. 그리고 유사하게 우측 항의 릴레이션의 튜플들에 대해 좌측항의 릴레이션의 어떤 튜플과도 맞지 않는 튜플들에 NULL값을 붙여 INNER JOIN의 결과에 추가

** 표기형식

- SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...

FROM 테이블명1 FULL OUTER JOIN 테이블명2

ON 테이블명1.속성명= 테이블명2.속성명;

 

SEC 124) 프로시저(Procedure) (B)

* 프로시저(Procedure)

- 프로시저는 SQL을 사용해 작성한 일련의 작업을 저장해두고 호출을 통해 원할 때마다 저장한 작업을 수행하도록 하는 절차형 SQL

- 데이터베이스에 저장되어 수행되기 때문에 스토어드(Stored) 프로시저라고도 불림

- 시스템의 일일 마감 작업, 일괄(Batch) 작업 등에 주로 사용됨

 

* 프로시저의 구성도

데이터 =>

프로시저  
DECLARE(필수)
BEGIN(필수)
- CONTROL
- SQL
- EXCEPTION
- TRANSACTION
END(필수)

=> 결과

 

- DECLARE: 프로시저의 명칭, 변수, 인수, 데이터 타입을 정의하는 선언부

- BEGIN/ END: 프로시저의 시작과 종료를 의미

- CONTROL: 조건문 또는 반복문이 삽입되어 순차적으로 처리

- SQL : DML,DCL 이 삽입되어 데이터 관리를 위한 조회, 추가, 수정, 삭제 작업을 수행

- EXCEPTION: BEGIN~END 안의 구문 실행 시 예외가 발생하면 이를 처리하는 방법을 정의

- TRANSACTION: 수행된 데이터 작업들을 DB에 적용할지 취소할지를 결정하는 처리부

 

* 프로시저 생성

- 프로시저를 생성하기 위해서는 CREATE PROCEDURE 명령어를 사용

** 표기형식

CREATE [OR REPLACE] PROCEDURE 프로시저명(파라미터)

[지역변수 선언]

BEGIN

프로시저 BODY;

END;

 

- OR REPLACE: 선택적인(Optional)예약어, 이 예약어를 사용하면 동일한 프로시저 이름이 이미 존재하는 경우, 기존의 프로시저를 대체할 수 있음

- 프로시저명: 생성하려는 프로시저의 이름을 지정

- 파라미터: 프로시저 파라미터로는 다음과 같은 것들이 올 수 있음

- IN: 호출 프로그램이 프로시저에게 값을 전달할 때 지정

- OUT: 프로시저가 호출 프로그램에게 값을 전달할 때 지정

- INOUT: 호출 프로그램이 프로시저에게 값을 전달하고, 프로시저 실행 후 호출 프로그램에 값을 반환할 때 지정

- 매개변수명: 호출 프로그램으로부터 전달받은 값을 저장할 변수의 이름을 지정

- 자료형: 변수의 자료형을 지정함

* 프로시저 BODY

- 프로시저의 코드를 기록하는 부분

- BEGIN에서 시작하여 END로 끝나며, BEGINEND 사이에는 적어도 하나의 SQL문이 있어야함

 

* 프로시저 실행

- 프로시저를 실행하기 위해서는 EXECUTE 명령어 또는 CALL 명령어를 사용해, EXECUTE명령어를 줄여서 EXEC로 사용하기도 함

**표기형식

EXECUTE 프로시저명;

EXEC 프로시저명;

CALL 프로시저명;

 

* 프로시저 제거

- 프로시저를 제거하기 위해서는 DROP PROCEDURE 명령어를 사용

** 표기형식

DROP PROCEDURE 프로시저명;

EX) 위에서 생성된 프로시저 emp_change_s를 제거하시오

DROP PROCEDURE emp_change_s;

 

SEC 125) 트리거(Trigger)

* 트리거(Trigger)

- 트리거는 데이터베이스 시스템에서 데이터의 삽입(Insert), 갱신(Update), 삭제(Delete) 등의 이벤트(Event)가 발생할 때 관련 작업이 자동으로 수행되게 하는 절차형 SQL

- 트리거는 데이터베이스에 저장되며, 데이터 변경 및 무결성 유지, 로그 메시지 출력 등의 목적으로 사용됨

- 트리거의 구문에는 DCL(데이터 제어어)을 사용할 수 없으며, DCL이 포함된 프로시저나 함수를 호출하는 경우에 오류가 발생

 

* 트리거 구성도

이벤트 =>

트리거
DECLARE(필수)
EVENT(필수)
BEGIN(필수)
- CONTROL
- SQL
- EXCEPTION
END(필수)

=> 데이터 변경

- DECLARE: 트리거의 명칭, 변수 및 상수, 데이터 타입을 정의하는 선언부

- EVENT: 트리거가 실행되는 조건을 명시

- BEGIN/ END: 트리거의 시작과 종료를 의미

- CONTROL: 조건문 또는 반복문이 삽입되어 순차적으로 처리

- SQL: DML문이 삽입되어 데이터 관리를 위한 조회, 추가, 수정, 삭제 작업을 수행

- EXCEPTION: BEGIN~END 안의 구문 실행시 예외가 발생하면 이를 처리하는 방법을 정의

 

* 트리거의 생성

- 트리거를 생성하기 위해서는 CREATE TRIGGER 명령어를 사용

** 표기 형식

CREATE [OR REPLACE] TRIGGER 트리거명 [동작시기 옵션][동작옵션] ON 테이블명

REFERENCING [NEW | OLD] AS 테이블명

FOR EACH ROW

[WHEN 조건식]

BEGIN

트리거 BODY;

END;

 

- OR REPLACE: 선택적인(Optional) 예약어. 이 예약어를 사용하면 동일한 트리거 이름이 이미 존재하는 경우, 기존 트리거를 대체할 수 있음.

- 동작시기 옵션: 트리거가 실행될 때를 지정

- AFTER: 테이블이 변경된 후에 트리거가 실행

- BEFORE: 테이블이 변경되기 전에 트리거가 실행

- 동작 옵션: 트리거가 실행되게 할 작업의 종류를 지정

- INSERT: 테이블에 새로운 튜플을 삽입할 때 트리거가 실행

- DELETE: 테이블의 튜플을 삭제할 때 트리거가 실행

- UPDATE: 테이블의 튜플을 수정할 때 트리거가 실행

 

- NEW | OLD: 트리거가 적용될 테이블의 별칭을 지정

- NEW: 추가되거나 수정에 참여할 튜플들의 집합(테이블)을 의미

- OLD: 수정되거나 삭제전 대상이 되는 튜플들의 집합(테이블)을 의미

- FOR EACH ROW: 각 튜플마다 트리거를 적용한다는 의미

- WHEN 조건식: 선택적인(Optional) 예약어. 트리거를 적용할 튜플의 조건을 지정

- 트리거 BODY

- 트리거의 본문 코드를 입력하는 부분

- BEGIN으로 시작해서 END로 끝나는데, 적어도 하나 이상의SQL문이 있어야함. 안그러면 오류남

 

* 트리거의 제거

- 트리거를 제거하기 위해서는 DROP TRIGGER 명령어를 사용

** 표기형식

DROP TRIGGER 트리거명;

 

SEC 126) 사용자 정의 함수(B)

* 사용자 정의 함수

- 프로시저와 유사하게 SQL을 사용해 일련의 작업을 연속적으로 처리, 종료시 처리결과로 단일값만을 반환하는 절차형 SQL

- 데이터베이스에 저장되어 SELECT, INSERT, DELETE, UPDATE DML문의 호출에 의해 실행

- 예약어 RETURN을 통해 단일값을 반환하며, 출력 파라미터가 없음

 

* 사용자 정의 함수의 구성도

데이터 =>

사용자 정의 함수
DECLARE(필수)
BEGIN(필수)
- CONTROL
- SQL
- EXCEPTION
- RETURN(필수)
END(필수)

=> 반환

 

- DECLARE: 사용자 정의 함수의 명칭, 변수, 인수, 데이터 타입의 정의하는 선언부

- BEGIN/END: 사용자 정의 함수의 시작과 종료를 의미

- CONTROL: 조건문 도는 반목문이 삽입되어 순차적으로 처리

- SQL: SELECT문이 삽입되어 데이터 조회작업을 수행

- EXCEPTION: BEGIN~END 안의 구문 실행시 예외가 발생하면 이를 처리하는 방법을 정의

- RETURN: 호출 프로그램에 반환할 값이나 변수를 정의

 

* 사용자 정의 함수 생성

- 사용자 정의 함수를 생성하기 위해 CREATE FUNCTION 명령어를 사용

** 표기형식

CREATE [OR REPLACE] FUNCTION 사용자 정의 함수명(파라미터)

[지역변수 선언]

BEGIN

사용자 정의 함수 BODY;

RETURN 반환값;

END;

 

- OR REPLACE: 선택적인(Optional)예약어. 이 예약어를 사용하면 동일한 사용자 정의 함수의 이름이 이미 존재하는 경우, 기존의 사용자 정의 함수를 대체할 수 있음

- 파라미터: 사용자 정의 함수의 파라미터로는 다음과 같은 것들이 올 수 있다.

- IN: 호출 프로그램이 사용자 정의 함수에게 값을 전달할 때 지정

- 매개변수명: 호출 프로그램으로부터 전달받은 값을 저장할 변수의 이름을 지정

- 자료형: 변수의 자료형을 지정

- 사용자 정의 함수 BODY

- 사용자 정의 함수의 코드를 기록하는 부분

- BEGIN에서 시작해 END로 끝나며, 사이에 적어도 하나의 SQL문이 있어야함

- RETURN 반환값: 반환할 값이나 반환할 값이 저장된 변수를 호출 프로그램으로 돌려줌

 

* 사용자 정의 함수 실행

- 사용자 정의 함수는 DML에서 속성명이나 값이 놓일 자리를 대체해 사용됨

** 표기형식

SELECT 사용자 정의 함수명 FROM 테이블명;

INSERT INTO 테이블명(속성명) VALUES(사용자 정의 함수명);

DELETE FROM 테이블 WHERE 속성명 = 사용자 정의 함수명;

UPDATE 테이블명 SET 속성명 = 사용자 정의 함수명;

 

* 사용자 정의 함수 제거

- 사용자 정의 함수를 제거하기 위해서 DROP FUNCTION 명령어를 사용

** 표기형식

DROP FUNCTION 사용자 정의 함수명;

 

SEC 127) 제어문(A)

* 제어문

- 제어문은 위에서 아래로 차례대로 실행되는 절차형 SQL의 진행 순서를 변경하기 위해 사용하는 명령문

- 제어문에는 IF, LOOP 등이 있다.

 

* IF

- IF문은 조건에 따라 실행할 문장을 달리하는 제어문

 

* LOOP

- LOOP문은 조건에 따라 실행할 문장을 반복 수행하는 제어문

 

SEC 128) 커서(Cursor) (A)

* 커서(Cursor)

- 커서는 쿼리문의 처리 결과가 저장되어 있는 메모리 공간을 가리키는 포인터(Pointer)이다.

- 커서의 수행은 열기(Open), 패치(Fetch), 닫기(Close)의 세 단계로 진행

 

* 묵시적 커서(Implicit Cursor)

- 묵시적 커서는 DBMS에 의해 내부에서 자동으로 생성되어 사용되는 커서

- 커서의 속성을 조회하여 사용된 쿼리 정보를 열람하는 것이 가능

- 수행된 쿼리문의 정상적인 수행 여부를 확인하기 위해 사용

>> 속성의 종류

- SQL%FOUND - 쿼리 수행의 결과로 패치(Fetch)된 튜플 수가 1개 이상이면 TRUE

- SQL%NOTFOUND - 쿼리 수행의 결과로 패치(Fetch)된 튜플 수가 0개이면 TRUE

- SQL%ROWCOUNT - 쿼리 수행의 결과로 패치(Fetch)된 튜플 수를 반환

- SQL%ISOPEN - 커서가 열린(Open)상태이면 TRUE

- 묵시적 커서는 자동으로 생성된 후 자동으로 닫히기 때문에 항상 FALSE

 

* 명시적 커서(Explicit Cursor)

- 명시적 커서는 사용자가 직접 정의해서 사용하는 커서

- 쿼리문의 결과를 저장하여 사용함으로써 동일한 쿼리가 반복 수행되어 데이터베이스 자원이 낭비되는 것을 방지

- 커서는 기본적으로 열기(Open)-패치(Fetch)-닫기(Close)’ 순으로 이루어지며, 명시적 커서를 사용하기 위해서는 열기 (Open)단계 전에 선언(Declare)해야함

 

SEC 129) DBMS 접속(Connection)

* DBMS 접속

- DBMS 접속은 사용자가 데이터를 사용하기 위해 응용 시스템을 이용해 DBMS에 접근하는 것을 의미

- 응용 시스템은 사용자로부터 매개변수를 전달받아 SQL을 실행하고 DBMS로부터 전달받은 결과를 사용자에게 전달하는 매개체 역할을 수행

- 인터넷을 통해 구동되는 웹 응용 프로그램은 웹 응용 시스템을 통해 DBMS에 접근

- 웹 응용 시스템은 웹 서버와 웹 애플리케이션 서버(WAS)로 구성

 

* DBMS 접속 기술

- DBMS 접속 기술은 DBMS에 접근하기 위해 사용하는 API 또는 API의 사용을 편리하게 도와주는 프레임워크 등을 의미

>> DBMS 접속 기술의 종류

- JDBC(Java DataBase Connectivity)

- Java 언어로 다양한 종류의 데이터베이스에 접속할 때 사용하는 표준 API

- 19972월 썬 마이크로시스템에서 출시

- 접속하려는 DBMS에 대한 드라이버가 필요

- ODBC(Open DataBase Connectivity)

- 개발 언어에 관계없이 데이터베이스에 접근하기 위한 표준 개방형 API

- 19929월 마이크로소프트에서 출시

- 접속하려는 DBMS의 인터페이스에 관계없이 ODBC 문장을 사용해 접속이 가능함

- MyBatis

- JDBC 코드를 단순화하여 사용할 수 있는 SQL Mapping 기반 오픈 소스 접속 프레임워크

- SQL 문장을 분리하여 XML 파일을 만들고, Mapping을 통해 SQL을 실행함

 

* 동적 SQL(Dynamic SQL)

- 동적 SQL은 다양한 조건에 따라 SQL 구문을 동적으로 변경해 처리할 수 있는 SQL 처리방식

- 동적 SQL은 사용자로부터 SQL문의 일부 또는 전부를 입력받아 실행할 수 있음

- 동적 SQL은 응용 프로그램 수행 시 SQL이 변형될 수 있으므로 프리컴파일 할 때 구문분석, 접근 권한 확인 등을 할 수 없음

- 동적 SQL은 정적 SQL에 비해 속도가 느리지만, 상황에 따라 다양한 조건을 첨가하는 등 유연한 개발이 가능함.

 

SEC 130) SQL 테스트 (B)

* SQL 테스트

- SQL 테스트는 SQL이 작성 의도에 맞게 원하는 기능을 수행하는지 검증하는 과정.

- 단문 SQLSQL코드를 직접 실행한 후 결과를 확인하는 것으로, 간단히 테스트가 가능

- 절차형 SQL은 테스트 전에 생성을 통해 구문 오류(Syntax Error)나 참조요류의 존재 여부를 확인함

- 정상적으로 생성된 절차형 SQL은 디버깅을 통해 로직을 검증, 결과를 통해 최종적으로 확인

 

* 단문 SQL테스트

- 단문 SQL 테스트는 DDL, DML, DCL 이 포함되어 있는 SQLTCL을 테스트하는 것으로, 직접 실행하여 결과물을 확인

- DDL로 작성된 개체는 DESCRIBE 명령어를 이용해 속성, 자료형, 옵션들을 확인할 수 있음

- DESC[개체명];

- DML로 변경한 데이터는 SELECT문으로 데이터의 정상적인 변경 여부를 확인할 수 있음

- DCL로 설정된 사용자 권한은 사용자 권한 정보가 저장된 테이블을 조회하여 확인할 수 있음

 

* 절차형 SQL테스트

- 프로시저, 사용자 정의 함수, 트리거 등의 절차형 SQL은 디버깅을 통해 기능의 적합성 여부를 검증하고, 실행을 통해 결과를 확인하는 테스트를 수행

- 많은 코드로 구성된 절차형 SQL의 특성상 오류 및 경고 메시지가 상세히 출력 되지 않으므로 SHOW 명령어를 통해 오류내용을 확인하고 문제를 수정함.

- 형식: SHOW ERRORS;

- 데이터베이스에 변화를 줄 수 있는 SQL문은 주석으로 처리하고, 출력문을 이용해 화면에 출력하여 확인함

- 디버깅이 완료되면 출력문을 삭제하고, 주석 기호를 삭제한 후 절차형 SQL을 실행하여 결과를 검토함.

 

 

'License > 정보처리기사_실기' 카테고리의 다른 글

141-150  (0) 2022.03.25
131-140  (0) 2022.03.23
111-120  (0) 2022.03.21
106-110  (0) 2022.03.18
61-63  (0) 2022.03.18