개발/MySQL

[혼자공부하는SQL] 5강

pangil_kim 2025. 2. 13. 03:57
728x90

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();
728x90