가상 컬럼
하나의 테이블에 존재하는 다른 컬럼들을 이용하여 새로운 값을 만들어 내는 것
( Virtual Column은 테이블에있는 하나 이상의 컬럼값을 기반으로 계산식을 적용할 수 있는 기능이다.)
컬럼명 타입 GENERATED ALWAYS AS 표현식 VIRTUAL
create table vtable
(
no1 number,
no2 number,
no3 number GENERATED ALWAYS as (no1+no2) virtual
)
insert into vtable(no1, no2)
values (100, 200);
가상열에는 insert를 할 수 없다. ( 오류발생함)
select *
from vtable;
데이터를 업데이트 해도
update vtable
set no1 = 300
where no1 = 100;
잘 변경되어있다.
가상 컬럼 추가도 가능하다.
alter table vtbl_1
add(no4 generated always as ((no1*12)+no2) virtual);
이런식으로
예제
입고일을 통해 몇분기인지 계산할수 있지만
분기에 대한 조회가 많은경우에 따로 컬럼을 생성해준다.
그때 분기를 계산해주는 가상컬럼을 생성해줄수있다.
--실무에서 활용되는 코드
-- 제품정보 (입고) : 분기별 데이터 추출(4분기)
create table vtable2(
no number, --순번
p_code char(4), --제품코드 (A001 , B003)
p_date char(8), --입고일 (20230101)
p_qty number, --수량
p_bungi number(1) GENERATED ALWAYS as (
case when substr(p_date,5,2) in ('01','02','03') then 1
when substr(p_date,5,2) in ('04','05','06') then 2
when substr(p_date,5,2) in ('07','08','09') then 3
else 4
end
) VIRTUAL
);
insert into vtable2(p_date) values('20220101');
insert into vtable2(p_date) values('20220522');
insert into vtable2(p_date) values('20220601');
insert into vtable2(p_date) values('20221111');
insert into vtable2(p_date) values('20221201');
commit;
select * from vtable2;
'데이터베이스 > Oracle' 카테고리의 다른 글
Sequence 시퀀스 (0) | 2024.04.04 |
---|---|
view (뷰) (0) | 2024.04.04 |
oracle 테이블 복사 및 구조 복사 , PL-SQL(반복문) (0) | 2024.04.03 |
서브쿼리 (subQuery) [스칼라,인라인 뷰,중첩] // all any some 연산자 (0) | 2024.04.02 |
inner Join, Outer Join (0) | 2024.04.02 |
댓글