IT_DBMS/MSSQL

뷰(view) 연습

JJun ™ 2006. 3. 7. 12:10

 

 

/* 뷰(view) */

 

use pubs

 

/*뷰를 만들때에는 진짜 테이블이 반드시 하나 있어야 한다.*/
select * from titles

 

/*뷰의 생성*/

create view testview1
as
select title_id,type,price from titles
/*
    위의 뷰를 정의하는 select에는 order by,select into,compute,compute by를 사용할 수 없다.

    단, select top을 사용하였을 경우에는 order by 사용이 가능하다.
*/
go
select * from testview1 order by price asc
/*
    이미 정의 되어진 testview1이라는 뷰는 테이블(가상)과 같기 때문에
     order by,select into,compute,compute by을 사용할 수 있다.
*/

sp_helptext testview1 /*뷰를 생성하는데 사용한 텍스트를 보여준다.*/
sp_depends testview1 /*뷰가 종속되어 있는 테이블과 뷰의 정보를 보여준다.*/


create view emp_jobs
as
select dbo.employee.fname, dbo.jobs.job_desc
from dbo.employee inner join dbo.jobs

on dbo.employee.job_id = dbo.jobs.job_id
/*뷰 생성*/

select * from emp_jobs
/*뷰 확인*/

 

/*

     뷰 수정: ALTER VIEW viewname

                 [WITH ENCRYPTION]

                  AS

                       select ~~

                 [WITH CHECK OPTION]

 

    뷰 삭제: DROP VIEW viewname

*/

 

use test
/*데이터 베이스 선택*/

 

create view testview2
as
select 이름,관계,핸드폰번호
from 개인신상
/*뷰 생성하기*/

 

insert into testview2 values ('김현준','나','011-0000-0000')
/*뷰에 정보삽입*/

 

select * from testview2
/*뷰 검색*/

select * from 개인신상
select * from 자동차

/*테이블 검색: view에 입력된 값이 실제 테이블에 들어갔음을 확인할 수 있다.*/

 

create view testview6
as
select a.이름,관계,핸드폰번호,차명,년식
from 개인신상 a, 자동차 b
where a.이름=b.이름

 

select * from testview6

 

insert into testview6(이름,관계,핸드폰번호,차명,년식)
values ('김현준','나','011-000-0000','재규어','2000')
/*
   이름,관계,핸드폰번호 = 개인신상 테이블
   차명,년식 = 자동차 테이블
   → 2개의 테이블을 동시에 영향을 줄 수 있기 때문에 Error
*/

 

insert into testview6(이름,관계,핸드폰번호)
values ('김현기','동생','010-0000-0000')
/*
    하나의 테이블에만 영향을 주므로 가능함
    한번의 질의에 하나의 테이블만 수정 가능하다.
*/