11-4. 뷰를 통한 DML 작업 수행에 관한 규칙 > 학습자료 | IOTsw_u2 U2 Project
학습자료

SQL 11-4. 뷰를 통한 DML 작업 수행에 관한 규칙

본문

 

DML 작업이 특정 규칙을 따르는 경우 뷰를 통해 데이터에 대한 DML 작업을 수행할 수 있다.

 

① 뷰가 다음을 포함하는 경우 행을 제거할 수 없다.

․ 그룹 함수

MSSQL 디비 예제

--// 두 테이블을 조인해서 만든 뷰에서의 삭제와 수정

create table viewupd1

(

c1 int primary key,

c2 int

)

create table viewupd2

(

c1 int primary key,

c3 int

)

insert viewupd1 values(1,1)

insert viewupd2 values(1,1)

․ GROUP BY절

․ DISTINCT 키워드

․ 의사 열 ROWNUM 키워드

② 뷰에 다음이 포함된 경우 데이터를 수정할 수 없다.

․ 그룹 함수

․ GROUP BY 절

․ DISTINCT 키워드

․ 의사 열 ROWNUM 키워드

․ 표현식에 의해 정의된 열

③ 뷰에 다음이 포함된 경우 뷰를 통해 데이터를 추가할 수 없다.

․ 그룹 함수

․ GROUP BY절

․ DISTINCT 키워드

․ 의사 열 ROWNUM 키워드

․ 표현식에 의해 정의된 열

․ 기본 테이블에서 뷰에 의해 선택되지 않은 열에 NOT NULL 제약 조건이 있는 경우

나열된 항목이 포함되어 있거나, 기본 테이블의 열중에 뷰에 의해 선택되지 않은 NOT NULL 열이 있는데 이 열에 기본값

이 지정되어 있지 않은 경우에는 뷰를 통해 데이터를 추가할 수 없다.

뷰에 필수 항목에 대한 값이 모두 있어야 데이터를 추가할 수 있다.

뷰를 통해 값을 직접 기본 테이블에 추가한다는 점을 기억해야 한다.

예제)

오라클 디비 예제 : CREATE VIEW dept_sum_vu

(naem, minsal, maxsal, avgsal)

AS

SELECT d.department_name, MIN(e.salary),

MAX(e.salary), AVG(e.esalary)

FROM employees e, departments d

WHERE e.department_id = d.department_id

GROUP BY d.departement_name;

☞설명) 위 뷰를 질의 한다는 것은

SELECT * FROM dept_sum_vu;

즉,

SELECT d.department_name, MIN(e.salary),

MAX(e.salary), AVG(e.esalary)

FROM employees e, departments d

WHERE e.department_id = d.department_id

GROUP BY d.departement_name;

의 결과를 확인 하겠다는 것이다.

질의에 대한 결과는 한수에 의해 연산된 결과를 가지고 있는 것이므로 연산된 값을 임의적으로 수정 하거나 삭제할 수 없

는 것이므로 뷰를 통해서도 함수에 의해 연산된 결과를 보여주는 뷰인 경우엔 DML문을 사용 할 수 없다.

create view v_viewupd => 복합 뷰 생성

as

select t1.c1, t1.c2, t2.c3

from viewupd1 t1 join viewupd2 t2

on t1.c1 = t2.c1

select * from v_viewupd

c1 c2 c3

-------------

1 1 1

update v_viewupd

set c2 = 10

where c1 = 1

select * from v_viewupd -->view

c1 c2 c3

-------------

1 10 1

select * from viewupd1 --> table

c1 c2

---------

1 10

update v_viewupd

set c3 = 10

where c1 = 1

select * from v_viewupd

c1 c2 c3

--------------

1 10 10

select * from viewupd2 --> table

c1 c3

---------

1 10

update v_viewupd

set c2=20, c3=20

where c1=1

-- 한번에 여러개의 테이블에 적용시킬 수는 없다.

-- 한 테이블씩 변경을 해야한다.

--//뷰의 서브쿼리 확인

sp_helptext v_viewupd 

댓글목록

11. 뷰란
이어쓰기 1.A 11-1. 뷰에서 데이터 검색
이어쓰기 2.B 11-2. 뷰 수정
이어쓰기 3.C 11-3. 복합뷰 생성
이어쓰기 4.D 11-4. 뷰를 통한 DML 작업 수행에 관한 규칙
이어쓰기 5.E 11-5. WITH CHECK OPTION 절 사용
이어쓰기 6.F 11-6. DML 작업 거부
이어쓰기 7.G 11-7. 뷰 제거
이어쓰기 8.H 11-8. 인라인 뷰
이어쓰기 9.I 11-10. "Top-N"분석
이 원글에 이어쓰기

학습자료 목록

Total 91건 1 페이지
게시물 검색

IOTsw_u2 정보

회사 . U2
주소 . 어느별 하늘 아래에 있것지요
사업자 등록번호 . 백수임 대표 . 김씨 전화 . 02-123-4567 팩스 . 팩스없음
통신판매업신고번호 . 낼할께 개인정보관리책임자 . 김씨가 알아서 함 부가통신사업신고번호 신고안함
Copyright © 2001-2013 U2. All Rights Reserved.
닫기