개발/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