23/01/19 [Database]

웰치스·2023년 1월 19일
0

<SQL 활용>

📗 데이터정의어(DDL) : Object(객체) 종류

Table

view

  • 사용방법 : select, insert, update, delete
  • 정의방법 : create [or replace] view, alter view

Sequence

  • 사용방법 : 시퀀스명.nextval, 시퀀스명.currval
  • 정의방법 : create sequence, alter sequence, drop sequence

Index

Synonym


📌 2. 데이터정의어(DDL) - View, Sequence

📁 View

: 하나 이상의 Base table을 기반으로 생성은 되었으나 물리적으로 존재하지 않고,
Data Dictionary에 Select 구문 형태로 정의만 되어 있는 가상의 논리적인 테이블

➀ 뷰 생성 및 수정(create [or replace] view)

  • FORCE : base table 존재여부 상관없이 뷰를 생성.
  • NOFORCE : base table이 존재할때만 뷰가 생성됨.
create view empvu80
as select employee_id, last_name, salary
   from employees
   where department_id=80;

create view salvu50
as select employee_id ID_NUMBER, last_name NAME,
          salary*12 ANN_SALARY
   from employees
   where department_id=50;

create or replace view empvu80
(id_number, name, sal, department_id)
as select employee_Id, first_name || ' ' || 
          last_name, salary, department_id
     from employees
     where department_id = 80;

create or replace view dept_sum_vu
(name, minsal, maxsal, avgsal)
as select d.department_name, MIN(e.salary),
          MAX(e.salary), AVG(e.salary)
   from employees e join departments d
   on (e.department_id = d.department_id)
   group by d.department_name;

➁ 뷰 사용 – 테이블과 동일함

  • SQL> desc dept_sum_vu

  • SQL> select * from dept_sum_vu;

  • 뷰를 통한 insert, update, delete 가능
    => 결국 Base table의 data가 조작되어짐.

➂ 뷰 삭제

  • SQL> drop view epmvu80;

📁 Sequence

: 자동으로 고유한 번호를 반환해 주는 번호생성기와 같은 Object

➀시퀀스 생성(create sequence)

  • INCREMENT BY : 시퀀스 번호의 간격 ( default = 1 )
  • START WITH : 시퀀스 번호의 시작값 ( default = 1 )
  • MAXVALUE / MINVALUE : 시퀀스 번호의 최대값 / 최소값
    ( default = NOMAXVALUE / NOMINVALUE : 시스템에 정의되어 있는 값 )
  • CYCLE : 순환여부
  • CACHE : 시퀀스값 저장여부 ( default = cache 20 )

create SEQUENCE dept_id_seq
                INCREMENT by 10
                START WITH 340
                MAXVALUE 1000 
                ;

➁ 시퀀스 사용

  • 시퀀스명.NEXTVAL : 사용가능한 다음 시퀀스값 반환
  • 시퀀스명.CURRVAL : 현재 시퀀스값, 즉 마지막 시퀀스값 반환
insert into departments
values (dept_id_seq.nextval,'AAA',105,1700);

➂ 시퀀스 수정(alter sequence)

  • 시퀀스 간격, 최대값, 최소값, Cycle 옵션, Cache 옵션 변경 가능
  • 시퀀스 시작값 변경 불가(start with N)
    => 시작값 변경하고 싶다면, 삭제하고 다시 만들어야 함!

➃시퀀스 삭제(drop sequence)

  • SQL> drop SEQUENCE dept_id_seq;

📖 Sequence - DB사전

  • SQL> desc user_sequences
select sequence_name, increment_by, max_value, cache_size
from user_sequences;

0개의 댓글