썸네일 트랜잭션(Transaction) 제어 데이터베이스의 트랜잭션은 ACID라고 불리는 네 가지 특성을 가진다. 특성 설명 원자성(Acomicity) 트랜잭션이 일부분만 실행되는 일이 발생하지 않을 것을 보장한다. 트랜잭션의 한 오퍼레이션이 실패하면 전체 트랜잭션이 실패하고 데이터베이스는 변경되지 않는다. 일관성(Consistency) 트랜잭션의 실행 전후에 데이터베이스는 항상 유효한 상태를 가질 것을 보장한다. 데이터베이스는 선언적인 업무 규칙(데이터 타입, 제약조건, 트리거 등)은 물론이고 응용 프로그램에서 의도하는 모든 업무규칙을 만족시킨다. 고립성(Isolation) 동시 실행된 트랜잭션의 결과는 트랜잭션이 순차적으로 실행되었을 때의 결과와 동일함을 보장한다. 트랜잭션의 수행에 다른 트랜잭션의 오퍼레이션이 끼어들어 처리결과를 바꿀 수 없다..
SQL - MERGE, DELETE문의 사용 MERGE문 사용 UPSERT(UPDATE + INSERT)라고도 불리는데 INSERT문과 UPDATE문을 결합하여 조건에 해당하는 데이터가 존재하지 않을 시에는 INSERT문을 실행하고 존재하는 경우에는 UPDATE문과 부가적으로 DELETE문을 실행할 수 있도록 하는 SQL문 -- 간단한 MERGE문 BEGIN MERGE INTO emp a USING DUAL ON (a.empno = 9000) WHEN MATCHED THEN-- 사번이 9000인 로우 존재 시 UPDATE SET a.comm = a.comm * 1.1 WHEN NOT MATCHED THEN-- 사번이 9000인 로우 존재하지 않을 시 INSERT(empno, ename, job, hiredate, sal, deptno) VALUES..
SQL - SELECT, INSERT, UPDATE 사용 SELECT문의 사용 기본 사용법 DECLARE v_cnt NUMBER; BEGIN SELECT COUNT(*) INTO v_cnt FROM emp; DBMS_OUTPUT_PUT_LINE('COUNT(*) = ' || v_cnt); END; SELECT문의 특징은 쿼리를 실행하여 결과값을 가져오는 것이다. SELECT문이 실행되어 COUNT(*)의 결과가 계산되면 그 결과는 INTO 다음에 나타나는 PL/SQL 출력 변수인 v_cnt에 저장된다. SELECT절에 여러 개의 칼럼이 조회되는 경우는 밑의 코드와 같이 칼럼목록을 콤마로 분리하여 나열한다. SELECT되는 칼럼의 수와 동일한 개수의 출력 변수가 INTO절에 나열되는 것에 주의하라. DECLARE v_empno emp.empno%TYPE; v_e..
표현식 - 2 연산자의 종류 산술연산자 산술연산의 결과는 숫자 또는 NULL이다. 산술 연산자는 일반적인 사칙연산을 말한다. 논리연산자 논리 연산자는 TRUE, FALSE와 같은 논리 연산과 관련된 연산자이다. 논리연산자로는 AND, OR, NOT이 있다. - TRUE, FALSE, NULL을 피연산자로 하는 AND, OR, NOT 연산 결과 x y x AND y x OR y NOT x TRUE TRUE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE NULL NULL TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE FALSE NULL FALSE NULL TRUE NULL TRUE NULL TRUE NULL ..
표현식 - 1 연산자와 피연산자 연산자는 피연산자와 결합되어 특정 연산(기능)을 수행하여 새로운 결과를 얻는 데 사용된다. 피연산자는 연산의 대상이 되는 값이다 구성 요소 분류 설명 연산자 단항 연산자 한 개의 피연산자만을 필요로 하는 연산자. 부호 +, 부호 -, IS NULL, NOT 등 2항 연산자 두 개의 피연산자를 필요로 하는 연산자 +,-,*,/,**,||,;=,=,>,
변수와 상수, 리터럴 변수 변수는 PL/SQL 블록의 선언부(DECLARE와 BEGIN 사이의 구역)에서 선언한다 변수명 데이터타입 [ NOT NULL ] [ := 초기값 ] ; 식별자 명명 규칙에 의하여 변수명은 대소문자를 구별하지 않는다. DECLARE v_num NUMBER; V_NUM NUMBER;-- 대소문자를 구별하지 않으므로 위의 v_num와 중복되는 선언(오류) BEGIN v_num := 10; V_NUM := 20; DBMS_OUTPUT.PUT_LINE(v_num); END; 위 코드에서 발생하는 오류를 피하려면 변수명에 큰따옴표를 사용하면 된다. DECLARE "v_num" NUMBER; "V_NUM" NUMBER;-- 대소문자를 구별하므로 위의 "v_num"과는 다른 선언이다 BEGIN "v_num" :=..
앵커(%)를 사용한 데이터 타입 지정 변수나 컬럼, 테이블, 커서 등의 기존 선언을 참조하여 데이터 타입을 지정하는 방법이다. 이 방법을 사용하면 식별자의 선언문이 간단해지고, 차후에 참조되는 타입이 변경되더라도 이를 참조하는 쪽은 소스 코드를 수정하지 않아도 된다는 장점이 있다. %TYPE 다른 변수 또는 컬럼의 데이터 타입과 동일한 타입을 지정할 때 사용된다. DECLARE v_enameemp.ename%TYPE;--컬럼의 타입을 참조하여 데이터 타입을 지정(칼럼 앵커) v_ename2v_ename%TYPE;--위의 변수 v_ename의 타입을 참조하여 데이터 타입을 지정(변수 앵커) BEGIN SELECT ename INTO v_ename FROM EMP WHERE ROWNUM = 1; v_ename2 := v_ename; END; %..
데이터 타입 상세 소개 - 2 PL/SQL 전용 데이터 타입 PL/SQL 전용 수치형 데이터 타입 PL/SQL에서는 SQL 데이터 타입인 NUMBER와는 다른 저장형식의 정수형 데이터 타입으로 PLS_INTEGER와 BINARY_INTEGER를 PL/SQL 전용 수치형 데이터 타입으로 제공한다. PLS_INTEGER 타입과 BINARY_INTEGER 타입은 이름은 다르지만 완전히 동일한 데이터 타입이다. 데이터 타입 설명 PLS_INTEGER CPU에서 지원하는 4바이트 정수와 호환되는 정수로, 다음 여섯 가지 수치형 데이터 타입의 베이스타입이다. BINARY_INTEGER라고도 한다. NATURAL 음수가 아닌(0 이상의) 자연수 NATURALN NOT NULL 제약 조건을 가지는 음수가 아닌(0 이상의) 자연수 POSITIVE 양..
데이터 타입 상세 소개 - 1 문자형 데이터 타입 내장 문자형 데이터 타입인 CHAR, VARCHAR2, NCHAR, NVARCHAR2의 선언 형식 데이터 타입[ (크기 [BYTE | CHAR] ) ] 문자형 데이터 타입은 모두 선언 시 크기를 지정할 수 있다. CHAR와 NCHAR는 크기를 생략할 수 있는데 크기를 지정하지 않으면 기본 크기는 1이다. VARCHAR2와 NVARCHAR2는 반드시 크기를 지정해야 한다. DECLARE v_char_defaultCHAR ;-- 크기가 1인 CHAR v_char_sizeCHAR(10);-- 크기가 10인 CHAR v_nchar_defaultNCHAR;-- 크기가 1인 NCHAR v_nchar_sizeNCHAR(10);-- 크기가 10인 NCHAR --v_varchar_defaultVARC..
데이터 타입 소개 데이터의 저장 포맷, 저장 시의 제약사항, 저장 가능한 값의 유효범위를 지정하기 위해 사용되는 제약조건이다. PL/SQL의 데이터 타입은 매우 다양한데, 기본적으로 SQL에서 사용할 수 있는 데이터 타입을 모두 사용 가능하고, 추가로 PL/SQL에만 사용 가능한 데이터 타입 몇 가지를 사용할 수 있다. ※PL/SQL에서 사용 가능한 데이터 타입 -오라클 내장 데이터 타입 문자: CHAR, VARCHAR2, NCHAR, NVARCHAR2 숫자: NUMBER. BINARY_FLOAT, BINARY_BOUBLE LONG, RAW: LONG, LONG RAW, RAW 날짜: DATE, TIMESTAMP, INTERVAL LOB: BLOB, CLOB, NCLOB, BFILE ROWID: ROWID, UROWID ..
PL/SQL 식별자 - 2 일반 사용자 정의 식별자 -규칙 첫 글자는 알파벳이나 한글과 같은 지역언어의 문자로 시작하며, 최대 30바이트의 길이를 가진다 두 번짜 문자부터는 알파벳, 한글, 숫자, _, $, #과 같은 문자들이 올 수 있다. 예약어는 사용할 수 없다. 대부분의 키워드는 사용자 저의 식별자로 사용할 수 있다. 하지만 키워드를 사용자 정의 식별자로 사용하면 사용에 제약이 따를 수도 있고 해당 식별자가 사용자 정의 식별자로 사용된 것인지 키워드 본연의 목적으로 사용된 것인지 구별에 혼동이 생길 수 있으므로 바람직하지 않다. -일반 사용자 정의 식별자 예시 DECLARE c_pi CONSTANT NUMBER := 3.14; -- 알파벳 식별자 사번 VARCHAR2(30);-- 한글 식별자 v_2_by_2 NUMBER; -..
PL/SQL 식별자 - 1 식별자(Identifier) PL/SQL 프로그램 구성 요소의 이름을 의미. 구성요소 설명 상수 한 번 지정된 값을 바꿀 수 없는 값 변수 할당된 값을 변경시킬 수 있는 값 커서 데이터베이스에 지정된 값을 접근하기 위한 구조 예외 PL/SQL 실행 중에 발생하는 예외 상항 레이블 PL/SQL의 블록 또는 문장에 대한 이름 서브프로그램 호출 가능한 함수(Function)와 프로시저(Procedure) 트리거 특정 이벤트 발생 시 데이터베이스에 의해 자동적으로 호출되는 저장 서브프로그램 패키지 타입, 상수, 변수, 예외, 커서, 서브프로그램 등을 모듈화한 저장 서브프로그램 객체 타입 관계형 DB에 객체 지향 프로그래밍을 가능하게 하는 프로그램 요소 예약어 내부적으로 사용하기 위해 예약된 단어 키워드 오라클 ..