자격증/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 내에서의 사용 규칙
- DDL/DCL은 EXECUTE IMMEDIATE로 실행해야 함(BEGIN ... EXECUTE IMMEDIATE... END)
- DML은 PL/SQL 블록 내에서 바로 실행 가능 (BEGIN ... END)
- 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를 사용해야 합니다.