MSSQL 뷰(VIEW) 만들기, 수정하기, 삭제하기
페이지 정보
본문
[ 뷰 만들기 ]
뷰는 CREATE VIEW 문을 이용해서 만듭니다.
뷰를 생성하는 기본형식은 아래와 같습니다.
CREATE VIEW [ < database_name > . ] [ < owner > . ] view_name [ ( column [ ,...n ] ) ]
[ WITH < view_attribute > [ ,...n ] ]
AS
select_statement
[ WITH CHECK OPTION ]
view_name : 뷰의 이름입니다. 테이블과 마찬가지로 데이타베이스 내에서 고유해야 합니다.
column [ ,...n] : 이부분은 뷰에 사용된 SELECT 이하의 문장에서 산술식이나, 기타 컬럼의 조작으로 컬럼의 이름이 없을때 뷰에서 그 컬럼의 이름을 적어서 사용하는 것입니다. 아래의 예를 보시면 이해가 빠르실 것입니다.
CREATE VIEW viewTEST AS
SELECT count(*) FROM customer
위의 문장을 실행시키면 다음과 같은 에러가 출력됩니다.
"1 열에 대해 열 이름이 지정되지 않아서 뷰 또는 함수를 만들지 못했습니다." column [ ,...n ]은 이럴때 아래와 같이 사용됩니다.
CREATE VIEW viewTEST ( record_count ) AS
SELECT count(*) FROM customer
record_count 부분이 뷰이름 옆의 컬럼명입니다.
위의 문장을 아래와 같이 수정한다면 뷰이름 옆에 컬럼명을 사용할 필요가 없습니다.
CREATE VIEW viewTest AS
SELECT count(*) as record_count FROM customer
select_statement : 뷰에 사용될 select 이하의 문장입니다.
WITH CHECK OPTION : 뷰를 만들거나 수정시 이 옵션을 체크하면 뷰에서 정의한 범위외로 데이타가 변경되는 것을 금지합니다.
위의 CREATE VIEW 문을 이해하기 쉽게 단순화 시켜보면 아래와 같습니다.
--단순화 시킨 CREATE VIEW 구문
CREATE VIEW 뷰의이름 ( 컬럼명,... )
AS
SELECT 문 .........
그럼 CREATE VIEW 문을 이용해서 가독성이 떨어지는 첫번째 예제를 뷰로 만들어 보겠습니다.
CREATE VIEW viewCustomer AS
SELECT TOP 5 cus_gubun1,cus_name,
CASE WHEN Len(source_addr) > 14 THEN
substring( source_addr, charIndex( space(1), source_addr ) + 1,
charIndex( space(1), source_addr,
charIndex( space(1), source_addr, charIndex(space(1), source_addr) + 1) + 1)
- charIndex( space(1), source_addr ) - 1 ) ELSE '잘못된 주소' END as source_addr,
CASE WHEN Len(dest_addr) > 14 THEN substring( dest_addr, charIndex( space(1), dest_addr ) + 1,
charIndex( space(1), dest_addr,
charIndex( space(1), dest_addr, charIndex(space(1), dest_addr) + 1) + 1)
- charIndex( space(1), dest_addr ) - 1 ) ELSE '잘못된 주소' END as dest_addr,
cus_year + '-' + cus_month + '-' +cus_day as cusymd,
CASE WHEN cus_finish = 'N' THEN '신규' ELSE '완료' END as cus_finish, cus_idate
FROM customer a INNER JOIN cus_corp b ON
a.cus_no = b.cus_no
ORDER BY cus_idate DESC
위와 같이 뷰를 만들었다면 SELECT 문은 아래와 같이 단순해 집니다.
SELECT cus_gubun1, cus_name, source_addr, dest_addr, cusymd, cus_finish, cus_idate FROM
viewCustomer WHERE cus_gubun1 = '3'
[ 뷰 수정하기 ]
이미 만들어진 뷰에 대해 수정할 부분이 있다면 CREATE 명령어 대신 ALTER 명령어를 사용하시면 됩니다.
--단순화 시킨 ALTER VIEW 구문
ALTER VIEW 뷰의이름
AS
SELECT 문 .........
[ 뷰 삭제하기 ]
뷰의 삭제는 DROP 명령어를 사용합니다.
--DROP VIEW 구문
DROP VIEW 뷰의이름
자료인용
http://www.webmadang.net/database/database.do?action=read&boardid=4001
뷰는 CREATE VIEW 문을 이용해서 만듭니다.
뷰를 생성하는 기본형식은 아래와 같습니다.
CREATE VIEW [ < database_name > . ] [ < owner > . ] view_name [ ( column [ ,...n ] ) ]
[ WITH < view_attribute > [ ,...n ] ]
AS
select_statement
[ WITH CHECK OPTION ]
view_name : 뷰의 이름입니다. 테이블과 마찬가지로 데이타베이스 내에서 고유해야 합니다.
column [ ,...n] : 이부분은 뷰에 사용된 SELECT 이하의 문장에서 산술식이나, 기타 컬럼의 조작으로 컬럼의 이름이 없을때 뷰에서 그 컬럼의 이름을 적어서 사용하는 것입니다. 아래의 예를 보시면 이해가 빠르실 것입니다.
CREATE VIEW viewTEST AS
SELECT count(*) FROM customer
위의 문장을 실행시키면 다음과 같은 에러가 출력됩니다.
"1 열에 대해 열 이름이 지정되지 않아서 뷰 또는 함수를 만들지 못했습니다." column [ ,...n ]은 이럴때 아래와 같이 사용됩니다.
CREATE VIEW viewTEST ( record_count ) AS
SELECT count(*) FROM customer
record_count 부분이 뷰이름 옆의 컬럼명입니다.
위의 문장을 아래와 같이 수정한다면 뷰이름 옆에 컬럼명을 사용할 필요가 없습니다.
CREATE VIEW viewTest AS
SELECT count(*) as record_count FROM customer
select_statement : 뷰에 사용될 select 이하의 문장입니다.
WITH CHECK OPTION : 뷰를 만들거나 수정시 이 옵션을 체크하면 뷰에서 정의한 범위외로 데이타가 변경되는 것을 금지합니다.
위의 CREATE VIEW 문을 이해하기 쉽게 단순화 시켜보면 아래와 같습니다.
--단순화 시킨 CREATE VIEW 구문
CREATE VIEW 뷰의이름 ( 컬럼명,... )
AS
SELECT 문 .........
그럼 CREATE VIEW 문을 이용해서 가독성이 떨어지는 첫번째 예제를 뷰로 만들어 보겠습니다.
CREATE VIEW viewCustomer AS
SELECT TOP 5 cus_gubun1,cus_name,
CASE WHEN Len(source_addr) > 14 THEN
substring( source_addr, charIndex( space(1), source_addr ) + 1,
charIndex( space(1), source_addr,
charIndex( space(1), source_addr, charIndex(space(1), source_addr) + 1) + 1)
- charIndex( space(1), source_addr ) - 1 ) ELSE '잘못된 주소' END as source_addr,
CASE WHEN Len(dest_addr) > 14 THEN substring( dest_addr, charIndex( space(1), dest_addr ) + 1,
charIndex( space(1), dest_addr,
charIndex( space(1), dest_addr, charIndex(space(1), dest_addr) + 1) + 1)
- charIndex( space(1), dest_addr ) - 1 ) ELSE '잘못된 주소' END as dest_addr,
cus_year + '-' + cus_month + '-' +cus_day as cusymd,
CASE WHEN cus_finish = 'N' THEN '신규' ELSE '완료' END as cus_finish, cus_idate
FROM customer a INNER JOIN cus_corp b ON
a.cus_no = b.cus_no
ORDER BY cus_idate DESC
위와 같이 뷰를 만들었다면 SELECT 문은 아래와 같이 단순해 집니다.
SELECT cus_gubun1, cus_name, source_addr, dest_addr, cusymd, cus_finish, cus_idate FROM
viewCustomer WHERE cus_gubun1 = '3'
[ 뷰 수정하기 ]
이미 만들어진 뷰에 대해 수정할 부분이 있다면 CREATE 명령어 대신 ALTER 명령어를 사용하시면 됩니다.
--단순화 시킨 ALTER VIEW 구문
ALTER VIEW 뷰의이름
AS
SELECT 문 .........
[ 뷰 삭제하기 ]
뷰의 삭제는 DROP 명령어를 사용합니다.
--DROP VIEW 구문
DROP VIEW 뷰의이름
자료인용
http://www.webmadang.net/database/database.do?action=read&boardid=4001
댓글목록
등록된 댓글이 없습니다.