뷰 VIEW
use mydb
[제어문]
1.조건문
-if문, case문
2.반복문
-while문
declare @su int
set @su=5
if @su<0
select '음수'
else
select '양수'
declare @su int
set @su=0
if @su<0
select '음수'
else if @su>0
select '양수'
else
select '제로'
declare @su int
set @su=0
select
case @su
when 0 then '제로'
when 1 then '하나'
when 2 then '두울'
else '나머지'
end
declare @su int,@hap int
set @su=1
set @hap=0
while @su<=10
begin
set @hap=@hap+@su
set @su=@su+1
end
select @hap
--begin~end { }동일
[뷰 VIEW]
- 저장프로시저 목적과 비슷
- 복잡한 쿼리문장을 매번 실행 할때마다 타이핑해야 한다면
매우 귀찮을수 있다. 이런 것들을 뷰로 만들어 수월하게 질의할수 있고,
네트웍 트래픽도 줄일수 있다.
- 테이블 전체를 보여 주어서는 안되는 경우, 보여줄 칼럼들만 가져오는
뷰를 만들어서 사용한다.
- 뷰를 사용하는 목적
1.사용의 편의성 2. 보안의 이유
- 뷰의 정의
이미 존재하는 하나 혹은 그 이상의 테이블에서 원하는 데이터만
정확히 가져올수 있도록 미리 원하는 칼럼만 모아 가상적으로
만든 테이블이다.
뷰는 진짜로 존재하는 테이블이 아니라 가상적으로 존재하는 테이블
가상테이블이라 할수 있다.
형식)
create view 뷰이름
as
쿼리문작성
use mydb
select * from w_zipcode
create view vtest1
as
select zipcode as [우편번호],sido as [시도],
gugun as [구군], dong as [동], ri as [리], bunji as [번지]
from w_zipcode
select * from w_zipcode
select * from vtest1 where 시도='서울'
문)전국의 시도별 각각의 시 or 구 or 군가 몇개씩 존재하는지
오름차순으로 출력하시오.
w_zipcode테이블에서 검색
create view vtest3
as
select AA.sido as [시도],count(AA.sido) as [cnt]
from (
select sido,gugun
from w_zipcode
group by sido,gugun
) as AA
group by AA.sido
select * from vtest3
문)갯수가 20이상만 조회
select *
from vtest2
where 갯수>=20
문)서울, 경기,제주 만 조회
select *
from vtest2
where 시도 in ('서울','경기','제주')
문)위의 내용에서 시도이름을 영문으로 출력하시오
select
case 시도
when '서울' then 'seoul'
when '경기' then 'kyoungki'
when '제주' then 'jeju'
end
,갯수
from vtest2
where 시도 in ('서울','경기','제주')
문)시도,갯수를 출력하되,
갯수가 30이상 '매우많음', 20이상 '많음', 10이상 '보통', 나머지 '적음'
select 시도,갯수,
case
when 갯수>=30 then '매우많음'
when 갯수>=20 then '많음'
when 갯수>=10 then '보통'
else '적음'
end
from vtest2
------에러-------------------
if(select 갯수 from vtest2)>=30
select '매우많음'
else if(select 갯수 from vtest2)>=20
select '많음'
else if(select 갯수 from vtest2)>=10
select '보통'
from vtest2
-----에러--------------------
select * from tb_student
sp_helptext vtest2 --사용자가 만든 뷰,인덱스등의 내용을 보여줌.
create view vtest4
as
select * from tb_student
select * from vtest4 --학생테이블 뷰
select * from tb_student --원본
update vtest4
set uname='당산동'
where hakno='5001'
delete from vtest4 where hakno='5001'
- 뷰에서 수정,삭제할경우 원본도 적용될수 있으니 주의
- 뷰를 통해서 수정,삭제도 가능하지만
되도록이면 select구문만 뷰를 만들어서 사용할것