공부/데이터베이스 2021. 5. 15. 02:00
반응형

select를 한 결과를 가상 테이블에 저장한 것

가상 테이블이 뷰임

=> 하나의 테이블에 대하여 서로 다른 관점으로 보기 원할때,

=> 일반 사용자에게는 감추어야할 컬럼이 있을때 그것을 제외하고 뷰를 만들어 제공하여 보안 유지

=> 자주 사용하는 복잡한 질의문을 미리 뷰로 정의하여 두고 간편하게 사용할 때

=> 물리적인 데이터를 갖지 않음

=> 뷰 갱신연산은 경우에따라 실행(view에 정의된 것)될 수 도 안될(뷰에 정의되지 않은 값 ex) not null인데 null입력) 수도 있음

 

- 뷰 생성

CREATE VIEW 뷰이름 AS SELECT 칼럼이름 FROM 테이블이름 WHERE 조건;

EX) CREATE VIEW v1 AS SELECT name, age FROM tb1;

SELECT * FROM v1;

 

- 뷰에서 칼럼 값 변경

뷰는 참조 테이블의 일부분을 표시함

따라서 참조 테이블의 값이 변경되면 뷰의 값도 변경

뷰는 참조 테이블의 일부분을 표시하면서 참조테이블의 데이터 창구이기도 함

따라서 뷰의 값이 변경되면 참조 테이블의 값도 변경

ex) UPDATE v1 SET name='주임 강신우' WHERE name='강신우';

 

- 뷰에서 INSERT ??

뷰는 가상테이블이므로, 뷰에 INSERT하는 것은 테이블의 일부에만 데이터를 추가하게 되는 것임

값을 추가하지 않은 칼럼은 default 값이 입력된다.

UNION이나 JOIN, 하위질의를 사용하는 뷰에선 INSERT나 UPDATE를 사용할 수 없다.

 

- 뷰의 조건에 맞지 않는 값 뷰에 추가

ex) create view v3 as select number, sales from tb where sales>=100;

sales가 100이상인 조건의 뷰 v3를 만들고 v3에 sales가 100보다 작은 값을 넣으면 어떻게 될까?

INSERT INTO v3 VALEUS('test', 90);

 

SELECT * FROM v3;   ==> 기존과 동일하게 보인다. 

SELECT number, sales FROM tb1;  ==> test, 90이라는 값이 추가된 것을 알 수 있다.

 

 

- 뷰의 조건에 맞지 않는 값 뷰에 추가시 제한걸기

create view v4 as create number, sales from tb where sales>100 with check option;

뷰 생성시 with check option을 추가하면 조건에 맞지 않는 데이터를 추가하지 못하게 한다.

위 예에선 sales가 100이하인 값을 추가하지 못하게 된다.

 

- 뷰 덮어쓰기

이미 같은 이름의 뷰가 존재할때 덮어쓰기하여 뷰를 생성

 

CREATE OR REPLACE VIEW v1 AS  select now();

와 같이 CREATE OR REPLACE VIEW라고 해주면 된다.

 

그러면 기존 뷰 v1은 삭제되고 now를 표시하는 새로운 뷰 v1이 생성된다.

뷰의 존재 여부에 상관없이 뷰를 생성할 수 있게 해주는 방법이다.

 

- 뷰 칼럼 구조 변경

ALTER VIEW 뷰이름 AS SELECT 칼럼이름 FROM 테이블이름;

EX) ALTER VIEW v1 AS SELECT name, age FROM tb1;

 

- 뷰 삭제

DROP VIEW 뷰이름;

*삭제할 뷰가 없는 경우 오류가 발생하므로 IF EXISTS 사용

ex) DROP VIEW IF EXISTS v1;

 

 

 

 

 

728x90
반응형

'공부 > 데이터베이스' 카테고리의 다른 글

뷰 예제  (0) 2021.05.15
저장 프로시저  (0) 2021.05.15
데이터베이스 예제 4  (0) 2021.04.20
데이터베이스 예제 3  (0) 2021.04.20
데이터베이스 예제 2  (0) 2021.04.20
블로그 이미지

아상관없어

,