JOIN을 해서 SELECT를 하는 것과 같은 로직이 반복적으로 사용될 때, 이를 하나의 뷰(View)로 만들어서 재사용할 수 있다. 실제 데이터는 뷰를 구성하는 테이블에 담겨 있지만 뷰 역시 마치 테이블처럼 사용할 수 있다.
또한 테이블 뿐만 아니라 다른 뷰를 참조해 새로운 뷰를 만들어 사용할 수 있다.
cf)
과도한 JOIN을 줄여주는 또 다른 방법으로 반정규화가 있다.
CREATE OR REPLACE VIEW empInfo_vw AS
SELECT employee_id, last_name, department_name, city,
state_province, country_name, region_name
FROM departments d
JOIN employees e ON d.department_id = e.department_id
JOIN locations l ON d.location_id = l.location_id
JOIN countries c ON l.country_id = c.country_id
JOIN regions r ON c.region_id = r.region_id;
CREATE OR REPLACE VIEW professorInfo_vw AS
SELECT p.pno, p.pname, p.section, c.cno, c.cname, c.st_num
FROM professor p, course c
WHERE p.pno = c.pno;
뷰를 사용하는 방법은 일반적인 테이블과 같다.
SELECT last_name, department_name, country_name, region_name
FROM empInfo_vw
WHERE employee_id = 100;