View

김재령·2022년 2월 25일
0

DB

목록 보기
6/15

"테이블을 넓게 보거나 좁게 보아야할 경우가 있다"

물리적인 데이터구조(table)와 개념적인 데이터 구조(view)의 차이
-> table은 무결성으로 fk로 서로 연결되어 있는데 이것을 view를 통해 원하는 데이터를 뽑아서 볼 수 있게 하는 것이다

idname _/_idtitlewriter_id /_ idcommentnotice_id
newlec뉴렉 \1oraclenewlec\ 1 많은 도움1
yjs유재석2sqlnewlec2정리굿1
jung정형돈3dmlnewlec3감사합니다3
kang강호동4dmldragon
5dmldragon

select n.seq, n.title, n.writer, m.name, count(c.seq) cnt from
member m
inner join notices n on m.id = n.writer
inner join comments c on n.seq = c.noticeseq
group by n.seq, n.title, n.writer, m.name;
--> 이건 올바른 방법이 아니다

가운데 테이블을 중심으로 간다

select n.id, n.title, n.writer_id, m.name, count(c.id) cnt from
member m
right outer join notice n on m.id = n.writer_id-- 오른쪽하고 outer조인하고
left outer join comment c on n.id = c.notice_id -- 왼쪽하고 outer조인하기
group by n.id, n.title, n.writer_id, m.name;

이러한 쿼리문을 view로 정의해서 사용하기

-> 마치 테이블로 정의되어 있는 것처럼 사용하기

create view noticeview
as
select n.id, n.title, n.writer_id, m.name, count(c.id) cnt from
member m
right outer join notice n on m.id = n.writer_id-- 오른쪽하고 outer조인하고
left outer join comment c on n.id = c.notice_id -- 왼쪽하고 outer조인하기
group by n.id, n.title, n.writer_id, m.name;

-> 이렇게 view를 만들 수 있다
-> 즉, view는 말 그대로 창을 보는 것이다
-> 보고자하는 데이터를 미리 만들어두고 view로 정의해서 보는 것이다

view를 이용해 쿼리하기 (마치 테이블처럼 사용가능)
-> 목록에 있는 내용을 가져올 때 뷰로 만들어서 사용가능
-> select * from noticeview

-> select * from noticeview where titiel like '%오%'
order by seq desc;

profile
with me

0개의 댓글