ORDERED와 LEADING은 테이블 간 접근 순서를 결정하는 힌트절이지만 USE_NL, USE_HASH는 테이블 간 접근 방법을 결정하는 힌트절이다. 이러한 힌트절을 통해 오라클 조인 방식을 상황에 맞게 선택해 사용할 수 있다. 오라클의 조인 방식에는 Nested Loop Join, Hash Join, Sort Merge Join 3가지가 있지만, 이중에서 Sort Merge Join은 사용되는 경우가 거의 없다. 개발자가 가장 많이 접하는 조인 방식은 Nested Loop Join이다. 이는 순차적인 루프에 의한 테이블 간 접근 방식이며, 온라인성(OLTP) 쿼리에 많이 사용된다. Hash Join은 해시 함수를 이용한 테이블 간 접근 방식으로, 배치성(Batch) 쿼리에 많이 사용된다. 위 그림의..
동일한 쿼리라도 인덱스 생성 포인트에 따라서 테이블 접근 방향은 가변적이다.따라서 최소한의 코스트가 소요되는 접근 방향을 결정하고 그에 따른 필요한 위치에 인덱스를 생성한다면, 옵티마이저도 우리와 동일한 판단(플랜)을 할 것이다. 하지만 우리가 접한느 대부분의 경우는 이처럼 단순하지는 않다. 위의 그림처럼 1번, 2번, 3번, 4번 모든 컬럼 위치에 인덱스가 존재한다면 테이블의 접근 순서는 명확하지 않다. 고객->주문 방향으로 접근도 가능하고 주문->고객 방향으로 접근도 가능하다.양 방향 접근이 가능한 것이다. 물론 옵티마이저는 수집한 통계정보에 근거하여 가장 최소한의 노력이 드는 방향을 결정하려 할 것이다. 하지만 항상 올바른 결정만 하는 것은 아니다. 만약 우리가 판단하는 접근 방향과 옵티마이저가 판..
힌트절이란 무엇인가? CBO 방식에서 옵티마이저는 주어진 환경(통계정보, SQL문) 하에서 최적의 실행 계획(PLAN)을 제공한다. 그런데 잘못된 SQL문 이나 부정확한 통계정보로 인하여 엉뚱한 실행 계획을 제공할 때도 간혹 있다.이때 힌트절을 통해 잘못된 실행 계획을 바로 잡을 수 있다. 결국 힌트절은 옵티마이저의 실수를 만회할 수 있는 개발자의 마지막 무기라 할 수 있다. SELECT /*+ [힌트절] */ ... FROM ...WHERE ... SQL문에서 힌트절은 주석문 안에 표시한다. 그래서 잘못된 힌트절로 인하여 에러를 리턴하는 일은 없다. 단지 힌트절의 내용대로 적용되지 않을 뿐이다. 오라클이 제공하는 힌트절의 종류는 굉장히 많다. 수 많은 힌트절을 모두 이해하고 상황에 맞게 사용하기에는 너..
1. 형변환 함수 구분 설명 TO_CHAR 날짜형 혹은 숫자형을 문자형으로 변환한다. TO_DATE 문자형을 날짜형으로 변환한다. TO_NUMBER 문자형을 숫자형으로 변환한다. TO_CHAR 문은 날짜형 혹은 숫자형을 문자형으로 변환한다. 1) 날짜형을 문자형으로 변환 형식 - TO_CHAR(날짜데이터, '출력형식')SELECT SYSDATE, TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL; 결과 : 17/06/28 2017-06-28 구분 설명 YYYY 4자리 연도 YY 두자리 연도 MM 해당월을 01~12로 표시 MONTH name of month D Day of week (1-7) DD Day of month (1-31) DAY Day of year (1-366) WW W..
1. 숫자 함수 구분 설명 ABS 절대값을 구한다. COS COSINE 값을 반환한다. EXP e(2.71828183 ..)의 n승을 반환한다. FLOOR 소수점 아래를 잘라낸다. (버림) LOG LOG 값을 반환한다 POWER POWER(m,n) m의 n승을 반환한다. SIGN SIGN (n) n 0 이면 1을 반환한다. SIN SINE값을 반환한다. TAN TANGENT값을 반환한다. ROUND특정 자리수에서 반올림한다.TRUNC특정 자리수에서 잘라낸다. (버림)MOD입력 받은 수를 나눈 나머지 값을 반환한다. FLOOR 문은 소수점 아래를 버린다. SELECT 34.567 , FLOOR(34.567) FROM DUAL; 결과 : 34.567 34 ROUND 문은 특정 자릿수에서 반올림한다. SELE..
데이터 제어어(DCL) 이란? 특정 사용자에게 권한을 부여하거나, 제거하기 위해서 사용되는 명령어 유형 명령문 설명 데이터 제어어(DCL : Data Control Language) GRANTREVOKE 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어를 DCL이라 부른다. GRANT 문은 사용자에게 특정 권한을 부여하는 SQL문 Ex) OraUser1이라는 사용자에게 create session 권한을 부여 GRANT create session TO OraUser1 REVORK문은 사용자에게 특정 권한을 제거하는 SQL문 Ex) OraUser1이라는 사용자에게 create session 권한을 제거 REVORK create session FROM OraUser1
트랜잭션 처리어(TCL)란? 트랜잭션 관련 문장으로 데이터 조작어에 의해 변경된 내용을 관리한다. 유형 명령문 설명 트랜잭션 처리어 (TCL : Transaction Control Language) COMMIT ROLLBACK SAVEPOINT 논리적인 작업 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어를 말한다. * 데이터를 추가, 변경, 삭제한 내용은 데이터베이스에 영구 저장되는 것이 아니기에 사용자의 실수로 잘못 입력한 명령어라면 언제든지 이전 상태로 되돌릴 수 있다. COMMIT 문은 데이터베이스의 변경된 내용을 영구 저장하는 SQL문 COMMIT ROLLBACK 문은 데이터베이스의 변경되기 이전 상태로 되돌리는 SQL문 ROLLBACK [TO SAVEPOIN..
데이터정의어(DDL) 란 ? 데이터베이스 객체들을 생성 또는 변경, 제거할 때 사용한다. 객체란 테이블, 인덱스, 뷰, 트리거 등 SQL문을 수행하는데 있어서의 대상이 된다. 유형 명령문 설명 데이터 정의어- 객체 생성 및 변경시 사용(DDL : Data Definition Language) CREATEALTERDROPRENAMETRUNCATE 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 그러한 구조를 생성하거나 변경하거나 삭제하거나 이름을 바꾸는 데이터 구조와 관련된 명령어들을 DDL이라 부른다. CREATE 문은 새로운 테이블을 생성한다. EX) 부서번호, 부서이름, 지역이름으로 구성된 테이블을 생성 CREATE TABLE DEPT( DEPTNO NUMBER(4), DNAME VARCH..
데이터조작어(DML) 이란? 데이터를 조작하는 역할을 한다. 새로운 데이터를 삽입하고, 기존의 데이터를 변경하고 삭제하는 것이 DML에 속한다. 유형 명령문 설명 데이터 조작어- 데이터 변경시 사용(DML : Data Manipulation Language) SELECT 데이터베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE 라고도 한다. INSERTUPDATEDELETE 데이터베이스의 테이블에 들어 있는 데이터에 변형을 가하는 종류의 명령어들을 말한다. (데이터 삽입, 수정, 삭제) SELECT 문은 테이블에 저장된 데이터를 조회하는데 사용되는 SQL(Structure Query Language) Ex) Dept 테이블의 모든 데이터를 표시하기 위한 SQL문 S..
SQL(Structured Query Language)이란? 질의 언어를 통해서 데이터베이스에 저장된 데이터를 조회, 입력, 수정, 삭제하는 등 조작이나, 테이블을 비록한 다양한 객체(시퀀스, 인덱스 등)를 생성 및 제어하는 역할 유형 명령문 설명 데이터 조작어 - 데이터 변경시 사용 (DML : Data Manipulation Language) SELECT 데이터베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE 라고도 한다. INSERT UPDATE DELETE 데이터베이스의 테이블에 들어 있는 데이터에 변형을 가하는 종류의 명령어들을 말한다. (데이터 삽입, 수정, 삭제) 데이터 정의어 - 객체 생성 및 변경시 사용 (DDL : Data Definition L..