본문 바로가기

혼자 공부하는 SQL/2장 실전용 SQL 미리 맛보기

2장 2. 데이터베이스 개체

데이터베이스의 핵심 개체: 테이블, 인덱스, 뷰, 스토어드 프로시저, 트리거, 함수, 커서 등


인덱스: 데이터를 조회할 때 결과가 나오는 속도를 빠르게 해줌.
뷰: 테이블의 일부를 제한적으로 표현할 때 주로 사용
스토어드 프로시저: SQL에서 프로그래밍이 가능하도록 해줌.
트리거: 잘못된 데이터가 들어가는 것을 미연에 방지

 

1. 인덱스

 데이터가 많을 때 결과가 나오는 시간을 대폭 줄여주는 역활.


인덱스 개념: '찾아보기'와 비슷한 개념. 데이터에 라벨을 달아주는 것.

기존의 데이터 찾는 법

SELECT * FROM member WHERE member_name = '아이유';

 

 

어떻게 데이터를 찾았는지 확인하기 위해서 [Execution Plan(실행 계획)] 탭을 클릭하면 Full Table Scan 이라고 나온다.

처음부터 끝까지 오랜 시간이 걸리는 방법으로 데이터를 찾은 것

 

 

(2) 인덱스 생성 명령어

CREATE INDEX idx_member_name ON member(member_name);

=> 멤버 네임으로 인덱스 생성

 

(3) 뷰를 생성하고 데이터를 검색하면 [Execution Plan] 탭을 보면 Non-Unique Key Lookup 이라고 나온다. 자세한 의미는 추 후 6장에서 배우게 된다고 한다. 이러한 방법을 인덱스 검색이라고 부른다.

 

 

2. 뷰(View)

 

뷰는 테이블과 상당히 동일한 성격의 데이터베이스 개체이다. 뷰를 활용하면 보안도 강화하고 SQL문도 간단하게 사용할 수 있다. 뷰의 개념은 '가상의 테이블'이라고 말할 수 있는데, 일반 사용자 입장에서는 테이블과 뷰를 구분할 수 없다. 다만 뷰는 실제 데이터를 가지고 있지 않으며 진짜 테이블에 링크된 개념이라고 생각하면 된다. 

 

(1) 뷰 생성

CREATE VIEW member_view
AS
SELECT * FROM member;

 

(2) 회원 테이블이 아닌 회원 뷰에 접근, 뷰에 접근하는 것은 테이블에 접근하는 것과 동일하다.

 

*테이블을 사용하지 않고 굳이 뷰를 사용하는 이유.

1. 보안에 도움이 된다.

2. 긴 sql문을 간략하게 만들 수 있다.

 

3. 스토어드 프로시저

(1) 개념: MySQL에서 제공하는 프로그래밍 기능, 여러 개의 SQL문을 하나로 묶어서 편리하게 사용할 수 있으며, SQL문을 묶는 개념 외에 C, 자바, 파이썬과 같은 프로그래밍 언어에서 사용되는 연산식, 조건문, 반복문 등을 사용할 수도 있다.

 

자세한 내용은 7장에서 다룬다.

 

(2) 실습: 두 줄의 SQL을 입력 후 실행한다.

SELECT * FROM member WHERE member_name = '나훈아';

SELECT * FROM product WHERE product_name = '삼각김밥';

 

(3) 두 SQL을 하나의 스토어드 프로시저로 만들어보자. 첫 행과 마지막 행에 구분 문자라는 의미의

DELIMITER // ~ DELIMITER; 문을 입력하고 이것은 스토어드 프로시저를 묶어주는 약속 정도로 이해하면 된다. 자세한 내용은 7장에 나온다.  그리고 BEGIN과 END 사이에 SQL문을 넣으면 된다.

 

DELIMITER //
CREATE PROCEDURE myProc()
BEGIN
SELECT * FROM product WHERE product_name = '삼각김밥';
SELECT * FROM member WHERE member_name = '나훈아';
END //

 

본인은 ~DELIMITER; 로 구문을 닫는 것을 인식하지 못하여 위와 같이 실행하였다.

 

(4) 다음부터는 두 줄의 SQL 문을 실행할 필요 없이 CALL 문을 사용하여 실행하면 된다. 결과는 동일하다.

 

CALL myProc();

 

정리

 

인덱스: 책 뒤의 '찾아보기'와 비슷한 개념. 데이터를 빠르게 찾을 수 있게 도와준다.

뷰: '바로 가기 아이콘'과 비슷한 개념. 한마디로 정의하면 가상의 테이블이라 할 수 있다.

스토어드 프로시저: 여러 개의 SQL을 묶어주거나, 프로그래밍 기능을 제공해준다.

 

한글 용어 영문 용어 설명
데이터베이스 개체 Database Object 테이블, 뷰, 인덱스, 스토어드 프로시저 등 데이터베이스 안에 저장되는 개체
실행 계획 Execution Plan SQL을 실행할 때, 인덱스 사용 여부를 확인할 수 있는 워크벤치의 화면
전체 테이블 검색 Full Table Scan 테이블의 모든 데이터를 흝어서 원하는 데이터를 찾아내는 것을 말함. 책 전체를 찾아보는 것과 비슷함
인덱스 검색 INDEX SCAN 인덱스를 통해서 데이터를 찾는 것을 말함. 책 뒤의 찾아보기를 사용한 것과 비슷함
구분 문자ㅣ DELIMTER 스토어드 프로시저를 묶어주는 예약어
호출 CALL 스토이드 프로시저를 호출하는 예약어
개체 생성문 CREATE 데이터베이스 개체를 생성할 때 사용하는 예약어
개체 삭제문 DROP 데이터베이스 개체를 삭제할 때 사용하는 예약어