뷰( VIEW ) 란?
- 데이터베이스에 존재하는 일종의 가상 테이블을 말한다.
- 실제 테이블처럼 행과 열을 가지고 있지만, 실제로 데이터를 저장하고 있지는 않는다.
- 여러 테이블을 번거롭게 들러서 확인해야 할 때나 SELECT 문을 겹겹이 사용해서 어려운 쿼리문으로 조회해야 할 때 이러한 번거 룸을 줄여준다
단 , 뷰는 단지 보여주는 역할만을 수행한다는 것을 잊지 말아야 한다.
뷰 ( VIEW ) 의 특징
1. 장점
- 특정 사용자에게 테이블 전체가 아닌 필요한 필드만 보여줄 수 있다.
- 복잡한 쿼리를 단순화해서 사용할 수 있다.
- 위와 같이 사용한 쿼리를 재사용가능하다.
2. 단점
- 한번 정의된 뷰는 변경이 불가능하다.
- 삽입, 삭제, 갱신 작업에 많은 제한 사항을 가진다.
- 뷰는 자신만의 인덱스를 가질 수 없다.
뷰 ( VIEW ) 생성법
뷰는 테이블 만드는 듯이 CREATE 문을 사용한다.
-- 일종의 가상 테이블
create view vote_result as
select v_name as '성명',
concat(
-- 앞자리 만들기
case
when substr(v_jumin,7, 1) in('1','2') then '19'
when substr(v_jumin,7, 1) in('3','4') then '20'
end,
-- 년도 뒤 두자리
substr(v_jumin, 1,2),
'년',
-- 월 두 자리
substr(v_jumin, 3,2),
'월',
-- 일 두 자리
substr(v_jumin, 5,2),
'일생'
) as '생년월일',
concat(
'만',
cast(date_format(sysdate(), '%Y') as unsigned) -- 현재년도
- -- 뺄셈
concat(case
when substr(v_jumin, 7, 1) in('1', '2') then '19'
when substr(v_jumin, 7, 1) in('3', '4') then '20'
end,
substr(v_jumin, 1, 2)
),
'세'
) as '나이',
case
when substr(v_jumin, 7, 1) in('1', '3') then '남'
when substr(v_jumin, 7, 1) in('2', '4') then '여'
end as '성별',
v_no as '후보번호',
concat(substr(v_time, 1, 2),':',substr(v_time, 3, 2)) as '투표시간',
case
when V_CONFIRM = 'N' then '미확인'
when V_CONFIRM = 'Y' then '확인'
else '없음'
end as '유권자확인'
from tbl_vote_202005;
쿼리문이 매우 긴데 , 처음 문구에 create view vote_result as로 뷰를 만들었다.
저 쿼리문을 실행한 것과
select * from vote_result;
간단하게 select 문의 출력 결과는 같다.
이런 경우에 쓰면 좋을것 같다.
'MySQL > MySQL icia 30일차' 카테고리의 다른 글
MySQL index란? (0) | 2023.04.04 |
---|---|
MySQL concat()에 대해서 (0) | 2023.04.04 |
MySQL case, then, else, end, substr이란 ? (0) | 2023.04.04 |