뷰 view
: 데이터베이스에 존재하는 일종의 가상 테이블
- 가상테이블
- 실체가 없고(실제 데이터를 저장하고 있지 않음),
- 필요한 내용만 꺼내서 보는 테이블
- 물리적으로 존재하지 않음 = 보여주기만 가능
- view는 한번 생성하면 변경이 안됨 (update, delete 등 X) => 새로운 뷰로 대체(replace) 해야함!
- index를 가질 수 없음
뷰 view 생성
- 여러필드에서 가져오는 경우) 중복제거 distinct는 하는 것이 좋음
- 중복제거를 하지 않는 경우 조건에 맞는 값이 칼럼별로 나와 여러번 출력
1. 하나의 필드에서 가져와 생성
create view 뷰이름 as
select 칼럼명 from 테이블명
where 조건 ;
2. 여러 필드에서 가져와 생성
create view 뷰이름 as
select a.칼럼, b.칼럼
from table_a as a, table_b as b // 알리야스와 as는 선택!
where 조건 ;
--1. 하나의 테이블에서 가져오는 경우
-- 주소가 서울인 친구들의 이름만 뷰로 생성
create view view_name as
select name from student
where addr = '서울' ;
--2. 두개의 테이블에서 가져오는 경우
-- 1학기 수업을 듣는 학생의 이름과 학번으로 뷰로 생성
mysql> create view 1term_view as
-> select s.st_name, s.st_num
-> from student as s, course as c
-> where c.co_term = 1;
Query OK, 0 rows affected (0.00 sec)
뷰 view 삭제
drop 뷰의이름 ;
뷰 view 조회
-- 뷰 출력
select * from 뷰의이름 ;
-- 전체 테이블의 속성도 함께 출력
show full tables;
-- 속성이 뷰인 테이블 출력
show full table in 데이터베이스명 where table_type like "VIEW" ;
⭐ 뷰 view 전체 수정 / 없다면 생성
1.view drop으로 지우고 새로 create 생성하기
2. 기존의 뷰가 있다면 수정 / 없다면 생성하기 (= 덮어쓰기)
create or replace view 뷰이름 as
select 칼럼명
from 테이블명
where 조건 ;
-- 2. 생성되어 있던 뷰에 설정을 추가
-- 1term_view에 중복제거를 추가
mysql> create or replace view 1term_view as
-> select distinct s.st_name, s.st_num
-> from student as s, course as c
-> where c.co_term = 1;
Query OK, 0 rows affected (0.00 sec)
뷰 view 칼럼명만 변경 (덮어씌우기)
- 기존의 뷰가 있다면 삭제하지 않고 새로운 구조의 뷰로 생성
- select 뒤에 뷰의 모든 사용 칼럼을 적어야함 = 적지 않는 경우 사라짐 (덮어쓰기 같은 느낌)
- 칼럼명1 as 새로운 칼럼1의 칼럼명 => 칼럼1의 칼럼명이 변경
- from 해당 테이블명
create or replace view 뷰이름 as
select 칼럼1 as 새로운칼럼명1, 칼럼2, 칼럼3 as 새로운 칼럼명3... (칼럼2는 이름변경X)
from 테이블명
'DB > 명령프롬프트 - mysql' 카테고리의 다른 글
[MySQL] 트리거 trigger 생성, 삭제 (0) | 2023.03.30 |
---|---|
[MySQL] 뷰 view 생성 예제 (0) | 2023.03.30 |
[MySQL] 인덱스(색인) index 생성, 추가, 삭제 (0) | 2023.03.30 |
[MySQL] ERD 대학수강프로그램 - 4. 테이블 업데이트 (update, case, if, modify) (0) | 2023.03.30 |
[MySQL] ERD 대학수강프로그램 3. table이용 예시 (join) (0) | 2023.03.29 |