본문 바로가기

IT 기초/SQL

[SQL 활용] View 및 Procedure

▶ View

- 하나 이상의 테이블들을 활용해 사용자가 정의한 가상 테이블

- JOIN 사용을 최소화해 편의성을 최대화

- 가상테이블이기 때문에 중복되는 열 저장될 수 없음 

 

ex)

CREATE VIEW 가상테이블명 AS

SELECT A.*

              ,A.판매갯수 * B.가격 AS 결제금액

   FROM SALES AS A

     LEFT 

     JOIN PRODUCT AS B

        ON A.PRODUCT_CODE = B.PRODUCT_CODE;

 

이후 View 실행, 수정, 삭제

SELECT *

FROM 가상테이블명

 

ALTER VIEW 가상테이블명 AS

~ 수정할 명령어 작성~

 

DROP VIEW 가상테이블명


▶ Procedure

- 프로시저 : 일련의 쿼리를 하나의 함수처럼  실행하기 위한 쿼리의 집합

- 매개변수를 활용해 사용자가 정의한 작업을 수행

 

* 매개변수

IN → 매개변수를 저장된 프로시저로 전달

OUT → 프로시저 결과값을 반환

INOUT → 매개변수를 저장된 프로시저로 전달, 프로시저 결과값을 반환


IN 매개변수

DELIMITER //

CREATE PROCEDURE 프로시저명 (IN 매개변수명1 변수타입, 매개변수명2 변수타입)

BEGIN

(매개변수 활용할 명령어 작성)

SELECT  *

   FROM  CUSTOMER

WHERE  GENDER = 매개변수명1

      AND  ADDR = 매개변수명2;

END //

DELIMITER

 

▲ 프로시저 실행

CALL 프로시저명(매개변수값1, 매개변수값2);

매개변수값들에 해당하는 행만 조회됨

 

▲ 프로시저 삭제

DROP PROCEDURE 프로시저명

 

* DELIMETER → 여러 명령어들 하나로 묶어줄 때 사용

* BEGIN과 END → 프로시저 매개변수 활용한 명령어의 시작과 끝 의미


OUT 매개변수

DELIMITER //

CREATE PROCEDURE 프로시저명 (IN 매개변수명1 변수타입, 매개변수명2 변수타입 OUT 회원수 INT )

BEGIN

SELECT  COUNT(MEM_NO)

      INTO  회원수

   FROM  CUSTOMER

WHERE  GENDER = 매개변수명1

      AND  ADDR = 매개변수명2;

END //

DELIMITER

 

* INTO : OUT 매개변수의 결과값 반환

IN 매개변수의 조건들이 프로시저로 전달되면, 이에 따른 결과값인 회원수가 OUT 매개변수로 반환

 

CALL로 요청후 SELECT로 OUT 매개변수로 반환된 결과값을 조회


INOUT 매개변수

DELIMITER //

CREATE PROCEDURE 프로시저명 (INOUT COUNT INT)

BEGIN

           SET COUNT = COUNT + 10;

END //

DELIMITER;

 

SET @counter =1; 

CALL 매개변수명 (@counter);

SELECT @counter;

 

1이 프로시저로 전달되는 IN 매개변수 성질 , +10이 더해진 OUT 매개변수 성질 가짐

INOUT 매개변수를 저장한 프로시저에 해당 매개변수 넣고 실행