CREATE VIEW 뷰_이름
AS
SELECT 문;
USE market_db;
CREATE VIEW v_member
AS
SELECT mem_id, mem_name, addr FROM member;
SELECT mem_name, addr FROM v_member
WHERE addr IN('서울', '경기');
보안에 도움이 된다
개인 정보가 보이지 않는 뷰를 생성해서 사용 가능
복잡한 SQL을 단순하게 만들 수 있다.
자주 사용하는 쿼리가 있다고 뷰로 생성해놓는다.
USE market_db;
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;
ALTER VIEW v_viewtest1
AS
SELECT b.mem_id '회원 아이디', m.mem_name AS '회원 이름',
b.prod_name "제품 이름",
CONCAT(m.phone1, m.phone2) AS '연락처'
FROM buy b
INNER JOIN member m
ON b.mem_id = m.mem_id;
SELECT DISTINCT `회원 아이디`, `회원 이름` FROM v_viewtest1;
DROP VIEW v_viewtest1;
USE market_db;
CREATE OR REPLACE VIEW v_viewtest2
AS
SELECT mem_id, mem_name, addr FROM member;
DESCRIBE V_VIEWTEST2;
SHOW CREATE VIEW V_VIEWTEST2;
UPDATE v_member SET addr = '부산' where mem_id='BLK';
뷰를 통해서 데이터를 입력하려면, 뷰에서 보이지 않는 테이블의 열에 NOT NULL이 없어야 한다.
CREATE VIEW v_height167
AS
SELECT * FROM member WHERE height >= 167;
select * FROM v_height167;
ALTER VIEW v_height167
AS
SELECT * FROM member WHERE height >= 167
WITH CHECK OPTION;
INSERT INTO v_height167 VALUES('TOB', '텔레토비', 4, '영국', NULL, NULL, 140, '1995-01-01');