▶ TRIGGER(트리거) - 내가 지정한 테이블에 INSERT, UPDATE, DELETE등의 DML문에 의해 변경사항이 생길 때(테이블에 특정 이벤트가 발생했을 때) 자동으로 매번 실행할 내용을 미리 정의해둘 수 있는 객체 예시) 회원탈퇴시 기존의 회원테이블에 데이터 DELETE후 곧바로 탈퇴된 회원들만 따로 보관하는 테이블에 자동으로 INSERT처리해야 될 때 신고 횟수가 일정수를 넘었을 때 묵시적으로 해당 회원을 블랙리스트 처리되게끔 한다거나 입출고에 대한 데이터가 기록(INSERT)될 때마다 해당 상품에 대한 재고수량을 매번 수정(UPDATE)해야 될 때 ■ 트리거의 종류 ● SQL문의 시행시기에 따른 분류 BEFORE TRIGGER : 내가 지정한 테이블에 이벤트(INSERT, UPDATE, ..
▶ PROCEDUER(프로시져) - PL/SQL구문을 "저장"해서 이용하는 객체 - 필요할때마다 내가 작성한 PL/SQL문을 편하게 호출이 가능하다. [표현법] CREATE [OR REPLACE] FROCEDURE 프로시져명[(매개변수)] IS BEGIN 실행부분 END; [프로시져 실행방법] EXEC 프로시져명; / ex) -- 프로시져 생성하기 CREATE OR REPLACE PROCEDURE DEL_DATA IS BEGIN DELETE FROM PRO_TEST; COMMIT; END; / -- 프로시져 실행 EXEC DEL_DATA; ■ 매개변수 있는 프로시져 만들기 IN : 프로시져 실행시 필요한 값을 담는 변수(일반적인 매개변수와 동일한 개념) OUT : 호출한 곳으로 되돌려주는 변수(결과값) ..
▶ PL/SQL(PROCEDURE LANGUAGE EXTENSION TO SQL) - 오라클 자체에 내장되어 있는 절차적 언어이다. - SQL문장 내에서 변수의 정의, 조건처리(IF), 반복처리(LOOP, FOR, WHILE), 예외처리 등을 지원하여 SQL의 단점을 보완 - 다수의 SQL문을 한 번에 실행 가능(BLOCK구조) ■ PL/SQL 구조 - [선언부 (DECLARE SECTION)] : DECLARE로 시작, 변수나 상수를 선언 및 초기화하는 부분 - 실행부 (EXECUTABLE SECTION) : BEGIN으로 시작해서 END로 끝, SQL문(SELECT, UPDATE, DELETE, ..) 또는 제어문(조건문, 반복문) 등의 로직을 기술하는 부분 - [예외처리부 (EXCEPTION SEC..
▶ INDEX - 데이터를 빠르게 검색하기 위한 구조, 데이터의 정렬과 탐색같은 DBMS의 성능향상을 목적으로 사용한다. ■ 인덱스의 특징 - 인덱스로 설정한 컬럼의 데이터들을 별도로 "오름차순으로 정렬"하여 특정 메모리 공간에 물리적인 주소(ROWID) 실제 컬럼의 값을 함께 저장시킨다. - 인덱스를 만들었다고 해서 조건절에 인덱스를 활용한 컬럼을 제시했을 때 바로 사용하지는 않는다. - 인덱스를 활용하여 조회할지 안할지는 옵티마이저가 판단한다. ● 현재 계정에 생성된 인덱스들 확인 SELECT * FROM USER_INDEXES; -- PK설정시 자동으로 인덱스 생성됨. ● 현재 계정에 생성된 인덱스와 + 인덱스가 적용된 컬럼을 확인 SELECT * FROM USER_IND_COLUMNS; ■ 인덱스..
▶ SEQUENCE(시퀀스) - 자동으로 번호를 발생시켜주는 역할을 하는 객체이다. - 정수값을 자동으로 순차적으로 발생시켜준다. - 시퀀스가 가장 많이 사용되는 위치는 INSERT문의 PK값에 넣을 때이다. ■ 시퀀스객체 생성 구문 [표현법] CREATE SEQUENCE 시퀀스명 START WITH 시작 숫자 => 생략 가능하다. 처음 발생시킬 시작값 기본값은 1 INCREMENT BY 증가값 => 생략 가능하다. 기본값은 1씩 증가, 한번 시퀀스 증가할때마다 몇 씩 증가할 것인지 결정 MAXVALUE 최대값 => 생략 가능하다. 최대값 지정 MINVALUE 최소값 => 생략 가능하다. 최소값 지정 CYCLE/NOCYCLE => 생략 가능하다. 값의 순환여부를 결정한다. 기본값은 NOCYCLE CACH..
▶ OBJECT - 데이터베이스를 이루는 논리적인 구조물들 ■ OBJECT의 종류 - TABLE, USER, VIEW, SEQUENCE, INDEX, PACKAGE, TRIGGER, FUNCTION, ... ▶ 뷰(VIEW) - SELECT문을 저장해 둘 수 있는 객체 - 자주쓰일 긴 SELECT문을 VIEW에 저장해두면 매번 긴 SELECT문을 다시 기술할 필요가 없다. - 조회용 임시테이블 같은 존재(실제 데이터가 담겨있는 것은 아니다.) - 해당 계정이 가지고 있는 VIEW들에 대한 내용을 조회하고자 한다면 USER_VIEWS 데이터 딕셔너리를 이용하면 된다. - 생성된 뷰를 이용해서 DML(INSERT, UPDATE, DELETE)사용 가능하다. ※ 주의사항 : 뷰를 통해서 조작하게 된다면 실제 ..