MySQL/혼공SQL

[SQL 기초 강의] 5강. 데이터베이스 개체(인덱스, 뷰, 스토어드 프로시저)

묘걍 2023. 11. 7. 17:46

02-3. 데이터베이스 개체

출처: 혼자 공부하는 SQL 유튜브

🎨 데이터베이스 개체

- 데이터베이스 안에 들어있을 수 있는 오브젝트

  • 테이블
  • 인덱스
  • 스토어드 프로시저
  • 트리기

 

 

🎨 인덱스

  • 데이터를 조회할 때 빠르게 조회할 수 있도록 도와주는 개체
    • 실무에서 대용량의 데이터를 다룰 때 유용
  • 책의 '찾아보기'와 동일한 개념
    • 특정 단어를 찾아야하는 경우 책의 첫 장부터 쭉 읽으며 찾는 것이 아니라 책 뒷편에 실린 '찾아보기'를 통해 몇 페이지에 있는지 확인할 수 있다
  • 없어도 문제는 없음
    • 인덱스가 없다고 책 내용이 없는 것은 아닌 것 처럼
    • 빨리 찾을 수 있도록 도와줄 뿐
  • 실무에서는 인덱스를 반드시 사용한다

🎮 '아이유' 조회하기

- 이건 책 내용을 다 뒤진 것

- 만약 데이터가 400만건 있었다면 400만건을 다 뒤져서 아이유를 찾은 것

✅ Excution Plan

- 실행 계획

- 조회할 때 어떻게 결과가 나오게 됐는지에 대해

- Full Table Scan: 전체 테이블을 스캔해서(뒤져서) 찾았다

 

🎮 인덱스 만들기

  • 처음부터 인덱스가 있는 건 아님
  • 인덱스를 만들어줘야함
  • 책 뒤의 찾아보기를 만든다고 생각

- 멤버 테이블의 멤버 이름을 가지고 찾아보기를 만들어주는 것

 

- 결과가 따로 나오지는 않고 초록색 체크가 뜨면 제대로 실행된 것

🎮 다시 '아이유' 찾아보기

- 쿼리와 결과는 같음

- 하지만 찾는 방식이 달라졌음

✅ Excution Plan

- Non-Unique Key Lookup

- 일단은 Full Table Scan이 아님

- 찾아보기를 통해 아이유를 찾아냈다

 

 

🎨 뷰

  • 가상의 테이블
    • 테이블처럼 생겼지만 테이블은 아님
  • 실체가 없다
    • 테이블은 진짜 데이터가 있다
  • 바로가기

- 엣지 바로 가기 (우리는 이것이 실행된다고 생각하지만)

- 이 실행파일의 바로가기인 것 (사실은 이 exe 실행파일이 실행되는 것)

  • 뷰도 마찬가지로 테이블이라고 착각하지만 실제로는 테이블이 아닌, 가상의 테이블

출처: 혼자 공부하는 SQL 유튜브

  • 사용자는 뷰에 접근
    • 뷰에서 실제 테이블을 가져와서 보여주는 효과
    • 사용자는 뷰에 접근했지만 테이블에 접근한 것과 동일한 효과
  • 뷰의 실체: 테이블을 SELECT 하는 구문으로 만들어짐
    • SELECT: 조회 → 결과
  • 뷰에 접근 → 뷰의 SELECT가 작동해서 → 테이블의 데이터를 쭉 가져와 → 사용자에게 보여줌
    • 사용자는 본인이 테이블에 접근했다고 착각
  • 보안 등의 문제로 사용함

🎮 뷰 만들어보기

- 이 아이콘을 통해서도 새 쿼리 창을 만들 수 있다

- 테이블에 접근하는 쿼리문

- 이것을 뷰로 만들어보기

- 잘 만들어졌음

🎮 뷰 사용해보기

- 똑같이 나옴

- 뷰에 접근, 뷰에서 SELECT 문이 작동해서 데이터를 퍼옴

 

🎨 스토어드 프로시저

  • SQL이 일반 프로그래밍 언어는 아님
  • 하지만 그런 프로그래밍 언어들과 비슷하게 만들어주는 것
  • MySQL은 프로그래밍 기능이 기본적으로는 없지만 비슷하게 if문, 반복문 등을 사용하고 싶을 때

🎮 스토어드 프로시저 만들기

- 이 두가지를 묶어 스토어드 프로시저로 만들기

- 초록색 표시된 곳은 사용자 지정

- 나머지는 예약어

- 잘 만들어짐

- 이제는 SELECT ~ '나훈아'; SELECT ~ '삼각김밥'; 이렇게 긴 줄을 다 쓰지 않고 저장 프로시저만 사용해주면 됨

- 두 쿼리에 대한 결과가 각각 한번에 나옴

 

 

 

 

 

 

 

 

 

 

 

출처: https://youtu.be/lBk5YhLZevs?si=IFhyw6RS_WCukZQR