본문 바로가기
카테고리 없음

Oracle, SQL, PL/SQL은 어떻게 다른 걸까?

by 나홀로자취생 2025. 2. 24.
반응형

한 개발자가 회사에서 PL/SQL 프로그램을 이용해 Oracle SQL을 작성하고 있다고 합니다. 이 표현이 맞을까요? 이 질문은 세 가지 기술의 관계를 명확히 이해하지 못할 때 생기는 혼란에서 비롯됩니다. 이들이 어떻게 다르고, 어떤 상황에서 사용되는지 건물 관리 시스템에 비유해 풀어보겠습니다.


1. Oracle: 데이터의 ‘초고층 빌딩’을 짓는 건설사

Oracle데이터베이스 관리 시스템(DBMS)입니다. 마치 초고층 빌딩을 설계하고 유지하는 건설사처럼, 데이터를 체계적으로 저장·관리하는 플랫폼을 제공하죠. MySQL이나 SQL Server가 다른 건설사라면, Oracle은 고성능과 안정성으로 유명한 프리미엄 브랜드입니다.

  • 주요 역할:
    • 데이터 저장소 생성 및 관리
    • 보안, 백업, 복구 시스템 운영
    • 다수 사용자의 동시 접속 처리

“Oracle을 설치한다는 건 빈 땅에 데이터센터를 짓는 것과 같아요.”


2. SQL: 건물 관리자가 사용하는 ‘기본 도구 상자’

SQL(Structured Query Language)은 데이터베이스와 소통하기 위한 표준 언어입니다. 건물 관리자가 엘리베이터를 작동하거나 전등을 켜는 것처럼, SQL로 데이터를 조회·수정·삭제합니다.

  • 핵심 명령어:
    • SELECT: 데이터 조회 (창문 열기)
    • INSERT: 새 데이터 추가 (가구 배치)
    • UPDATE: 기존 데이터 수정 (벽색 변경)
    • DELETE: 데이터 삭제 (쓰레기 처리)

특징:

  • 모든 DBMS(Oracle, MySQL 등)에서 공통 사용
  • 선언적 언어: “무엇을” 원하는지만 지정 (예: “3층 회의실 예약 현황 보여줘”)

“SQL은 건물 관리 매뉴얼이에요. 모든 관리자가 따라야 하는 표준 절차죠.”


3. PL/SQL: Oracle 전용 ‘스마트 제어 시스템’

PL/SQL(Procedural Language/SQL)은 Oracle에서만 사용되는 확장 언어입니다. SQL에 변수, 조건문, 반복문 같은 프로그래밍 요소를 추가해, 복잡한 로직을 구현할 수 있게 합니다. 마치 건물의 자동화 시스템이 조명·난방·보안을 한 번에 제어하는 것처럼 말이죠.

  • 주요 기능:
    • 저장 프로시저: 자주 쓰는 작업을 묶어 한 번에 실행 (자동 청소 로봇 설정)
    • 트리거: 특정 이벤트 발생 시 작업 자동 실행 (화재 감지 시 스프링클러 가동)
    • 예외 처리: 오류 발생 시 대체 경로 제공 (엘리베이터 고장 시 비상계단 안내)

사용 예시:

DECLARE  
  v_salary NUMBER;  
BEGIN  
  SELECT salary INTO v_salary FROM employees WHERE id = 100;  
  IF v_salary < 5000 THEN  
    UPDATE employees SET salary = salary * 1.1 WHERE id = 100;  
  END IF;  
END;  

→ “ID 100 직원의 급여가 5000 미만이면 10% 인상하라”는 절차적 명령

“PL/SQL은 건물의 두뇌예요. 단순한 스위치 조작을 넘어 복잡한 의사결정을 하죠.”


4. “PL/SQL로 Oracle SQL을 짠다”는 말은 맞을까?

질문자의 표현은 절반은 맞고, 절반은 틀립니다.

  • 맞는 부분:
    PL/SQL 코드 내부에는 SQL 문이 포함됩니다. 예를 들어, 반복문 안에서 SELECT로 데이터를 가져오고 UPDATE로 수정하는 식이죠.
  • 틀린 부분:
    PL/SQL 자체가 SQL을 “짓는” 도구는 아닙니다. PL/SQL은 SQL을 포장한 상위 레이어로, SQL을 더 효율적으로 활용하기 위한 프로그래밍 프레임워크라고 보는 게 정확합니다.

올바른 표현:
“PL/SQL 프로그램에서 Oracle 데이터베이스에 접근하기 위해 SQL을 사용한다.”


5. 세 기술의 관계를 한 문장으로 정리하면?

  • Oracle은 데이터를 담는 저장소,
  • SQL은 저장소에 명령을 내리는 기본 언어,
  • PL/SQL은 Oracle 전용으로 SQL에 논리적 흐름을 더한 고급 도구입니다.

6. 실무에서 어떻게 구분해 사용할까?

🔍 SQL만 사용하는 경우
  • 단순 데이터 조회/수정
  • 일회성 작업 (예: 월간 리포트 생성)
    SELECT * FROM orders WHERE order_date >= '2023-01-01';  
🔧 PL/SQL이 필요한 경우
  • 다단계 트랜잭션: 계좌 이체 시 출금과 입금을 동시 처리
  • 대량 데이터 처리: 10만 행 데이터에 조건별로 다른 계산 적용
  • 예약 작업: 매일 자정에 로그 정리
CREATE OR REPLACE PROCEDURE raise_salary (dept_id NUMBER) IS  
BEGIN  
  FOR emp IN (SELECT * FROM employees WHERE department_id = dept_id)  
  LOOP  
    IF emp.salary < 6000 THEN  
      UPDATE employees SET salary = salary * 1.15 WHERE id = emp.id;  
    END IF;  
  END LOOP;  
  COMMIT;  
END;  

→ “특정 부서의 저소득 직원 급여 15% 인상” 프로시저


7. 흔한 오해 VS 사실

  • 오해: “PL/SQL은 SQL과 완전히 다른 언어다.”
    사실: PL/SQL은 SQL을 확장한 언어. 모든 PL/SQL 코드 안에 SQL 문 포함 가능
  • 오해: “Oracle만 SQL을 쓴다.”
    사실: SQL은 국제 표준. MySQL, PostgreSQL 등에서도 동일 문법 사용
  • 오해: “PL/SQL로만 복잡한 작업이 가능하다.”
    사실: 간단한 작업은 SQL만으로도 충분. PL/SQL은 로직이 필요할 때만 사용

결론: “도구는 용도에 맞게”

Oracle은 데이터의 창고, SQL은 창고 관리자의 기본 기술, PL/SQL은 창고 운영을 자동화하는 스마트 시스템입니다. 이들을 구분하는 핵심은 목적에 있습니다.

  • 초보자라면: SQL 마스터 → PL/SQL 탐색 → Oracle 환경 이해 순으로
  • 실무 개발자라면: PL/SQL로 반복 작업 자동화해 업무 효율 200% 올리기
  • 데이터 엔지니어라면: Oracle 아키텍처 이해로 성능 최적화에 집중

“기술 스택은 레고 블록과 같아요.
각 조각의 역할을 알면 무한한 조합이 가능해집니다.”

반응형