본문 바로가기

혼자공부하는 SQL

2. 실전용 SQL 미리 맛보기-2

0. 학습 목표

  • 데이터베이스 모델링의 개념을 파악
  • 전반적인 데이터베이스 구축 절차를 이해
  • 데이터베이스 개체인 인덱스, 뷰, 스토어드 프로시저에대해 미리 학습

0. 요약

  • 프로젝트란 현실 세계를 컴퓨터 시스템으로 옮겨놓는 일련의 과정
  • 폭포수 모델은 소프트웨어 개발 단계 중 하나로 이름 그대로 폭포가 떨어지듯 개발 단계가 진행
  • 데이터베이스 모델링이란 현실 세계에서 사용되는 작업이나 사물들을 DBMS의 테이블로 옮기기 위한 과정
  • 스키마는 MySQL 안에 데이터베이를 뜻한다. 데이터베이스와 동일한 용어라고 생각하면 됨
  • 데이터형식은 문자형(CHAR), 정수형(INT)등과 같이 열에 저장될 데이터 형식을 뜻 함
  • 예약어는 SELECT, FROM, WHERE와 같은 기존에 약속된 SQL 임
  • 기본키는 열에 지정하며 각 행을 구분하는 유일한 옵션
  • 인덱스는 책 뒤의 찾아보기와 비슷한 개념이며 데이터를 빠르게 찾을 수 있도록 도와 줌
  • 는 바로가기 아이콘과 비슷한 개념임
  • 스토어드 프로시저는 여러 개의 SQL을 묶어주거나 프로그래밍 기능을 제공

3. 데이터베이스 개체

※핵심 키워드: 인덱스, 뷰, 스토어드 프로시저


3-1. 인덱스

데이터를 조회할 때 테이블에 데이터가 많으면 속도가 느려진다. 인덱스는 이런 경우 결과가 나오는 시간을 대폭 줄여준다.

인덱스 개념 이해하기

인덱스란 책의 제일 뒤에 수록되는 찾아보기 기능과 비슷하다. 찾아보기를 통해 먼저 해당 단어를 찾고 그 옆에 적혀있는 페이지로 이동하여 검색 속도를 높이는 것이다.

인덱스 실습하기

우선 회원테이블에 있는 아이유 정보를 찾아보자.

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

위에서도 언급하였지만 아래 Explain에서 확인 가능하다.(Full Table Scan)

 

 

이제 회원 테이블에 인덱스를 만들어 보자.

CREATE INDEX index_member_name ON member(member_name);

다시 검색해 보자. Non_unique Key Lookup으로 인덱스 검색으로 확인된 것이다.


3-2. 뷰

뷰는 테이블과 상당히 동일한 성격이 데이터베이스 개체이다. 뷰를 활용하면 보안도 강화하고 SQL문도 간단하게 사용할 수 있다.

뷰 개념 이해하기

뷰를 한마디로 정의하면 가상의 테이블이라고 할 수 있다. 진짜 테이블에 링크된 개념이다. 뷰는 윈도우즈 운영체제의 바로가기 아이콘과 비슷하다.

뷰의 실체는 SELECT문이다. 즉 뷰에 접근하는 것은 SELECT 쿼리를 수행한 것이다.

뷰 실습하기

기본적인 뷰를 마들어 보자.

CREATE VIEW member_view AS SELECT * FROM member;

회원 테이블이 아닌 뷰테이블에 접근해 보자. 동일한 결과를 얻을 수 있다.

SELECT * FROM member_view;

뷰로 얻을 수 있는 이점은 보안과 긴 SQL 문을 간단하게 만들 수 있다.


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

스토어드 프로시저를 통해 SQL 안에서도 일반 프로그래밍 언어처럼 코딩을 할 수 있다.

스토어드 프로시저 개념 이해하기

스토어드 프로시저란 MySQL에서 제공하는 프로그래밍 기능으로 여러개의 SQL 문을 하나로 묶어서 편리하게 사용할 수 있다. 연산식, 조건문, 반복문등을 사용할 수도 있다.

스토어드 프로시저 실습하기

우선 회원테이블과, 상품 테이블에 특정 이름을 검색하는 SQL문을 사용해 보자.

SELECT * FROM member WHERE member_name = "나훈아";
SELECT * FROM product WHERE product_name = "삼각김밥";

별도의 탭으로 결과가 나온다. 그런데 이 것보다 더 많은 자주 다 수의 SQL문을 사용한다면 매번 타이핑을 해줘야하는 불편함이 있다.

이를 스토어드 프로시저를 통해 해결할 수 있다.

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

그리고는 이제 함수만 호출하면 된다.

CALL myProc();

'혼자공부하는 SQL' 카테고리의 다른 글

3. SQL 기본 문법-3  (0) 2022.01.21
3. SQL 기본 문법-2  (0) 2022.01.19
3. SQL 기본 문법-1  (0) 2022.01.17
2. 실전용 SQL 미리 맛보기-1  (0) 2022.01.14
1. 데이터베이스와 SQL  (0) 2022.01.14