Database
[SQL]시퀀스 그리고 트리거 그리고 뷰
어텀잉
2023. 10. 13. 16:35
728x90
반응형
SMALL
Object(객체)
시퀀스(Sequence) :
- 데이터베이스에서 사용되는 객체
- 일련의 숫자를 생성하는데 주로 사용
- 고유한 값, 주로 기본키 또는 고유 식별자 생성에 사용
CREATE SEQUENCE 어떤값의_id
START WITH 1
INCREMENT BY 1
NOMAXVALUE
NOCYCLE;
===================================코드해석==================================================
CREATE SEQUENCE --> 시퀀스를 생성하는 명령어
어떤값의_id --> 생성하려는 시퀀스의 이름을 지정 데이터베이스에서 해당 시퀀스를 식별하는데 사용
START WITH 1 --> 시퀀스의 초기 시작 값을 1로 설정
INCREMENT BY 1 --> 시퀀스의 각 값이 1씩 증가하도록 설정
NOMAXVALUE --> 시퀀스가 최대값에 도달하지 않도록 설정
NOCYCLE --> 시퀀스가 최대값에 도달하면 다시 처음으로 돌아가지 않도록 설정
트리거(Trigger) :
- 데이터베이스에서 발생하는 특정 이벤트에 반응하여 자동으로 실행되는 SQL 코드 조각
- 데이터베이스의 상태를 감시하고 데이터 변경, 삽입, 업데이트 또는 삭제와 같은 작업을 행할 수 있음
CREATE OR REPLACE TIGGER 어떤값의_id
BEFORE INSERT ON 테이블
FOR EACH ROW
BEGIN
SELECT 어떤값의_id_seq.NEXTVAL
INTO : NEW.어떤값의_id
FROM dual;
END;
/
========================================코드해석===========================================
CREATE OR REPLACE TIGGER --> 트리거를 생성 또는 변경하는 명령
OR REPLACE --> 이미 동일한 이름의 트리거가 있는 경우 덮어쓰기를 허용
어떤값의_id --> 생성하려는 트리거의 이름 지정 데이터베이스에서 해당 트리거를 식별하는데 사용
BEFORE INSERT ON 테이블 --> 테이블에 행이 삽입되기 전에 실행
FOR EACH ROW --> 트리거가 각 행별로 실행되도록 설정, 트리거 내에서 현재 행을 참조할 수 있도록 함
BEGIN 및 END --> 블록을 정의 블록 내에서 틀리거나 수행할 작업을 정의할 수 있음
현재 행에 대한 작업을 수행하거나 다른 로직을 실행하는데 사용
VIEW => 논리적 객체
- 실제로 데이터를 저장하지 않고 쿼리 결과를 나타내는 가상 테이블
- 뷰 자체에서는 데이터를 저장하거나 변경하기 않기 때문에 DML명령(INSERT, UPDATE, DELETE)을 통해 뷰를 직접 수정하는 것은 일반적으로 제한
<VIEW 코드 형식>
CREATE VIEW 뷰이름생성 AS
SELECT
넣고자하는 컬럼
FROM 테이블명
JOIN;
<VIEW 사용예제>
CREATE VIEW cafe_order_menu AS
SELECT
o.order_id,
c.name AS cafe_name,
m.menu_name,
o.order_date,
o.quantity,
m.price,
(o.quantity * m.price) AS total_price
FROM
orders o
JOIN cafes c ON o.cafe_id = c.cafe_id
JOIN menu m ON o.menu_id = m.menu_id;
index (인덱스) :
- 데이터베이스 성능을 향상시키는 데 중요한 역할을 하는 데이터 구조
- 특정 열(컬럼)에 대한 검색 및 조회 작업을 최적화 하기 위해 사용
--INDEX를 사용할 employee 테이블을 먼저 생성
CREATE TABLE OCACLE (
employee_id NEBER(5) PRIMARY KEY,
name VARCHAR2(50),
hire_date DATE
);
인덱스 생성
<코드 형식>
CREATE INDEX 생성해놓은인덱스이름 ON 테이블 (어떤 열의 값을 기반으로 검색을 빠르게 하기 위해 작성하는 컬럼이름);
<코드 사용예제>
CREATE INDEX index_ORACLEtable ON ORACLE(name);
인덱스를 사용한 select 예제문
SELECT * FROM employee WHERE name = 'ORACLEBABY';
* index는 B-Tree 구조로 되어있음
B-Tree : 데이터를 저장하고 효율적으로 검색하는데 사용되는 데이터 구조
Balanced Tree 주로 데이터베이스 시스템, 파일시스템, 디스크관리, 파일구조, 검색엔진 등 다양한 컴퓨팅 시스템에서 인덱싱에 사용
728x90
반응형
LIST