본문 바로가기
실습기록

7월 5일 project - 데이터베이스 뷰 생성(My SQL)

by project100 2023. 7. 8.

 

뷰 = 내가 원하는 컬럼명을 뽑아서 볼 수 있게 해준다.

 

파란색으로 써진 부분은 무조건 필수 

보라색은 조건 있을 경우만 쓰면 된다.

 

1. 하나의 테이블에서 뷰 만들 때 

CREATE OR REPLACE VIEW 뷰테이블명 AS

SELECT 컬럼명1, 컬럼명2, 컬럼명3 

FROM 테이블명

WHERE (조건 있을 경우만 사용)

create or replace view  train as
SELECT trainnum, gymnum, tcareer, tlicence, tpr, toriname, tsysname, mname 
FROM member;

create or replace view  train as
SELECT trainnum, gymnum, tcareer, tlicence, tpr, toriname, tsysname, mname 
FROM member
WHERE gymnum is not null;

 

2. 두 개 테이블을 합쳐서 뷰 만들 때

 

세 개 테이블을 합쳐서 뷰를 만들기도 한다는데  두 개 이상 테이블을 합치는 것은 잘 사용하지 않는다고 한다.

뷰 테이블도 조건식이 겹치면 다수의 뷰를 만들 수 있다.

약자를 쓸수도 있고 안 쓸수도 있지만 약자를 안 쓰면, SELECT 컬럼명을 합칠 때 약자 대신 테이블을 전부 적어야 한다.

 

2-1. 테이블1의 컬럼 원하는 만큼 + 테이블2의 컬럼 원하는 만큼

※ 전제조건 : 합칠 테이블에 같은 컬럼명이 존재해야 한다. 

 

CREATE OR REPLACE VIEW 뷰테이블명 AS

SELECT 약자1.컬럼명1, 약자1.컬럼명2, 약자2.컬럼명1, 약자2.컬럼명2 

FROM 테이블명1 약자1, 테이블명2 약자2

WHERE 약자1.중복컬럼명 = 약자2.중복컬럼명

AND (조건이 있을 때 경우만 사용) 

 

♣ 주의사항

SELECT 작성 시 약자명 쓰고 . 찍고 바로이어서 공백없이 컬럼명 작성한다. 공백이 있을 경우 생성안된다. 

FROM 작성 시 테이블명 쓰고 약자를 쓸 때는 공백 주고 약자 작성, 약자와 테이블 구분은 공백으로 준다.

SELECT와 FROM 작성 시 끝나는 컬럼명 또는 약자를 쓰고 난 후에는 , 쉼표를 찍어주지 않는다. My SQL은 쉼표 없으면 빨간줄이 뜬다.

create or replace view  ready as
SELECT distinct T.membertype, T.gymnum, M.mgender 
FROM membertype T, member M
where M.membernum = T.membernum and membertype=0
;

create or replace view  ready2 as
SELECT D.ggoodsname, G.gymnum, G.gname, G.glocation, G.gsysname 
FROM gymgoods D, gym G
where D.gymnum = G.gymnum
;

create or replace view fillter as
SELECT  R.membertype, R.mgender, G.glocation, 
    G.gsysname, G.ggoodsname, G.gymnum, G.gname 
FROM ready R, ready2 G
where R.gymnum = G.gymnum;
;

 

2-2. 테이블1의 컬럼 조금(또는 전체) + 테이블2 컬럼 전체   

※ 전제조건 : 합칠 테이블에 같은 컬럼명이 존재해야 한다. 

 

CREATE OR REPLACE VIEW 뷰테이블명 AS

SELECT (약자1.)컬럼명1, (약자1.)컬럼명2, (약자1.)컬럼명3,  약자2.* 

FROM 테이블명1 약자1

WHERE 컬럼조금(또는전체)테이블명1 약자1

JOIN 전체컬럼테이블명2 약자2

ON 약자1.중복컬럼명 = 약자2.중복컬럼명

 

♣ 주의사항

SELECT 작성 시 테이블1의 컬럼명은 약자 없이 컬럼명만 작성해도 된다. 머리도 복잡한데 수고를 하나라도 줄이자. 

대신 전체 컬럼이 필요한 경우 테이블1은 컬럼명을 전부 써주어야 한다. 테이블1과 테이블2을 비교해서 적은 컬럼을 쓰자. 

전체컬럼이 필요한 테이블2는 약자 . 찍고 바로 이어서 전체컬럼을 뜻하는 * 표를 찍어 준다.   

ON 작성 시 전체를 안 합칠 때의 WHERE 조건식과 동일한 기능을 한다.

CREATE OR REPLACE VIEW fillter2 AS
SELECT membertype, mgender, glocation, 
    ggoodsname, gsysname, gname, gc.*
FROM fillter f 
JOIN gymconvenient gc
ON f.gymnum = gc.gymnum
;

CREATE OR REPLACE VIEW fillter_fin AS
SELECT membertype, mgender, glocation, ggoodsname,
	gsysname, gname, gc_cloths, gc_towel,
    gc_wifi, gc_parking,
    gc_inbody, gc_sauna, gm.*
FROM fillter2 f
JOIN gymmachine gm
ON f.gymnum = gm.gymnum
;