언어/SQL

[혼공스/SQL 기초] 5강. 데이터베이스 개체(인덱스, 뷰, 스토어드 프로시저)

보리시스템 2022. 11. 30.

목차

  Chapter 02 실전용 SQL 미리 맛보기

  02-3 데이터베이스 개체 
  02-3-1 인덱스
  02-3-2 뷰
  02-3-3 스토어드 프로시저

 


 

Chapter 02 실전용 SQL 미리 맛보기

 

02-3 데이터베이스 개체 

데이터베이스에는 테이블, 인덱스, 뷰, 스토어드 프로시저, 트리거, 함수, 커서 등의 개체가 있음
인덱스(index)?
- 책 뒤의 '찾아보기'와 비슷한 개념
- 데이터를 조회할 때 결과가 나오는 속도를 획기적으로 빠르게 해줌


뷰(view)?
- 테이블과 상당히 동일한 성격의 데이터베이스 개체로 '가상의 테이블'임
- 실제 데이터를 가지고 있지 않으며, 진짜 테이블에 링크된 개념이라고 생각하면 됨
* 윈도우 운영 체제의 '바로 가기 아이콘'과 비슷한 개념
사용자 뷰에 접근 SELECT 문 내부적으로 연결됨 데이터
--------------> <----------------------> 테이블

- 테이블의 일부를 제한적으로 표현할 때 주로 사용
- 뷰 활용 시 보안 강화, SQL문의 간단한 사용이 가능


스토어드 프로시저(stored procedure)?
- 스토어드 프로시저를 통해 SQL 안에서도 프로그래밍 언어처럼 코딩할 수 있음
- 일반 프로그래밍보다는 좀 불편하지만, 프로그램 로직을 작성할 수 있어 때론 유용하게 사용


트리거?
- 잘못된 데이터가 들어가는 것을 미연에 방지하는 기능

 

02-3-1 인덱스

많은 데이터를 처리할 때 인덱스를 활용하면 데이터 조회 시간을 대폭 줄여줌

 

  • 인덱스를 만들기 전
    • 'Execution Plan'를 눌러 'member_name'이 '테스트1'인 데이터를 찾는 과정을 보면
    • 빨간색 박스 부분에서 'Full Table Scan', 즉 테이블 전체를 스캔해 찾은 것을 볼 수 있음

 

  • 인덱스 만든 후
    • 아래 명령어를 입력하고 실행한 뒤에는 기존 'Full Table Scan'으로 되어 있었던 부분이 'Non-Unique Key Lookup'이 써있는 초록색 박스로 바뀌어 있음 
    • 인덱스를 사용해 'member_name' 중 '테스트1'를 찾았다는 것을 확인할 수 있음
CREATE INDEX idx_member_name ON member(member_name);

 

02-3-2 뷰

  • 아래 명령문을 통해 실제 데이터는 없지만 테이블과 연결되어 있는 뷰를 만들어 접근
CREATE VIEW member_view
AS
       SELECT * FROM member;

SELECT * FROM member_view;

 

02-3-3 스토어드 프로시저

  • 각각의 SELECT문으로 데이터를 조회하는 것을 스토어드 프로시저를 통해 한 번에 호출할 수 있음

 

  • 스토어드 프로시저 만들기
    • 아래의 명령어로 2개의 SELECT문을 묶고, 'CALL' 명령어로 호출하면 됨
    • myProc()는 맘대로 이름지어 적으면 됨
스토어드 프로시저 만들기
DELIMITER //
CREATE PROCEDURE myProc()
BEGIN
         SELECT * FROM member WHERE member_name = '테스트1';
         SELECT * FROM product WHERE product_name = '테스트1';
END //
DELIMITER ;

스토어드 프로시저 호출하기
CALL myProc();

 


 

※ [출처] 이 게시글은 복습의 목적으로 작성하였습니다. <혼자서 공부하는 SQL(한빛미디어)>에서 발췌한 내용이 포함되어 있으니 자세한 내용은 꼭 해당 서적을 참고하셔서 학습 이해에 도움 받으시길 바라겠습니다.