Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 메일왕창보내는법
- iBatis
- ejb
- node.js web framework
- Lift
- Eclipse
- ajax
- Node.js
- 나의 프로젝트
- ror실행
- 명사 뽑아내기
- php thumbnail
- docker
- 도커
- Cross
- php
- express for node.js
- 명사 추출기
- 나의 취미
- scala
- 명사 분석기
- rss
- flex3
- 디즈니씨
- 베트남어
- nodejs express
- 책이야기
- C/C++
- 스킨 스쿠버
- 주식이야기
Archives
- Today
- Total
nkdk의 세상
오라클 DB 설계 및 활용 9일째 1번 내용 본문
*** VIEW 파일 : 물리적인 테이블을 근거로 SELECT 문의 조건을 파일로 작성하여, 가상의 테이블로 사용.
-- VIEW를 사용하는 목적
1. 복잡하고 긴 QUERY문을 단순화 시킬 수 있다.
2. 보안을 강화 할 수 있다.
3. 동일한 데이터로부터 다양한 가상의 테이블을 얻을 수 있다.
SELECT * FROM SAWON;
(실제로 실무에 들어가게 되면 뷰를 사용해서 하는 방식을 사용한다. 테이블은 관리할 때 외에는 사용하지 않느다.)
형식) CREATE [OR REPLACE] VIEW 뷰파일명 AS SELECT문 DROP VIEW 뷰파일명
CREATE VIEW V_A AS SELECT SAWON_NO, SAWON_NAME, SAWON_PAY FROM SAWON WHERE SAWON_IBSAIL < '2000-12-31';
(권한이 없기 때문에 뷰에 대한 권한을 GRANT로 CREATE 해주어야 한다.)
SYSTEM 계정에 들어가서 GRANT 권한을 준다.
SYSTEM 계정 접속후
GRANT CREATE VIEW TO SCOTT;
으로 VIEW 의 CREATE 권한을준다
(뷰 파일은 각 작업자에 할당되는 작업을 가상으로 지정하기 위해서 사용한다. 관리자, 인사담당자, 사장, 일반사원, 과장)
CREATE VIEW V_A AS SELECT SAWON_NO, SAWON_NAME, SAWON_PAY FROM SAWON WHERE SAWON_IBSAIL < '2000-12-31';
SELECT * FROM V_A;
DESC V_A;
DESC USER_VIEWS;
SELECT VIEW_NAME.TEXT FROM USER_VIEWS;
SELECT TEXT FROM USER_VIEWS WHERE VIEW_NAME='V_A';
CREATE VIEW V_B AS SELECT * FROM SAWON WHERE SAWON_NAME LIKE '김%' OR SAWON_NAME LIKE '박%'
SELECT * FROM V_B;
SELECT SAWON_NAME AS 이름, SAWON_PAY AS 연봉 FROM V_B;
RENAME SAWON TO SPRING; <- 이름을 바꿔 보았음
SELECT * FROM V_A; < - 이렇게 하면 원본 테이블이 없기 때문에 에러 표출
RENAME SPRING TO SAWON;
CREATE VIEW V_C AS SELECT * FROM SAWON ORDER BY SAWON_PAY DESC;
SELECT * FROM V_C
CREATE VIEW V_D AS SELECT SAWON_NAME, SAWON_PAY*10000 AS YPAY FROM SAWON;
( 중간에 계산칼럼이 들어가면 꼭 AS 로 별명을 주어라.<-여기 같은 경우 연봉페이 그렇지 않으면 에러가 생긴다. )
CREATE VIEW V_D AS SELECT SAWON_NAME, SAWON_PAY*10000 AS YPAY FROM SAWON;
CREATE VIEW V_E AS SELECT SAWON_NAME, 연봉페이 FROM V_D WHERE YPAY>=30000000;
(뷰에서 자료를 수정하게 되면 원본에 있는 자료도 수정하게 된다.)
UPDATE V_E SET SAWON_NAME='김치국' WHERE SAWON_NAME='홍길동'
SELECT * FROM V_E;
SELECT * FROM V_D;
SELECT * FROM SAWON;
(실제의 원본도 수정된 것을 확인하였다.)
DELETE FROM V_D WHERE SAWON_NAME='최진실'
(이 쿼리문 역시 원본 파일에 있는 최진실의 자료가 없어진다.)
DELETE FROM V_D WHERE SAWON_NAME='채미리';
SELECT * FROM V_D;
UPDATE V_D SET YPAY=55000000 SAWON_PAY ='김치국'
( 이 값은 에러가 나온다. 왜냐하면 YPAY 는 SAWON 테이블에 없기 때문이다.)
CREATE OR REPLACE VIEW V_E AS SELECT SAWON_NO, SAWON_NAME, BUSER_NUM, SAWON_PAY FROM SAWON WHERE SAWON_SEX ='남'
SELECT * FROM V_E;
INSERT INTO V_E VALUES(20,'주호진',10,4000);
SELECT * FROM SAWON;
SELECT * FROM V_E;
(이걸 선택하면 주호진의 자료가 나오지 않는데 그 이유는 V_E의 조건에 만족하지 않기 때문이다.)
한개의 참고 자료를 더 예를 들자면,
CREATE VIEW V_F AS SELECT SAWON_NO, SAWON_NAME, SAWON_IBSAIL FROM SAWON WHERE SAWON_IBSAIL >= '2000-1-1';
SELECT * FROM V_F;
INSERT INTO V_F VALUES(21, '연진호', '2007-5-12');
INSERT INTO V_F VALUES(22, '지연상', '1997-4-1');
SELECT * FROM SAWON;
1부는 여기 까지입니다. 좀 기네요 ^_^
-- VIEW를 사용하는 목적
1. 복잡하고 긴 QUERY문을 단순화 시킬 수 있다.
2. 보안을 강화 할 수 있다.
3. 동일한 데이터로부터 다양한 가상의 테이블을 얻을 수 있다.
SELECT * FROM SAWON;
(실제로 실무에 들어가게 되면 뷰를 사용해서 하는 방식을 사용한다. 테이블은 관리할 때 외에는 사용하지 않느다.)
형식) CREATE [OR REPLACE] VIEW 뷰파일명 AS SELECT문 DROP VIEW 뷰파일명
CREATE VIEW V_A AS SELECT SAWON_NO, SAWON_NAME, SAWON_PAY FROM SAWON WHERE SAWON_IBSAIL < '2000-12-31';
(권한이 없기 때문에 뷰에 대한 권한을 GRANT로 CREATE 해주어야 한다.)
SYSTEM 계정에 들어가서 GRANT 권한을 준다.
SYSTEM 계정 접속후
GRANT CREATE VIEW TO SCOTT;
으로 VIEW 의 CREATE 권한을준다
(뷰 파일은 각 작업자에 할당되는 작업을 가상으로 지정하기 위해서 사용한다. 관리자, 인사담당자, 사장, 일반사원, 과장)
CREATE VIEW V_A AS SELECT SAWON_NO, SAWON_NAME, SAWON_PAY FROM SAWON WHERE SAWON_IBSAIL < '2000-12-31';
SELECT * FROM V_A;
DESC V_A;
DESC USER_VIEWS;
SELECT VIEW_NAME.TEXT FROM USER_VIEWS;
SELECT TEXT FROM USER_VIEWS WHERE VIEW_NAME='V_A';
CREATE VIEW V_B AS SELECT * FROM SAWON WHERE SAWON_NAME LIKE '김%' OR SAWON_NAME LIKE '박%'
SELECT * FROM V_B;
SELECT SAWON_NAME AS 이름, SAWON_PAY AS 연봉 FROM V_B;
RENAME SAWON TO SPRING; <- 이름을 바꿔 보았음
SELECT * FROM V_A; < - 이렇게 하면 원본 테이블이 없기 때문에 에러 표출
RENAME SPRING TO SAWON;
CREATE VIEW V_C AS SELECT * FROM SAWON ORDER BY SAWON_PAY DESC;
SELECT * FROM V_C
CREATE VIEW V_D AS SELECT SAWON_NAME, SAWON_PAY*10000 AS YPAY FROM SAWON;
( 중간에 계산칼럼이 들어가면 꼭 AS 로 별명을 주어라.<-여기 같은 경우 연봉페이 그렇지 않으면 에러가 생긴다. )
CREATE VIEW V_D AS SELECT SAWON_NAME, SAWON_PAY*10000 AS YPAY FROM SAWON;
CREATE VIEW V_E AS SELECT SAWON_NAME, 연봉페이 FROM V_D WHERE YPAY>=30000000;
(뷰에서 자료를 수정하게 되면 원본에 있는 자료도 수정하게 된다.)
UPDATE V_E SET SAWON_NAME='김치국' WHERE SAWON_NAME='홍길동'
SELECT * FROM V_E;
SELECT * FROM V_D;
SELECT * FROM SAWON;
(실제의 원본도 수정된 것을 확인하였다.)
DELETE FROM V_D WHERE SAWON_NAME='최진실'
(이 쿼리문 역시 원본 파일에 있는 최진실의 자료가 없어진다.)
DELETE FROM V_D WHERE SAWON_NAME='채미리';
SELECT * FROM V_D;
UPDATE V_D SET YPAY=55000000 SAWON_PAY ='김치국'
( 이 값은 에러가 나온다. 왜냐하면 YPAY 는 SAWON 테이블에 없기 때문이다.)
CREATE OR REPLACE VIEW V_E AS SELECT SAWON_NO, SAWON_NAME, BUSER_NUM, SAWON_PAY FROM SAWON WHERE SAWON_SEX ='남'
SELECT * FROM V_E;
INSERT INTO V_E VALUES(20,'주호진',10,4000);
SELECT * FROM SAWON;
SELECT * FROM V_E;
(이걸 선택하면 주호진의 자료가 나오지 않는데 그 이유는 V_E의 조건에 만족하지 않기 때문이다.)
한개의 참고 자료를 더 예를 들자면,
CREATE VIEW V_F AS SELECT SAWON_NO, SAWON_NAME, SAWON_IBSAIL FROM SAWON WHERE SAWON_IBSAIL >= '2000-1-1';
SELECT * FROM V_F;
INSERT INTO V_F VALUES(21, '연진호', '2007-5-12');
INSERT INTO V_F VALUES(22, '지연상', '1997-4-1');
SELECT * FROM SAWON;
1부는 여기 까지입니다. 좀 기네요 ^_^