BE
[혼자공부하는SQL] 5강
02-3. 데이터베이스 개체
01. 시작하기 전에

데이터베이스에서는 데이블 외에 ‘인덱스, 뷰, 스토어드 프로시저, 트리커, 함수, 커서’ 등의 개체도 필요하다.
인덱스 : 데이터를 조회할 때 결과가 나오는 속도를 획기적으로 빠르게 해준다.
뷰 : 테이블의 일부를 제한적으로 표현할 때 주로 사용된다.
스토어드 프로시저 : SQL에서 프로그래밍이 가능하도록 해준다.
트리거 : 잘못된 데이터가 들어가는 것을 미연에 방지하는 기능을 한다.
1. 인덱스
: 데이터를 조회할 때 테이블에 데이터가 적다면 결과가 금방 나오지만, 데이터가 많아질수록 결과가 나오는 시간이 많이 소요된다.
인덱스는 이런 경우 결과가 나오는 시간을 대폭 줄여준다.
1) 인덱스 개념 이해하기
인덱스란 책의 제일 뒤에 수록되는 ‘찾아보기’와 비슷한 개념이다.
‘찾아보기’를 통해 먼저 해당 단어를 찾고, 바로 옆에 적혀 있는 페이지로 이동하는 효율적인 방법을 사용하는 것이다.
빨리 찾을 수 있는 도움을 주는 것이지, 이것이 없어도 이용이 불가한 것은 아니다.
select * from member where member_name = '임영웅';이 방법은 전체를 다 찾아서 특정 데이터를 찾는 방법이다.
인덱스를 만들어야 한다.
CREATE INDEX idx_member_name ON member(member_name);이렇게 특정 컬럼에 대하여 INDEX를 지정한다.
이후 SELECT를 진행하면 처리 속도가 빨라진 것을 볼 수 있다.
추가 내용 (ChatGPT)
Primary Key와 Unique Key는 기본적으로 인덱스를 포함한다.
member_id가 Primary Key라면, 이미 자동으로 인덱스가 생성된다.이 경우 별도로 인덱스를 만들 필요가 없다.
인덱스는 특정 컬럼을 빠르게 검색하는 데 도움을 주지만, 삽입(INSERT), 수정(UPDATE), 삭제(DELETE) 성능은 저하될 수 있다.
이유는 데이터 변경 시
인덱스도 같이 관리해야 하기 때문이다.
2. 뷰
: 뷰는 테이블과 상당히 동일한 성격의 데이터베이스 개체이다.
뷰를 활용하면 보안도 강화하고, SQL문도 간단하게 사용할 수 있다.
1) 뷰 개념 이해하기
: 뷰(View)를 한마디로 정의하면 ‘가상의 테이블’이라고 할 수 있다.
일반 사용자의 입장에서는 테이블과 뷰를 구분할 수는 없다.
즉, 일반 사용자는 테이블과 동일하게 뷰를 취급하면 된다.
다만, 뷰는 실제 데이터를 가지고 있지 않으며, 진짜 테이블에 링크된 개념이라고 생각하면 된다.

뷰에 접근하면 실제 테이블을 보는 것처럼 되어 있다.
뷰의 SELECT가 작동되어서 사용자에게 보여준다.
CREATE VIEW member_view
AS
SELECT * FROM member;
SELECT * FROM member_view;3. 스토어드 프로시저
: 스토어드 프로시저를 통해 SQL 안에서도 일반 프로그래밍 언어처럼 코딩을 할 수 있다.
비록 일반 프로그래밍보다 좀 불편하지만, 프로그래밍 조직을 작성할 수 있어서 때론 유용하게 사용된다.
1) 스토어드 프로시저 개념 이해하기
스토어드 프로시저란, MySQL에서 제공하는 프로그래밍 기능으로, 여러 개의 SQL 문을 하나로 묵어서 편리하게 사용할 수 있다.
연산식, 조건문, 반복문 등을 사용할 수도 있다.

2) 스토어드 프로시저 실습하기
DELIMITER //
CREATE PROCEDURE myProc()
BEGIN
select * from member where member_name = '나훈아';
select * from product where product_name = '삼각김밥';
END //
DELIMITER ;myProc
CALL myProc();