DBMS/MySQL

UNION과 VIEW

Bambi97 2024. 10. 10. 17:18

1. UNION

- 합집합을 나타내는 연산자

- 똑같은 row는 하나만 보여줌 (중복제거)
- 서로 같은 종류의 테이블(컬럼이 같아야 함)에서만 적용이 가능함

select 컬럼1, 컬럼2, ... from 테이블1 union select 컬럼1, 컬럼2, ... from 테이블2

 

*예시 테이블

# 두 개의 테이블의 데이터를 모두 보여줌
select code, name, price from product union select code, name, price from product_new;

 

2. UNION ALL

- 중복제거 x

# union all은 중복데이터를 제거하지 않음
select code, name, price from product union all select code, name, price from product_new;

 

3. VIEW

- 하나 이상의 테이블의 쿼리 결과를 가상의 테이블 형태로 보여주는 것
- 실제 데이터는 저장하지 않고, 쿼리를 미리 저장해두어 테이블처럼 사용할 수 있게 함
- 복잡한 쿼리나 자주 사용하는 쿼리를 간단하게 사용할 수 있도록 도와주는 가상의 테이블
- 테이블의 일부 열이나 행만 보여줄 수 있음(민감한 데이터를 보호)
- ORDER BY는 뷰를 조회할 때 별도로 사용하는 것을 추천
- INSERT/UPDATE 할 때 group by, join 복잡하게 적용된 뷰는 데이터를 추가하거나 수정하기 힘듦

create view 뷰이름 as 쿼리

# view 생성
create view vw_userinfo as select m.userid, m.name, m.gender, p.mbti from member as m inner join profile as p on m.userid = p.userid;

select * from vw_userinfo;

* VIEW 변경 및 삭제

# 뷰 변경하기
# alter view 뷰이름 as 쿼리
alter view vw_userinfo as select m.userid, m.name, m.gender, p.height, p.mbti from member as m inner join profile on m.userid = p.userid;
select * from vw_userinfo;

# 뷰 삭제하기
# drop view 뷰이름
drop view vw_userinfo;