SQL

절차적언어와 비절차적언어

temporubato108 2024. 11. 16. 14:22

절차적 언어와 비절차적 언어의 차이

SQL과 DBMS에서 사용하는 언어는 절차적 언어비절차적 언어로 나눌 수 있습니다. 이 두 언어는 데이터 처리 방식과 설계 철학에서 차이가 있으며, 각각의 장점과 용도가 다릅니다. 다음은 주요 특징과 예시입니다.


1. 비절차적 언어 (Non-Procedural Language)

정의

  • 사용자가 "무엇을 할 것인가?"만 기술하며, "어떻게 처리할지"는 DBMS가 자동으로 결정하는 언어입니다.
  • 데이터 검색과 조작에 필요한 결과를 간단히 표현할 수 있어 직관적이고 생산성이 높습니다.

특징

  1. 사용자는 데이터 처리 절차를 고려하지 않아도 됩니다.
  2. DBMS가 최적의 실행 계획(Execution Plan)을 자동으로 생성해 데이터를 처리합니다.
  3. 일반적으로 SQL과 같은 언어가 비절차적 언어에 해당됩니다.

예시

SELECT EMPNO, ENAME, SAL
FROM EMP
WHERE SAL > 3000;
  • 해석: "급여(SAL)가 3000 초과인 직원의 사번, 이름, 급여를 가져와라."
  • 사용자는 결과만 요청하고, DBMS는 인덱스 사용, 데이터 읽기 순서 등을 자동으로 처리합니다.

DML과의 관계

  • SQL의 데이터 조작 언어(DML) 명령어인 SELECT, INSERT, UPDATE, DELETE결과 중심의 요청만 작성하며, 비절차적 언어로 분류됩니다.

2. 절차적 언어 (Procedural Language)

정의

  • 사용자가 "무엇을 어떻게 처리할지"를 명시적으로 기술해야 하는 언어입니다.
  • 조건문, 반복문, 변수 선언 등 프로그래밍 언어의 절차적 구조를 지원합니다.

특징

  1. 사용자가 데이터 처리의 세부 절차를 명시해야 합니다.
  2. 데이터 조작뿐만 아니라 복잡한 비즈니스 로직 구현에 적합합니다.
  3. 대표적인 예로 PL/SQL (Oracle)T-SQL (SQL Server)이 있습니다.

예시 (Oracle의 PL/SQL)

BEGIN
    FOR emp_rec IN (SELECT ENAME, SAL FROM EMP WHERE SAL > 3000)
    LOOP
        DBMS_OUTPUT.PUT_LINE(emp_rec.ENAME || ' earns ' || emp_rec.SAL);
    END LOOP;
END;
  • 해석: "급여가 3000 초과인 직원의 이름과 급여를 출력한다."
  • 데이터 조작뿐만 아니라, 반복 작업출력 로직을 명시적으로 작성했습니다.

예시 (SQL Server의 T-SQL)

DECLARE @emp_name NVARCHAR(100);
DECLARE emp_cursor CURSOR FOR SELECT ENAME FROM EMP WHERE SAL > 3000;

OPEN emp_cursor;
FETCH NEXT FROM emp_cursor INTO @emp_name;
WHILE @@FETCH_STATUS = 0
BEGIN
    PRINT @emp_name;
    FETCH NEXT FROM emp_cursor INTO @emp_name;
END;
CLOSE emp_cursor;
DEALLOCATE emp_cursor;
  • 해석: "급여가 3000 초과인 직원의 이름을 하나씩 가져와 출력한다."
  • 커서를 사용하여 데이터를 반복적으로 처리하는 명령을 절차적 방식으로 작성했습니다.

절차적 언어와 비절차적 언어 비교

특징 비절차적 언어 (SQL) 절차적 언어 (PL/SQL, T-SQL)
초점 "무엇을 할 것인가?" "무엇을 어떻게 할 것인가?"
제어 흐름 없음 조건문, 반복문 등 명시 가능
사용 목적 간단한 데이터 검색 및 조작 복잡한 로직, 배치 작업
사용 DBMS 모든 DBMS (Oracle, SQL Server 등) Oracle(PL/SQL), SQL Server(T-SQL)
명령어 예 DML(SELECT, INSERT) 배치 처리, 트랜잭션 관리

3. SQL과 DBMS의 관계

SQL:

  • SQL은 데이터베이스에 대한 표준 언어로, 주로 비절차적 방식으로 데이터를 처리합니다.
  • Oracle, SQL Server와 같은 DBMS에서 비절차적 언어(SQL)를 사용해 데이터를 검색하거나 조작합니다.

Oracle과 SQL Server:

  • Oracle:
    • 비절차적 언어(SQL)와 절차적 언어(PL/SQL)를 함께 지원합니다.
  • SQL Server:
    • 비절차적 언어(SQL)와 절차적 언어(T-SQL)를 함께 지원합니다.

'SQL' 카테고리의 다른 글

서브쿼리(스칼라 서브쿼리, 인라인 뷰, 중첩 서브쿼리)  (0) 2024.11.17
MOD함수와 %  (1) 2024.11.15