본문 바로가기

자격증/정보처리기사 - 필기

데이터베이스 구축 - SQL 활용

728x90

프로시저 : 호출을 통해 실행되어 미리 저장해 놓은 SQL 작업 수행

● 스토어드 프로시저라고도 불림  ● 재호출하여 사용 가능

< 프로시저 생성 >

[ 표기 형식 ]

[ 설명 ]

 OR REPLACE : 동일한 프로시저 이름이 이미 존재하는 경우, 기존의 프로시저를 대체할 수 있다.

 파라미터

- IN : 호출 프로그램이 프로시저에게 값 전달

- OUT : 프로시저가 호출 프로그램에게 값 반환

- INOUT : 호출 프로그램이 프로시저에게 값 전달, 프로시저 실행 후 호출 프로그램에 값 반환

< 프로시저 실행 >

[ 표기 형식 ]

[[ 예시 ]]

'사원번호' 32를 인수로 하여 생성된 emp_change_s 프로시저를 실행하시오

-> EXECUTE emp_change_s(32);

< 프로시저 제거 >

[ 표기 형식 ]

트리거 : DB 시스템에서 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL

● 목적 : 데이터 변경 및 무결성 유지, 로그 메시지 출력

● DCL을 사용 X, DCL이 포함된 프로시저나 함수를 호출하는 경우에도 오류 발생

< 트리거의 생성 >

[ 표기 형식 ]

[ 설명 ]

● 동작시기 옵션

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

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

● NEW / OLD( 지정된 테이블 이름 앞에는 콜론( : )이 들어간다. )

- NEW : 추가되거나 수정에 참여할 튜플들의 테이블

- OLD : 수정되거나 삭제 전 대상이 되는 튜플들의 테이블

< 트리거 제거 >

[ 표기 형식 ]

사용자 정의 함수 : 일련의 작업을 연속으로 처리, 종료 시 처리 결과를 단일값으로 반환

● DML문 호출에 의해 실행

● 출력 파라미터 X

● SELECT를 통한 조회만 가능

● 프로시저를 호출하여 사용 X

< 프로시저와 사용자 정의 함수 차이 >

구분 프로시저 사용자 정의 함수
반환 값 없거나 1개 이상 가능 1개
파라미터 입/출력 가능 입력만 가능
사용 가능 명령문 DML, DCL SELECT
호출 프로시저, 사용자 정의 함수 사용자 정의 함수
사용 방법 실행문 DML에 포함

< 사용자 정의 함수 생성 >

[[ 예시 ]]

● 'i_성별코드'를 입력받아 1이면 "남자"를, 2면 "여자"를 반환하는 사용자 정의 함수를 'Get_S_성별'이라는 이름으로 정의하시오

-> CREATE FUNCTION Get_S_성별( i_성별코드 IN INT )

    RETURN VARCHAR2

    IS

    BEGIN

      IF ( i_성별코드 = 1 ) THEN

              RETURN '남자';

      ELSE

              RETURN '여자';

      END IF;

END;

< 사용자 정의 함수 실행 >

[ 표기 형식 ]

< 사용자 정의 함수 제거 >

[ 표기 형식 ]

DBMS 접속 : 사용자가 데이터를 사용하기 위해 응용 시스템을 이용하여 DBMS에 접근

● 응용 시스템 : 사용자로부터 매개 변수 전달 받아 SQL 실행, DBMS로부터 전달받은 결과를 사용자에게 전달

< 웹 응용 시스템 구조 >

사용자 - 웹 서버 - WAS - DBMS

< DBMS 접속 기술 >

● DBMS에 접근하기 위해 사용하는 API, API의 사용을 편리하게 도와주는 프레임 워크

● JDBC

- Java 언어로 다양한 종류의 DB에 접속하고 SQL문을 수행할 때 사용되는 표준 API

- JDBC 클래스는 java.sql, javax.sql에 포함

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

● ODBC

- 개발 언어에 관계없이 사용

- DBMS 종류를 몰라도 가능

● MyBatis

- JDBC 코드를 단순화하여 사용

- SQL Mapping 기반 오픈 소스 접속 프레임워크

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

< 정적 SQL과 동적 SQL 차이 >

  정적 SQL 동적 SQL
SQL 구성 커서를 통한 정적 처리 문자열 변수에 담아 동적 처리
개발 패턴 커서의 범위 안에서 반복문 활용하여 SQL 작성 NVL 함수 없이 로직을 통해 SQL 작성
실행 속도 빠름 느림
사전 검사 가능 불가능

 

SQL 테스트

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

● 테스트 전 생성을 통해 구문 오류나 참조 오류의 존재 여부 확인

디버깅을 통해 로직 검증

< 단문 SQL 테스트 >

● 직접 실행하여 결과물 확인

● 실행 시 오류나 경고 발생 시 메시지를 참조하여 문제 해결

DESCRIBE : DDL로 작성된 테이블이나 뷰의 속성, 자료형 옵션 확인

- DESC [ 개체명 ];

● DML 변경한 데이터는 SELECT문으로 변경 여부 확인

- Oracle : SELECT * FROM DBA_ROLE_PRIVES WHERE GRANTEE = 사용자;

- MySQL : SHOW GRANTS FOR 사용자@호스트;

< 절차형 SQL 테스트 >

● 디버깅을 통해 기능의 적합성 여부 검증

● SHOW명령어를 통해 오류 내용 확인 및 문제 수정

● 변화를 줄 수 있는 SQL문은 주석으로 처리, 출력문을 이용하여 화면에 출력하여 확인

- Oracle 출력 형식 : DBMS_OUTPUT 패키지 이용

- MySQL 출력 형식 : SELECT 명령어 활용

 

ORM

● 객체와 데이터를 연결하는 기술

● 재사용 및 유지보수 용이

직관적이고 간단하게 데이터 조작

● 프레임워크가 자동으로 SQL을 작성 -> 의도대로 SQL이 작성되었는지 확인 필요