데이터입출력구현
- 응용소프트웨어 설계와 물리 데이터저장소 설계에 따라 데이터 저장소에 연결을 수행하는 프로시저를 작성
- 데이터 저장소로부터 데이터를 읽어오는 프로시저 작성
- 데이터 변경 내용 또는 신규 입력된 데이터를 데이터 저장소에 저장하는 프로시저를 작성
- 구현된 데이터 조작 프로시저를 테스트할 수 있는 테스트 케이스를 작성하고 단위 테스트를 수행하기 위한 테스트 조건을 명세화
SQL; Structured Query Language 개념
- 데이터 조작을 위해서 사용하는 특수 목적의 프로그래밍 언어
- 일정힌 데이터 집합으로부터 보다 쉽게 자료를 검색하고 입력, 수정, 삭제와 같은 조작을 할 수 있도록 고안된 언어
SQL 분류
1. DDL; Data Definition Language 데이터 정의어
- 데이터를 저장하는 테이블 등의 구조를 생성, 변경하기 위해 사용하는 명령어들
- 명령어 수행이 되면 이전 상태로 복귀할 수 없으므로 신중히 사용
- 명령어
- CREATE : 오브젝트 생성
- DROP : 오브젝트 삭제
- RENAME : 이름변경
- ALTER : 구조 변경
- TRUNCATE : 자름
2. DML; DATA Manipulation Language 데이터 조작어
- 데이터베이스에 있는 데이터를 변경하거나 검색하기 위해 사용하는 명령어
- 트랜잭션 제어어를 활용하여 실행전 상태로 복귀 가능한 명령어
- 명령어
- INSERT : 데이터 입력
- UPDATE : 수정
- DELETE : 삭제
3. DCL; Data Control Language 데이터 제어어
- 사용자별로 데이터베이스에 접근할 수 있는 권한을 부여하거나 회수하는 명령어들
- 명령어
- ROLE : 권한부여
- GRANT : 권한 및 롤 부여
- REVOKE : 권한 및 롤 부여
- COMMIT, ROLBACK : 트랜잭션 제어어
트랜잭션 제어어
- COMMIT
- 트랜잭션을 완료하여 데이터 변경 사항을 최종 반영
- COMMIT 이후에는 데이터에 대한 변경 사항이 물리적인 디스크에 반영
- COMMIT 이전 데이터는 복구할 수 없음
- 모든 사용자가 변경된 결과를 볼 수 있음
- ROLLBACK
- 데이터 변경 사항을 이전 상태로 되돌림
- ROLLBACK 된 DML 문장은 메모리 상의 버퍼에만 영향을 미치기 때문에 복구 가능
- SAVEPOINT
- 지정된 특정 시점까지 ROLLBACK 할 수 있는 명령어
1 | INSERT INTO 테이블; |
데이터 검색어 개념
- 데이터베이스 중 하나 또는 그 이상의 테이블에서 데이터를 추출하기 위한 명령
문법
1 | SELECT [DISTINCT]{*, column [alias], ...} |
- DISTINCT : 중복되는 행을 제거하는 옵션
-
- : 테이블의 모든 column을 출력
- alias : 해당 column에 대해서 다른 이름을 부여할 때 사용
- table_name : 질의 대상 테이블 명
- where : 조건을 만족하는 행들만 검색
- condition : column, 표현식, 상수 및 비교 연산자
- GROUP BY : 그룹핑하고자하는 단위 지정
- HAVING : 그룹핑한 결과 값에 대한 조건 검색
- ORDER BY : 질의 결과 정렬을 위한 옵션
PL/SQL 개요
- 프로그래밍 언어의 특성을 수용한 SQL의 확장 기능
- Oracle 기반의 모든 프로시저 작성에 사용됨
- 장점
- Compile 필요 없이 script 생성 및 변경 후 바로 실행 가능
- 프로그램 개발의 모듈화가 가능
- 식별자를 선언할 수 있음
- ERROR 처리가 가능
- 성능 향상을 기대
PL/SQL 구조
1 | DECLARE |
- 선언부 : 실행부에서 참조할 모든 변수, 상수, CURSOR, EXCEPTION을 선언
- 실행부 : BEGIN과 END 사이에 기술되는 영역으로 데이터베이스 데이터를 처리할 SQL문과 PL/SQL 블록을 기술
- 예외처리부 : 실행부에서 에러가 발생했을 때 수행될 문장을 기술
PL/SQL 처리 절차
- PL/SQL로 작성된 Block을 Oracle 서버로 보내면 PL/SQL 엔진이 SQL 문과 Non SQL 문을 구분
- Non SQL 문은 Client 환경에서, SQL문은 서버에서 실행
- 따라서 PL/SQL 을 사용하게 되면 서버의 작업 양을 줄이게 되므로 네트워크 부하를 감소시켜 수행성능을 증가
Stored Function
- 특정 작업을 수행할 수 있는 이름이 있는 PL/SQL 블록으로 구성이 프로시저와 유사하지만 IN 파라미타만 사용
- 보통 값을 계산하고 결과값을 반환하기 위해 반환될 값의 데이터 타입을 RETURN 문에 선언
Stored Procedure
- 특정 작업을 수행할 수 있는 이름이 있는 PL/SQL 블록으로 매개변수를 받을 수 있고 반복적으로 사용할 수 있는 Object
- 보통 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL 블록을 DB에 저장하기 위해 생성
Stored Package
- 오라클 데이터베이스에 저장되어 있는 서로 관련 있는 PL/SQL프로시저와 함수들의 집합
- 선언부와 본문 두 부분으로 구성
Trigger
- INSERT, UPDATE, DELETE 문이 수행될때 묵시적으로 수행되는 PROCEDURE
- Trigger는 TABLE 과는 별도로 DATABASE에 저장됨
데이터 조작 프로시저 개발
- 데이터 저장소에 연결
- 데이터 저장소를 정의
- 데이터 조작 프로시저를 작성
- 데이터 검색 프로시저를 작성
- 절차형 데이터 조작 프로시저를 작성