본문 바로가기

언어/SQL

[기본] SQLD 2과목 2장 공부 정리 3 (절차형 SQL, PL/SQL, T-SQL, 프로시져와 트리거 개요 )

과목 Ⅱ. 데이터모델링의 이해

 

2장 SQL 활용

 

7절 절차형 SQL

 

1. 절차형 SQL 개요

 

일반적인 개발 언어처럼 SQL에도 절차 지향적인 프로그램이 가능하도록 DBMS 벤더별로 PL/SQL (Oracle), SQL/PL (DB2), T-SQL (SQL Server) 등의 절차형 SQL을 제공하고 있다.

 

절차형 SQL을 이용하면 SQL문의 연속적인 실행이나 조건에 따른 분기처리를 이용해 특정 기능을 수행하는 저장 모듈을 생성할 수 있다.


2. PL/SQL 개요

 

2-1. PL/SQL 특징

 

Oracle의 PL/SQL은 블록 구조로 되어있고, 블록 내에는 DML문장과 쿼리, 절차형 언어(IF, LOOP) 등을 사용할 수 있으며, 절차적 프로그래밍을 가능하게 하는 트랜잭션 언어다.

 

여기서 저장 모듈이란, PL/SQL 문장을 DB 서버에 저장하여 사용자와 애플리케이션 사이에서 공유할 수 있도록 만든 일종의 SQL 컴포넌트 프로그램이며, 독립적이고 완전한 실행 프로그램이다.

 

Oracle의 저장 모듈에는 Procedure, User Defined Function, Trigger가 있다.

 

<특징>

  • 블록 구조로 되어 각 기능별 모듈화 가능
  • 변수, 상수 등을 선언하여 SQL 문장 간의 값 교환
  • IF, LOOP 등의 절차형 언어로 절차적 프로그램 가능
  • DBMS 정의 에러나 사용자 정의 에러를 정의해 사용 가능
  • Oracle에 내장되어 있으므로, Oracle과 PL/SQL을 지원하는 어떤 서버로도 프로그램 옮길 수 있음
  • 응용프로그램의 성능을 향상시킴
  • 통신량 줄일 수 있음

2-2. PL/SQL 구조

출처 : http://www.dbguide.net/db.db?cmd=view&boardUid=148207&boardConfigUid=9&categoryUid=216&boardIdx=135&boardStep=1

DECLARE로 선언, BEGIN으로 로직 처리를 실행, (EXCEPTION은 에러 처리), END로 마무리


2-3. PL/SQL 기본 문법

 

 CREATE PROCEDURE 프로시져명 (인수 데이터형 ~~ ) IS ~~ BEGIN ~~ (EXCEPTION ~~) END;


3. T-SQL 개요

 

3-1. T-SQL 특징

 

T-SQL은 SQL Server를 제어하기 위한 언어이다. T-SQL을 이용해 다양한 저장 모듈을 개발할 수 있다.


3-2. T-SQL 구조

: PL/SQL과 유사하다.

출처 : http://www.dbguide.net/db.db?cmd=view&boardUid=148207&boardConfigUid=9&categoryUid=216&boardIdx=135&boardStep=1


3-3. T-SQL 기본 문법

 

CREATE PROCEDURE 스키마명 프로시져명 ~~ WITH AS ~~ BEGIN ~~ (ERROR 처리 ~~ ) END;


4. User Defined Function의 생성과 활용

 

User Defined Function은 Procedure처럼 절차형 SQL을 로직과 함께 DB 내에 저장해 놓은 명령문의 집합이다.

 

Function이 Procedure와 다른 점은 RETRUN을 사용해 하나의 값을 반드시 반환해야 한다는 점이다.


5. Trigger의 생성과 활용

 

Trigger란 특정 테이블에 INSERT, UPDATE, DELETE와 같은 DML문이 수행되엉ㅆ을 때, DB에서 자동으로 동작하도록 작성된 프로그램이다.

 

즉, 사용자가 직접 호출해 사용하는 것이 아니고 DB에서 자동적으로 수행하는 것이다.

 

Trigger는 테이블, 뷰, 데이터베이스 작업을 대상으로 정의할 수 있다.


5-1. Trigger 구조

 

Trigger 선언 (CREATE Trigger 테이블)으로 사용된다.


<프로시저와 트리거의 차이점>

프로시저 트리거
CREATE Procedure 문법 사용 CREATE Trigger 문법 사용
EXECUTE 명령어로 실행 생성 후 자동으로 실행
COMMIT, ROLLBACK 가능 COMMIT, ROLLBACK 불가능

그동안 이론서에는 절차형 언어에 대한 자세한 정의를 찾을 수가 없어 혼란스러웠는데 DBGUIDE.NET에 SQL관련 정보가 이렇게 자세히 나와있다.

 

이론서 없이 이 사이트를 참고해도 SQLD 공부가 잘 될 것 같다.

 

아쉬운 점은 쿼리 가독성이 떨어지게 작성해놔서 보기 힘들다는 점.

 

하지만 쿼리말고 책에서 상세히 다루지 않은 개념들에 대해 자세히 설명해놔서 이해하기에 좋았다.

 

이에 SQLD를 공부하는 분들에게 이 사이트를 참고하며 공부하는 것을 추천한다.

www.dbguide.net/db.db?cmd=view&boardUid=148404&boardConfigUid=9&categoryUid=216&boardIdx=132&boardStep=1

 

데이터 전문가 지식포털 DBGuide.net

엔터티 속성 관계 식별자 데이터 모델의 이해 1. 모델링의 이해 가. 모델링의 정의 인류의 가장 보편적인 특징이면서 욕구 중의 하나는 의사소통을 하면서 항상 그에 대한 기록을 남기는 것이다.

www.dbguide.net