Database

    [Oracle] OBJECT(3) - TRIGGER

    내가 지정한 테이블에 INSERT, UPDATE, DELECT 등 DML문에 의해 변경사항이 생길 때 (테이블에 이벤트가 발생했을 때) 자동으로 매번 실행할 내용을 미리 정의해둘 수 있는 객체 EX) 회원탈퇴시 기존의 회원테이블에 데이터를 DELETE 후 곧바로 탈퇴한 회원들만 따로 보관하는 테이블에 자동으로 INSERT 처리해야된다! 신고 횟수가 일정 수를 넘었을 때 묵시적으로 해당 회원을 블랙리스트로 처리되게끔 입출고에 대한 데이터가 기록(INSERT)될 때 마다 해당 상품에 대한 재고수량 매번 수정(UPDATE)해야 될 때 * 트리거 종류 - SQL문의 실행시기에 따른 분류 > BEFORE TRIGGER : 내가 지정한 테이블에 이벤트가 발생되기 전에 트리거 실행 > AFRER TRIGGER : 내..

    [Oracle] PL/SQL

    PROCEDURE LANGUAGE EXTENSION TO SAL 오라클 자체에 내장되어 있는 절차적 언어 SQL 문장내에서 변수의 정의, 조건처리(IF), 반복처리(LOOP, FOR, WHILE) 등을 지원하여 SQL의 단점 보완 다수의 SQL문을 한 번에 실행 가능 (BLOCK 구조) + 예외처리도 가능 * PL / SQL 구조 - [선언부] : DECLARE 변수나 상수를 선언 및 초기화 하는 부분 - 실행부 : BEGIN으로 시작, 무조건 있어야함! SQL문 또는 제어문 (조건문, 반복문) 등의 로직을 기술하는 부분 - [예외처리부] : EXCEPTION으로 시작, 예외 발생시 해결하기 위한 구문을 미리 기술해둘 수 있는 구문 SET SERVEROUTPUT ON; -- * 간..

    [Oracle] OBJECT(2) - SEQUENCE

    자동으로 번호 발생시켜주는 역할을 하는 객체 정수값을 순차적으로 일정값씩 증가시키면서 생성해줌 (기본적으로는 1씩 증가) EX) 회원번호, 사원번호, 게시글번호 등 절대 겹쳐서는 안되는 데이터들.. 1. 시퀀스 객체 생성 [표현식] CREATE SEQUENCE 시퀀스명 [상세 표현식] CREATE SEQUENCE 시퀀스명 [START WITH 시작숫자] -- 처음 발생시킬 시작값 지정 (기본값 1) [INCREMENT BY 숫자] -- 몇 씩 증가시킬껀지 (기본값 1) [MAXVALUE 숫자] -- 최대값 지정 (기본값 겁나큼...) [MINVALUE 숫자] -- 최소값 지정 (기본값 1) [CYCLE|NOCYCLE] -- 값 순환 여부 지정 (기본값 NOCYCLE) => ..

    [Oracle] OBJECT(1) - VIEW

    SELECT (쿼리문)을 저장해둘 수 있는 객체 (자주 쓰는 긴 SELECT문을 저장해두면 그 긴 SELECT문을 매번 다시 기술할 필요없음!!!) 임시테이블 같은 존재(실제 데이터가 담겨있는 건 아님!!) => 보여주기용 물리적인 테이블 : 실제! 논리적인 테이블 : 가상! => 뷰는 논리적인 테이블이다! SELECT * FROM EMPLOYEE; -- DEPT_cODE SELECT * FROM DEPARTMENT; -- LOCATION_ID SELECT * FROM LOCATION; SELECT * FROM NATIONAL; -- '한국'에서 근무하는 사원들의 사번, 이름, 부서명, 급여, 근무국가명 조회 SELECT EMP_ID, EMP_NAME, DEPT_TITLE, SALAR..

    [Oracle] TCL(TRANSACTION CONTROL LANGUAGE)

    트랜젝션 제어 언어 * 트랜젝션(TRANSACTION) - 데이터베이스의 논리적 연산단위 - 데이터의 변경사항 (DML 추가, 수정, 삭제)들을 하나의 트랜젝션에 묶어서 처리 DML문 한 개를 수행할 때 트랜젝션이 존재하면 해당 트랜젝션에 같이 묶어서 처리 트랜젝션이 존재하지 않으면 트랜젝션 만들어서 묶음 COMMIT 하기 전까지 변경사항들을 하나의 트랜젝션에 담게됨 커밋을 해야만이 실제 DB에 반영이 된다고 생각하면 됨! - 트랜젝션의 대상이 되는 SQL : INSERT, UPDATE, DELETE (DML) COMMIT(트랜젝션 종료 처리 후 확정) ROLLBACK(트랜젝션 취소) SAVEPOINT(임시저장) - COMMIT; 진행..

    [Oracle] DCL(DATA CONTROL LANGUAGE), ROLE

    데이터 제어 언어 계정에게 시스템권한 또는 객체접근권한을 부여(GRANT)하거나 회수(REVOKE)하는 구문 > 시스템 권한 : DB에 접근하는 권한, 객체들을 생성할 수 있는 권한 > 객체접근권한 : 특정 객체들을 조작할 수 있는 권한 * 시스템권한 종류 - CREATE SESSION : 접속 할 수 있는 권한 - CREATE TABLE : 테이블을 생성할 수 있는 권한 - CREATE VIEW : 뷰를 생성할 수 있는 권한 - CREATE SEQUENCE : 시퀀스를 생성할 수 있는 권한 ... : 일부는 커넥트안에 포함돼있음!!! -- 1. SAMPLE / SAMPLE 계정 생성 (관리자계정) CREATE USER SAMPLE IDENTIFI..

    [Oracle] DDL_실습문제

    실습문제 도서관리 프로그램을 만들기 위한 테이블을 만들기 이때, 제약조건에 이름을 부여할 것 각 컬럼에 주석달기 1. 출판사들에 대한 데이터를 담기 위한 출판사 테이블(TB_PUBLISHER) 컬럼: PUB_NO(출판사번호) 기본키(PUBLISHER_PK) PUB_NAME(출판사명) NOT NULL(PUBLICHSER_NN) PHONE(출판사전화번호) 제약조건 없음 3개 정도의 샘플 데이터 추가하기 CREATE TABLE TB_PUBLISHER( PUB_NO VARCHAR2(10) CONSTRAINT PUBLISHER_PK PRIMARY KEY, PUB_NAME VARCHAR2(20) CONSTRAINT PUBLISHER_NN NOT NULL, PHONE VARCHAR2(13) ); INSERT INTO..

    [Oracle] DDL(2) - ALTER, DROP

    DDL (DATA DEFINITION LANGUAGE) : 데이터 정의 언어 객체들을 생성(CREATE), 변경(ALTER), 삭제(DROP) 하는 구문 객체를 변경하는 구문 [표현식] ALTER TABLE 테이블명 변경할내용; * 변경할내용 1) 컬럼 추가/수정/삭제 2) 제약조건 추가/삭제 --> 수정은 불가 (수정하고자 한다면 삭제한 후 새로이 삭제 후 추가) 3) 컬럼명/제약조건명/테이블명 수정 1) 컬럼 추가 / 수정 / 삭제 --1_1) 컬럼추가(ADD) : ADD 컬럼명 자료형 [DEFAULT 기본값] 제약조건 -- DEPT_COPY에 CNAME 컬럼 추가 ALTER TABLE DEPT_COPY ADD CNAME VARCHAR2(20); --> 새로운 컬럼이 만들어지고 기본..