2009. 3. 14. 03:33 Program.../Oracle
Oracle View
--- ○ View
create or replace view v_sawonexpire
as
select Y.*,
add_months(to_char(sysdate,'yyyy') || '-02-05', 12*(60-Y.현재나이)) "정년일",
trunc(add_months(to_char(sysdate,'yyyy') || '-02-05', 12*(60-Y.현재나이)) - sysdate,0) "남은일수",
trunc(sysdate - to_date(Y.입사일,'yyyy-mm-dd'),0) "근무일"
from (select case when substr(minbun,7,1) in ('1','2')
then extract(year from sysdate) - (to_number(substr(minbun,1,2)) + 1899)
when substr(minbun,7,1) in ('3','4')
then extract(year from sysdate) - (to_number(substr(minbun,1,2)) + 1999)
end "현재나이",
to_char(hiredate,'yyyy-mm-dd') "입사일"
from SAWON) Y;
--- create or replace view 뷰명 as (문장) : 해당문장을 지정한 뷰명으로 만들되
-- 해당 뷰명이 있으면 replace(교체) 하고 없으면
-- 새롭게 생성한다.
select * from v_sawonexpire;
select *
from v_sawonexpire
where extract(year from to_date(정년일,'yyyy-mm-dd')) >= 2050; -- 뷰 사용한 예제
create or replace view v_emp10
as
select empno, ename, sal
from emp
where deptno = 10;
select * from v_emp10;
create or replace view v_emp10
as
select empno, ename, sal, comm, coalesce(sal*12+comm, sal*12, 0) "YearPay"
-- 원래 테이블에 있는 순수한 컬럼이 아니고 수식을 컬럼처럼 출력할때는 별칭을 해주어야한다.
from emp
where deptno = 10;
create or replace view v_emp10(사원번호, 사원명, 연봉) -- 뷰명 옆에 직접 별칭을 줄수 있다.
as
select empno, ename, coalesce(sal*12+comm, sal*12, 0)
from emp
where deptno = 10;
select 사원명 --- view를 사용한 예시문
from v_emp10
where 연봉 >= 2000
--// view와 view, 테이블과 view 모두 join이 되어진다.
--------------------------------------------------------------------------------------------------
-- view의 원본소스를 보자.
select * from tab; -- 해당유저의 테이블과 뷰를 모두 보여준다.
select *
from user_views
where view_name = 'V_SAWONEXPIRE'; -- 해당 뷰의 정보를 나타낸다.
select text
from user_views
where view_name='V_SAWONEXPIRE'; -- 해당 뷰의 텍스트 정보를 나타낸다.
'Program... > Oracle' 카테고리의 다른 글
Oracle sqlldr 실습 및 Index (0) | 2009.03.14 |
---|---|
Oracle sqlldr (외부데이타 부워넣기) 사용법 (0) | 2009.03.14 |
Oracle 테이블 관리 (0) | 2009.03.14 |
Oracle constraint(제약조건) (0) | 2009.03.14 |
Oracle 유저 생성,삭제 및 테이블, 테이블스페이스 생성, 삭제 (0) | 2009.03.14 |