[MySQL] 뷰 (View), 인덱스 (Index)

2024. 7. 28. 21:56· Database/MySQL
목차
  1. 1. 뷰 (View)
  2. 1-1. 뷰 생성
  3. 1-2. 뷰 삭제
  4. 2. 인덱스 (Index)
  5. 2-1. 인덱스 생성
  6. 2-2. 인덱스 삭제

1. 뷰 (View)

  • 실제 데이터를 저장하지는 않고 논리적으로만 데이터가 존재하는 가상의 테이블 (virtual table)
    ⇒ 자주 사용하는 검색 조건식이나 결과를 미리 만들어서 필요할 때 마다 사용!
  • 뷰를 사용한 질의 시에는 DBMS에서 뷰 정의에 따라 질의를 재작성하여 수행함
  • 주로 기반 테이블로부터 정의 / 또 다른 뷰를 기반으로도 정의 가능

📌 뷰의 특징 및 장점

- 생성된 뷰는 또 다른 뷰를 생성하는 기반이 될 수 있음
- 뷰의 정의는 변경 불가! ⇒ 삭제 후 재생성 필요
- 뷰를 통한 데이터 변경에는 제약 존재
    ⇒ 갱신하려면 기반 테이블의 기본키가 포함되어야 함
- 기반 테이블이나 뷰가 삭제되면 이를 기반으로 하는 뷰도 함께 삭제됨

장점
1) 편의성 : 복잡한 질의문 작성이 쉽고 간단함
2) 보안성 : 데이터 보안 유지가 쉬움 (특정 열 숨김, 사용자별로 특정 뷰를 통해서만 데이터 접근)
3) 재사용성 : 반복되는 질의문 작성에 효과적
4) 독립성 : 스키마 변경에도 뷰 질의문 변경 필요 x
    ⇒ 기반 테이블의 구조 변경시, 뷰를 정의하는 질의문만 수정하면 됨!

 

1-1. 뷰 생성

CREATE [OR REPLACE] VIEW 뷰_이름 [열_리스트]
AS SELECT_검색문

-- ex : 물리적 기반 테이블 기반으로 뷰 생성
CREATE VIEW V1_고학년학생 (학생이름, 나이, 성, 학년)
AS SELECT 이름, 나이, 성별, 학년
	 FROM 학생
	 WHERE 학년 >= 3 AND 학년 <= 4;

-- ex : 생성한 뷰를 기반으로 뷰 생성
CREATE VIEW V2_고학년여학생
AS SELECT *
   FROM V1_고학년학생
   WHERE 성 = '여';
  • OR REPLACE : 동일 이름의 뷰가 존재하면 기존 뷰를 무시하고 대체함

 

1-2. 뷰 삭제

DROP VIEW 뷰_이름;
📌 뷰를 삭제하더라도 뷰의 기반 테이블은 삭제되지 않음!

 

2. 인덱스 (Index)

  • 테이블 안의 데이터를 쉽고 빠르게 찾을 수 있도록 하는 DB 객체
  • 인덱스 필요성
    • 쿼리 실행 시 디스크 접근 횟수를 줄여 검색 속도를 높이기 위함!

 

2-1. 인덱스 생성

CREATE [REVERSE] [UNIQUE] INDEX 인덱스_이름 ON 테이블_이름 [ (열이름 [ASC|DESC]) ];

-- ex
CREATE INDEX idx_수강 ON 수강 (학번, 과목번호);
CREATE UNIQUE INDEX ids_과목 ON 과목 (이름 ASC);
✔️ - 테이블에 생성된 인덱스 확인
SHOW INDEX FROM 테이블명;

 

2-2. 인덱스 삭제

DROP INDEX 인덱스_이름 ON 테이블_이름;
ALTER TABLE 테이블명 DROP INDEX 인덱스_이름;

-- ex
DROP INDEX idx_수강 ON 수강;
ALTER TABLE 수강 DROP INDEX idx_수강;

 

저작자표시 변경금지 (새창열림)

'Database > MySQL' 카테고리의 다른 글

[MySQL] 기본 SQL 정리 (2) (DML, 집계 함수)  (0) 2024.07.28
[MySQL] 기본 SQL 정리 (1) (DDL, DCL)  (0) 2024.07.28
[MySQL] ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 에러 해결  (0) 2023.12.12
[MySQL] MySQL 완전 삭제 후 재설치 (Mac OS)  (0) 2023.12.12
  1. 1. 뷰 (View)
  2. 1-1. 뷰 생성
  3. 1-2. 뷰 삭제
  4. 2. 인덱스 (Index)
  5. 2-1. 인덱스 생성
  6. 2-2. 인덱스 삭제
'Database/MySQL' 카테고리의 다른 글
  • [MySQL] 기본 SQL 정리 (2) (DML, 집계 함수)
  • [MySQL] 기본 SQL 정리 (1) (DDL, DCL)
  • [MySQL] ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 에러 해결
  • [MySQL] MySQL 완전 삭제 후 재설치 (Mac OS)
공대생안씨
공대생안씨
전자공학과 학부생의 코딩 일기
티스토리
|
로그인
공대생안씨
공대생의 코딩 일기
공대생안씨
글쓰기
|
관리
전체
오늘
어제
  • All Categories (153)
    • Spring Boot (46)
      • JPA (7)
      • Lombok (2)
    • Java (21)
    • DevOps (3)
      • CI,CD (8)
      • Monitoring (2)
    • Database (7)
      • MySQL (5)
      • MongoDB (1)
      • H2 (1)
    • Trouble Shooting (5)
    • FE (4)
    • IntelliJ (3)
    • Git (3)
    • Algorithm (41)

블로그 메뉴

  • 홈
  • 태그
  • Github

공지사항

인기 글

hELLO · Designed By 정상우.v4.2.2
공대생안씨
[MySQL] 뷰 (View), 인덱스 (Index)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.