자격증/sqld

[sqld 2장]PL/SQL 구문에서의 DML, DCL, DDL 사용법

딸기뚜왈기 2025. 3. 5. 18:17

PL/SQL에서 DDL(Data Definition Language), DML(Data Manipulation Language), **DCL(Data Control Language)**의 사용 예시

 

유형 주요 명령어 사용 예시
DDL (데이터 정의) CREATE, ALTER, DROP EXECUTE IMMEDIATE 'CREATE TABLE ...'
DML (데이터 조작) INSERT, UPDATE, DELETE, SELECT INTO INSERT INTO employees VALUES ...
DCL (데이터 제어) GRANT, REVOKE EXECUTE IMMEDIATE 'GRANT SELECT ON ...'

 

📌 PL/SQL 내에서의 사용 규칙

  1. DDL/DCL은 EXECUTE IMMEDIATE로 실행해야 함(BEGIN ... EXECUTE IMMEDIATE... END)
  2. DML은 PL/SQL 블록 내에서 바로 실행 가능 (BEGIN ... END)
  3. DML은 COMMIT 또는 ROLLBACK을 통해 명시적으로 트랜잭션 관리 필요 (BEGIN ... EXECUTE IMMEDIATE... END)

 

 

예시>

1. DDL (Data Definition Language) - 데이터 정의 언어

 

DDL은 테이블을 생성, 변경, 삭제하는 등의 데이터 구조를 정의하는 명령어입니다.
PL/SQL 블록 내에서는 EXECUTE IMMEDIATE를 사용하여 실행해야 합니다.

DDL 예시 (테이블 생성, 변경, 삭제)

BEGIN
    -- 테이블 생성
    EXECUTE IMMEDIATE 'CREATE TABLE employees (
        emp_id NUMBER PRIMARY KEY, 
        emp_name VARCHAR2(50),
        salary NUMBER(10,2)
    )';

    -- 테이블 변경 (컬럼 추가)
    EXECUTE IMMEDIATE 'ALTER TABLE employees ADD hire_date DATE';

    -- 테이블 삭제
    EXECUTE IMMEDIATE 'DROP TABLE employees';
END;
/

📌 주요 특징

  • CREATE TABLE, ALTER TABLE, DROP TABLE 등 DDL 명령어는 PL/SQL 내에서 직접 실행할 수 없고, EXECUTE IMMEDIATE를 사용해야 합니다.
  • EXECUTE IMMEDIATE는 동적 SQL을 실행하는 방법 중 하나입니다.

2. DML (Data Manipulation Language) - 데이터 조작 언어

 

DML은 데이터를 삽입, 조회, 수정, 삭제하는 명령어입니다.
PL/SQL 블록 내에서 직접 사용할 수 있으며, COMMIT 또는 ROLLBACK을 통해 변경 사항을 저장하거나 취소할 수 있습니다.

DML 예시 (INSERT, UPDATE, DELETE, SELECT)

DECLARE
    v_emp_name VARCHAR2(50);
    v_salary NUMBER(10,2);
BEGIN
    -- 데이터 삽입
    INSERT INTO employees (emp_id, emp_name, salary) VALUES (1, '홍길동', 5000);
    COMMIT;

    -- 데이터 수정
    UPDATE employees SET salary = 6000 WHERE emp_id = 1;
    COMMIT;

    -- 데이터 조회 (SELECT INTO)
    SELECT emp_name, salary INTO v_emp_name, v_salary FROM employees WHERE emp_id = 1;
    DBMS_OUTPUT.PUT_LINE('이름: ' || v_emp_name || ', 급여: ' || v_salary);

    -- 데이터 삭제
    DELETE FROM employees WHERE emp_id = 1;
    COMMIT;
END;
/

📌 주요 특징

  • INSERT, UPDATE, DELETE, SELECT INTO 등은 PL/SQL 블록 내에서 바로 실행 가능합니다.
  • SELECT INTO는 단일 행 조회 시 사용됩니다.
  • COMMIT을 사용하여 데이터 변경 사항을 영구 적용할 수 있습니다.
  • ROLLBACK을 사용하면 이전 상태로 되돌릴 수 있습니다.

3. DCL (Data Control Language) - 데이터 제어 언어

 

DCL은 사용자의 권한을 관리하는 명령어입니다.
PL/SQL 블록 내에서는 EXECUTE IMMEDIATE를 사용해야 합니다.

DCL 예시 (GRANT, REVOKE)

BEGIN
    -- 특정 사용자에게 테이블 조회 권한 부여
    EXECUTE IMMEDIATE 'GRANT SELECT ON employees TO user1';

    -- 특정 사용자의 권한 회수
    EXECUTE IMMEDIATE 'REVOKE SELECT ON employees FROM user1';
END;
/

📌 주요 특징

  • GRANT는 특정 사용자에게 권한을 부여합니다.
  • REVOKE는 특정 사용자의 권한을 회수합니다.
  • PL/SQL 블록 내에서 EXECUTE IMMEDIATE를 사용해야 합니다.