ordertblview 라는 view를 만들었다.
CREATE OR REPLACE VIEW ordertblview AS
SELECT
m.menuno menuno , m.name menuname , m.price menuprice, m.retaurantphone rp,
c.email cusemail, c.phone cusphone, c.address cusadrs,
o.ortherno odrno , o.regdate orrdate , o.cnt odrcnt
FROM
menu m, customer c, ordertbl o
WHERE
c.email = o.email AND m.menuno = o.menuno;
상위 view에서 만들어진(새로 지정해준) 칼럼명은
c.email cusemail, c.phone cusphone, c.address cusadrs, o.ortherno odrno , o.regdate orrdate , o.cnt odrcnt -- cusemail나 cusphone이 새로운 칼럼명이다
해당 view에 그 칼럼의 새로운 이름이 된다.
그러므로
CREATE OR REPLACE VIEW ordertblview1 AS
SELECT
ov.*, r.name rtrname, r.address rtradr
FROM
ordertblview ov, restaurant r WHERE ov.rp = r.retaurantphone;
ordertblview 와 restaurant으로 새로운 view를 만들 때,
새로운 view를 구성하는 칼럼에 ordertblview 의 칼럼명은 우리가 지정해 준 칼럼명이 들어간다.
FROM ordertblview ov, restaurant r WHERE ov.rp = r.retaurantphone; -- ordertblview 에서는 rp가 왔고, -- restaurant에서는 retaurantphone이 왔다.
추가로 여기에서
CREATE OR REPLACE VIEW ordertblview AS
SELECT
m.menuno menuno , m.name menuname , m.price menuprice, m.retaurantphone rp,
c.email cusemail, c.phone cusphone, c.address cusadrs,
o.ortherno odrno , o.regdate orrdate , o.cnt odrcnt
FROM
menu m, customer c, ordertbl o
WHERE
c.email = o.email AND m.menuno = o.menuno;
원래 menu와 customer과 ordertbl의 칼럼명은
FROM menu m, customer c, ordertbl o WHERE c.email = o.email AND m.menuno = o.menuno;
기존 칼럼명으로 들어간다.
뷰(View)가 뭔가요?
뷰(View)는 데이터베이스에 존재하는 일종의 가상 테이블이다.
뷰도 실제 테이블처럼 행과 열을 가지고 있지만, 실제로 데이터를 저장하고 있지는 않다.
즉, 우리가 여러 테이블을 번거롭게 들러서 확인을 해야 할 때 혹은 SELECT 문을 겹겹이 사용해서 어려운 쿼리문으로 조회를 수행해야 할 때 이러한 번거로움을 줄여주는 것이 바로 뷰(View) 이다.
어떻게 만들까
CREATE OR REPLACE VIEW ordertblview AS
SELECT
m.menuno menuno , m.name menuname , m.price menuprice, m.retaurantphone rp,
c.email cusemail, c.phone cusphone, c.address cusadrs,
o.ortherno odrno , o.regdate orrdate , o.cnt odrcnt
FROM
menu m, customer c, ordertbl o
WHERE
c.email = o.email
AND
m.menuno = o.menuno;
이렇게 만든다.
이건 테이블 3개를 합친 view다.
CREATE OR REPLACE VIEW 뷰이름좋은걸로 AS --CREATE OR :만들거나 --REPLACE :덮어쓰기 --VIEW :해당뷰가있으면덮어쓰고없으면새로만들어 --AS :다음과같이 SELECT --뽑을거 a.여긴테이블a의칼럼명1 여긴내가새로지정해줄칼럼명 , a.테이블a의칼럼명2 아무튼이부분은앞으로뷰에서쓸칼럼명 , a.테이블a의칼럼명3 계속써야하니까아무말쓰지말자, b.테이블b의칼럼명1 멍멍, b.이칼럼들은새로운뷰에넣을칼럼들이다 야옹, b.그러니불필요하거나중복되는칼럼은빼고쓰자 짹짹, b.테이블b의칼럼명4 이새칼럼명도당연히중복없이써야함, c.테이블c의칼럼명1 칼럼칼럼 c.테이블c의칼럼명2 칼럼칼럼칼럼 FROM --출처 테이블a a, 테이블b b, 테이블c c WHERE --조건 b.연결시켜줄칼럼명1(c에있다) = c.연결시켜줄칼럼명2(b에있다) AND a.연결시켜줄칼럼명3(c에있다) = c.연결시켜줄칼럼명4(a에있다);
서로에게 있는게 연결고리가 되어 view를 만들어줌.
사실 inner join을 쓰는데 내가 그걸테스트를 안해봐서 아직 포스팅을 못함.