본문 바로가기
  • 저희는 평생 개발할 운명이걸랑요
Tech.log/SQL

[VIEW]

by 김해닳 2021. 4. 28.

안녕하세요! 다시 한 번 찾아뵙는 '모셔가는 프로그래머가 되고 싶은' 김해닳입니다.

 

알고리즘 풀이하랴 Java 강의 들으랴 정신 없는 와중에 

 

5월에 있을 SQLD 시험을 위해서 또다른 강의를 하나 듣고 있는데요

 

사실 SQL은 제가 연수원을 다니던 시절에 Oracle을 공부하면서 어느정도 배웠던 적이 있습니다만

 

오랜만에 다시 하려고 하니 기존에 배웠었던 파트 중에 VIEW와 서브쿼리 파트가 많이 헷갈리더라구요....

 

그래서 오늘은 이 두가지 중 VIEW 파트를 정리 하면서 다시 한번 개념을 정립하는 시간을 가져보도록 하겠습니다!!

 

1. VIEW란?

우선 처음 SQL을 접하시는 분이라면 '도대체 VIEW가 뭐야?!' 라고 생각 하실 수 있겠는데요.

 

SQL에서 정의 하는 VIEW의 의미는 다음과 같습니다.

SQL에서 하나 이상의 테이블 (또는 다른 뷰)에서 원하는 모든 데이터를 선택하여, 그들을 사용자 정의하여 나타낸 것

단순하게 이러한 의미로만 보면은

 

'이게 도대체 무슨 개뼈다귀 같은 소리야?!' 라는 생각이 드실거

 

...라고 당연히 생각합니다.

 

이것을 이해가 쉽게 간단히 다시 설명 드리면

 

'SELECT 문에 의한 쿼리를 정의 하는 것' 이라고 할 수 있습니다.

 

1-2. VIEW의 장점

VIEW가 대충 어떤 의미인지는 알았는데

 

'아니 그래서 이걸 쓰면 도대체 뭐가 좋은건데??' 라고 생각 하실 분들을 위해서

 

결 정 적 으 로 ! ! !

 

VIEW를 사용 하였을 때 결정적으로 좋은 점을 말씀 드리자면

 

1. 쿼리문을 일일이 필요할 때 입력 할 필요 없이 VIEW로 정의 해 두면
   단순히 VIEW를 불러 오는 것만으로도 쿼리문을 실행 시킬 수 있다.
2. 기존의 쿼리문을 작성자 이외에는 알 수가 없기 때문에 보안성에서도 장점이 있다.

정도로 말씀 드릴 수 있겠네요!!

 

그만큼 일일이 쿼리문을 입력하는 시간을 줄일 수 있기 때문에 효율적인 면에서도 좋은 것이죠!!

 

1-2 VIEW 사용법

위에서 VIEW가 무엇인지, 그리고 VIEW를 사용하면 왜 좋은지에 대해서 간단히 알아봤는데요.

 

그러면 이제 이것을 어떻게 사용하고 적용 하는지에 대해서 알아보도록 하겠습니다!

 

뭐니뭐니 해도 눈으로 보는것 보다는 직접 실습 해보는게 중요하겠죠?!

 

 

 

1-2.1 VIEW를 생성하는 방법

가장 기본적인 VIEW를 생성하는 방법은 다음과 같습니다.

 

create view [VIEW 이름] as [select문];

이를 예제를 통해서 조금 더 자세하게 알아보도록 하겠습니다!

 

우리가 가령 Member라는 테이블이 있다고 쳤을 때

 

그 테이블에는 name,address,age,phone이라는 컬럼이 존재합니다.

 

그리고 그 테이블에서 name과 address, 그리고 age라는 컬럼만 출력하는 SQL문을 작성 하게되면

 

select name,address,age from Member;

라고 쓸 수 있겠죠??

 

물론 이렇게 간단한 SQL문을 작성할 때는 일일이 치는 것이 그렇게 귀찮지는 않을 것입니다.

 

그런데 만약에 여기서

 

select from name,address,age from Member where age=30 or address='서울'; 

 이러한 식으로 where문이 추가 된다거나 다음 시간에 배울 서브쿼리로 인하여

 

쿼리문이 길어진다면??

 

이걸 일일이 필요할 때 마다 치는 것이 생각보다 여간 귀찮고 까다로운 일이 아닐 수가 없습니다.

 

바로 이럴 때!!!

 

사용 하는 것이 VIEW인 것이죠!!

 

create view memberview as
select name,address,age
where age>30 or address='서울';

memeberview라는 이름의 view를 생성하였고

 

as문 다음에 우리가 사용하고자 하는 select문을 입력 해줍니다.

 

 이렇게 뷰를 생성 한 다음

 

select * from memberview; 

라고만 입력을 해주면은

 

자동적으로

 

'아 사용자가 memberview라는 VIEW에 저장된 select문을 실행하라는 명령을 내렸구나!' 라고 판단하여

 

필요할 때 마다 일일이 칠 필요가 없이 select문을 불러 오게 되는 것입니다!

 

확실히 예제를 통해서 설명을 드리니 이해가 빨리 되시죠??

 

 

1-2.2 VIEW의 수정 및 삭제

이렇게 VIEW를 생성하는 방법을 알았다면

 

이제는 VIEW를 수정 하는 것과 삭제 하는 방법도 알아봐야 되지 않겠습니까?!

 

그런데 사실 VIEW를 수정 하는 것과 삭제 하는 것은 그렇게 어렵지가 않습니다!!

 

create or replace view [VIEW 이름] as [select문]

위의 VIEW를 생성 하는 부분에서 한 문장이 추가 되었는데 눈치 채셨나요??

 

그렇습니다! 바로 위의 생성문의 'view' 전에 'or replace'가 추가 되었습니다.

 

위의 쿼리문을 간단히 해석하자면

 

'내가 VIEW를 정의할건데 select문에 다른 내용이 추가되어서 이렇게 바꿀거야!'

 

라는 뜻이 되겠죠??

 

create or replace view memberview as
select name,address,age
where age>30 or address='서울';

위의 생성 부분을 예시로 들어서 설명 드리면은

 

'내가 memberview라는 이름의 VIEW를 만들건데 Select문을 select name,address,age
where age>30 or address='서울'; 로 수정할거야!'

 

라는 뜻이 되는겁니다!

 

drop view [VIEW 이름];

삭제는 사실상 테이블을 삭제 할 때와 같은 방법으로 하시면 됩니다!

 

그런데 여기서 이 부분을 보면서 이러한 의문이 들 수도 있을겁니다.

 

'잠깐만! 혹시 VIEW를 삭제 해버리면 테이블에 있는 데이터는 어떻게 하지?!'

 

.

.

.

.

.

저어어어어어어어어어언혀!!!!! 걱정하실 필요가 없습니다!!!!

 

VIEW는 단순히 select문의 테이블을 '참조'만 하는 것이기 때문에

 

VIEW를 삭제 한다고 해도 테이블에 들어있는 데이터는 여러분의 걱정과는 다르게

 

매우 안전합니다(?)

 

 

 

오늘 이렇게 VIEW에 대해서 알아보았는데요!

 

사실 글은 엄청 길게 썼지만 실제 내용은 그렇게 어렵지 않은 내용이었습니다!!

 

'복잡한 SQL문을 쓸 필요없이 간단하게 정의해서 사용 할 수 있다!'

 

이 정도만 알아 두시면 좋을 것 같네요!!

 

오늘 제가 정리한 내용은 여기까지 입니다!

 

다음에는 서브쿼리에 대해서 한번 알아보도록 하겠습니다!

 

감사합니다!

 

댓글