반응형
오라클 데이터베이스를 다룰 때, SQL과 PL/SQL은 핵심적인 역할을 합니다. SQL은 데이터베이스와 상호작용하는 기본 언어로 데이터를 조회하고 조작하는 데 사용됩니다. 반면, PL/SQL은 SQL의 기능을 확장하여 절차적 프로그래밍 기능을 제공하며, 복잡한 로직과 트랜잭션 관리를 가능하게 합니다. 이번 글에서는 SQL과 PL/SQL의 차이점을 이해하기 쉽게 정리하고, 각 언어의 특징과 활용 사례를 예제로 설명하겠습니다.
1. SQL: 관계형 데이터베이스와 상호작용
**SQL(Structured Query Language)**는 데이터베이스의 데이터를 정의, 조회, 수정, 삭제하는 표준 언어입니다.
- 주요 특징
- 선언형 언어로, 무엇을 해야 하는지를 지정.
- 단일 명령문으로 작업 수행.
- 데이터 정의(DDL), 데이터 조작(DML), 데이터 제어(DCL) 명령 포함.
- 데이터 중심적이며, 로직 처리를 직접적으로 지원하지 않음.
- 주요 SQL 명령
- DDL: CREATE, ALTER, DROP (데이터베이스 객체 정의).
- DML: SELECT, INSERT, UPDATE, DELETE (데이터 조작).
- DCL: GRANT, REVOKE (권한 관리).
- 예제
- -- employees 테이블에서 모든 데이터 조회 SELECT employee_id, first_name, salary FROM employees; -- employees 테이블에 새로운 직원 추가 INSERT INTO employees (employee_id, first_name, salary) VALUES (101, '홍길동', 5000);
2. PL/SQL: SQL의 확장 언어
**PL/SQL(Procedural Language/SQL)**는 오라클이 SQL의 기능을 확장하여 절차적 프로그래밍을 지원하는 언어입니다.
- 주요 특징
- 절차형 언어로, 어떻게 수행할지를 지정.
- SQL 문장을 포함하여 변수 선언, 조건문, 반복문 등을 사용 가능.
- 복잡한 비즈니스 로직과 트랜잭션 처리 지원.
- 에러 처리와 커서(Cursor)를 사용한 데이터 조작 가능.
- SQL과 PL/SQL의 명령을 결합하여 실행.
- 주요 PL/SQL 구조
- 블록 구조: 익명 블록, 저장 프로시저, 함수, 트리거로 구분.
- 제어 구조: 조건문(IF-THEN-ELSE), 반복문(FOR, WHILE).
- 예제
- DECLARE v_total_salary NUMBER; BEGIN -- employees 테이블의 총 급여 계산 SELECT SUM(salary) INTO v_total_salary FROM employees; -- 총 급여 출력 DBMS_OUTPUT.PUT_LINE('총 급여: ' || v_total_salary); END;
3. SQL과 PL/SQL의 주요 차이점
구분 SQL PL/SQL
언어 유형 | 선언형 언어 (데이터 중심) | 절차형 언어 (로직 중심) |
기능 | 데이터 조회 및 조작 | 복잡한 로직, 제어 구조, 트랜잭션 처리 지원 |
실행 단위 | 개별 명령 실행 | 전체 블록 실행 |
에러 처리 | 에러 처리 기능 없음 | 예외 처리(EXCEPTION) 블록 제공 |
사용 목적 | 간단한 데이터 조작 | 복잡한 로직과 트랜잭션 처리 |
성능 | 단순 작업에 효율적 | 복잡한 작업을 배치 처리하여 성능 최적화 가능 |
4. SQL과 PL/SQL의 조합 활용
PL/SQL은 SQL과 함께 사용되며, 데이터베이스 내에서 복잡한 작업을 수행할 때 강력한 도구로 활용됩니다.
(1) 데이터 조회 후 조건 처리
DECLARE
v_salary NUMBER;
BEGIN
-- 특정 직원의 급여 조회
SELECT salary INTO v_salary FROM employees WHERE employee_id = 101;
-- 조건에 따라 메시지 출력
IF v_salary > 10000 THEN
DBMS_OUTPUT.PUT_LINE('고액 연봉자입니다.');
ELSE
DBMS_OUTPUT.PUT_LINE('일반 연봉자입니다.');
END IF;
END;
(2) 반복문을 사용한 데이터 처리
DECLARE
CURSOR employee_cursor IS
SELECT employee_id, salary FROM employees;
v_employee_id employees.employee_id%TYPE;
v_salary employees.salary%TYPE;
BEGIN
OPEN employee_cursor;
LOOP
FETCH employee_cursor INTO v_employee_id, v_salary;
EXIT WHEN employee_cursor%NOTFOUND;
-- 조건에 따라 급여 업데이트
IF v_salary < 3000 THEN
UPDATE employees
SET salary = v_salary * 1.1
WHERE employee_id = v_employee_id;
END IF;
END LOOP;
CLOSE employee_cursor;
END;
5. 실제 업무에서의 SQL과 PL/SQL 사용 사례
- SQL 사용 사례
- 대량의 데이터 조회 및 간단한 변경 작업.
- 보고서 생성이나 데이터 필터링 작업.
SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id;
- PL/SQL 사용 사례
- 데이터 검증 및 복잡한 트랜잭션 처리.
- 트리거를 사용한 자동화 작업.
CREATE OR REPLACE TRIGGER update_salary_trigger AFTER UPDATE OF salary ON employees FOR EACH ROW BEGIN DBMS_OUTPUT.PUT_LINE('급여가 업데이트되었습니다: ' || :NEW.salary); END;
결론
SQL은 데이터를 정의하고 조작하는 데 초점을 맞춘 언어이며, PL/SQL은 이 SQL의 기능을 확장하여 데이터 처리 로직을 구현할 수 있는 강력한 도구입니다. 두 언어는 각각의 강점이 있으므로, 상황에 맞게 적절히 활용하면 데이터베이스와의 상호작용에서 최대의 효율을 낼 수 있습니다. SQL로 데이터를 다루는 기본기를 익힌 뒤, PL/SQL을 통해 복잡한 비즈니스 로직을 구현해 보세요!
반응형
'Database' 카테고리의 다른 글
오라클 DB에서 USER 및 SCHEMA의 개념 이해하기 (0) | 2024.12.03 |
---|---|
오라클 TRIGGER를 활용한 데이터 무결성 유지 (0) | 2024.12.03 |
오라클 패키지와 함수로 SQL 확장하기 (0) | 2024.12.03 |
오라클 데이터베이스 연결: 사용자 및 세션 이해하기 (0) | 2024.12.03 |
오라클 SYNONYM과 PUBLIC SYNONYM 사용법 (0) | 2024.12.03 |