= 가상의 테이블
데이타베이스 개체 중에 하나
'바로가기'와 같은 역할
실체는 없지만, 테이블과 연결되어있는 것
사용자의 입장에서는 테이블과 다르게 보이지 않음!
생성 방법
CREATE VIEW 뷰_이름
AS
SELECT 문;
뷰이름을 v_tableName으로 지어주면 좋다
테이블의 모든 정보가 담기는 것이 아닌 사용자에게 보여주고 싶은 정보를 필터링해서 보여줄 수 있음
-> 중요한 정보를 사용자에게 안 보여줄 수 있음
사용자별로 권한 접근을 달리해서 뷰만 보여주게 하면 됨
매번 몇몇 속성만 SELECT해서 사용하지 않고, 해당 정보만 담은 VIEW 만들면 굉장히 간편하다!
SELECT B.mem_id, M.mem_name, B.prod_name, M.addr,
CONCAT(M.phone1, M.phone2) '연락처'
FROM buy B
INNER JOIN member M
ON B.mem_id = M.mem_id;
-> view 생성
CREATE VIEW v_memberbuy
AS
SELECT B.mem_id, M.mem_name, B.prod_name, M.addr,
CONCAT(M.phone1, M.phone2) '연락처'
FROM buy B
INNER JOIN member M
ON B.mem_id = M.mem_id;
-> 사용
SELECT * FROM v_memberbuy WHERE mem_name = '블랙핑크';
CREATE VIEW v_viewtest1
AS
SELECT B.mem_id 'Member ID', M.mem_name AS 'Member Name',
B.prod_name "Product Name",
CONCAT(M.phone1, M.phone2) AS "Office Phone"
FROM buy B
INNER JOIN member M
ON B.mem_id = M.mem_id;
주의점
SELECT DISTINCT `Member ID`, `Member Name` FROM v_viewtest1;
띄엄쓰기가 있으면, 백틱을 사용해야함!!
view 테이블 삭제는 DROP
대체로 view에는 실제 테이블에서 몇몇 속성만 담고 있음
= data insert 할 때 반드시 넣어야 할 정보는 넣을 수 없게 됨
= insert 안됨
INSERT INTO v_member(mem_id, mem_name, addr) VALUES('BTS','방탄소년단','경기') ;
-> 결과

사유:

회원 테이블 입력 할 때 반드시 필요한 인원과 주소가 insert 안됨
ALTER VIEW v_height167
AS
SELECT * FROM member WHERE height >= 167
WITH CHECK OPTION ;
이런식으로 해당 view의 특성을 따르는 옵션을 추가해주기
테이블 삭제 -> view 볼 수 없음
=> 참조해야할 테이블이 없기 때문