데이터베이스의 핵심 개체: 테이블, 인덱스, 뷰, 스토어드 프로시저, 트리거, 함수, 커서 등
인덱스: 데이터를 조회할 때 결과가 나오는 속도를 빠르게 해줌.
뷰: 테이블의 일부를 제한적으로 표현할 때 주로 사용
스토어드 프로시저: 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 | 데이터베이스 개체를 삭제할 때 사용하는 예약어 |
'혼자 공부하는 SQL > 2장 실전용 SQL 미리 맛보기' 카테고리의 다른 글
2장 1. 데이터베이스 시작부터 끝까지 (0) | 2023.10.25 |
---|