본문 바로가기

전체 글

[ SQL ] 숫자 타입 별 작업 속도 차이 오라클 내에는 NUMBER 뿐아니라 INTEGER, DOUBLE, FLOAT, DECIMAL, LONG, BINARY_INTEGER, PLS_INTEGER 등과 같은 데이터 타입이 존재한다. 다만 오라클 사용자가 조금 더 편하게 코딩할 수 있도록 NUMBER로 사용할 수 있다. 모든 숫자타입을 NUMBER로 사용하게 되면 오라클 엔진에서 정확한 타입으로 변환 후 작업을 수행하기 때문에 처음부터 데이터 타입을 정확히 명시하는 것보다 조금 느릴 수 있다. 속도 예시 1 SET SERVEROUTPUT ON; SET TIMING ON; -- 실행시킬 쿼리의 시간을 표시해 줌 DECLARE AA NUMBER(10); BB NUMBER(10); CC NUMBER(10); BEGIN FOR I IN 1..100000.. 더보기
[ SQL ] 사용자정의타입 사용자정의타입 생성 CRATE TYPE 타입명 IS VARRAY(크기) OF 데이터 타입; 예제 1 (VARRAY) CREATE TYPE TEST_VARRAY IS VARRAY(3) OF NUMBER; 길이가 3이고 데이터 유형이 숫자인 배열생성 create or replace NONEDITIONABLE PROCEDURE PROC_TYPE_TEST_1 AS V_ARY TEST_VARRAY; V_NUM NUMBER; BEGIN V_ARY := TEST_VARRAY(0,0,0); V_ARY(1) := 4; V_ARY(2) := 11; V_ARY(3) := 55; V_NUM := V_ARY(1) + V_ARY(2) + V_ARY(3); DBMS_OUTPUT.PUT_LINE(V_NUM); END PROC_TYP.. 더보기
[ SQL ] SCHEDULER (스케줄러) SCHEDULER(스케줄러) : 반복된 작업을 수행할 때 사용 작업이름 : 어떤 작업을 위한 스케줄러인지 알 수 있도록 지어주는게 좋고 보통 SCH_로 시작. 사용 : 스케줄러를 사용할 것인지 하지않을 것인지 설정해 줄 수 있다. 설명 : 어떤 작업을 위한 스케줄러인지 누가봐도 알 수 있도록 적어주는 것이 좋다. 작업 유형 : 스케줄러를 생성하면서 쿼리를 바로 적어줄 수 도 있고 서버 내 프로시저를 불러올 수도 있다. 작업 실행 시간 : 작업을 언제, 몇 번, 언제부터, 언제까지 할 것인지 등을 설정해줄 수 있다. SCHEDURELER 예제 CREATE TABLE TEST ( NMB NUMBER(5) ); 1. 테스트 테이블 생성 CREATE OR REPLACE PROCEDURE PROC_SCH_TEST.. 더보기
[ SQL ] 반복문 커서를 이용한 반복문 1부터 100까지 출력 1. SET SERVEROUTPUT ON; DECLARE NUM NUMBER(5) := 1; BEGIN WHILE(NUM 더보기
[ SQL ] ORACLE INDEX INDEX 인덱스 테스트를 위한 테이블 생성 CREATE TABLE INDEX_TEST ( T_ID CHAR(8) NOT NULL, T_NAME VARCHAR(50) NOT NULL ); 인덱스 이름은 어떤 컬럼의 인덱스인지 알아볼 수 있도록 정해주는 게 좋다. 인덱스 유형은 고유하지않음, 고유, 비트맵 등이 있다. B-TREE(BALANCE TREE) INDEX (고유하지 않음, 고유) 트리구조로 데이터를 분류해서 관리, 추후 데이터가 많아지면 많아질 수록 UPDATE, INSERT 의 속도가 느려진다. 고유하지 않음 (CLUSTERED INDEX) - 데이터가 중복되지 않을 때 사용 고유 (NON CLUSTERED INDEX) - 데이터가 중복될 때 사용 BITMAP INDEX - 2진수로 데이터를 .. 더보기
[ SQL ] 트리거 (TRIGGER) 트리거 (TRIGGER) 특정 테이블(TABLE)에 이벤트(INSERT, UPDATE, DELETE)가 발생하면 자동으로 실행되는 PROCEDURE(업무의 최소 단위, ALL OR NOTHING) 메모리를 차지하고 관리하기 쉽지 않음 그래서 독특한, 특별한 경우에 쓰는 게 좋다. - 스키마 : 사용자(DATABASE 이름) - 이름은 보통 TRG_, TRID_ 로 시작해서 어떤 업무를 위한 트리거인지 알아볼 수 있을 정도로 작성 - 기본 객체 : 어떤 테이블에 실행할 것인가 - 타이밍(BEFORE/AFTER) - AFTER TRIGGER : INSERT 문의 데이터가 먼저 추가 되고 난 후에 트리거가 동작 - BEFORE TRIGGER : INSERT 문의 데이터가 추가되기 전에 먼저 트리거가 동작하고 .. 더보기
[ SQL ] TRUNC(TRUNCATE) VS ROUND 1. 수학적으로 쓰일 경우 SELECT ROUND(13.577, 2) FROM DUAL; 소수점 둘째자리에서 반올림 SELECT TRUNC(13.577, 2) FROM DUAL; 소수점 둘째자리에서 버림 2. 날짜 SELECT TRUNC(SYSDATE) FROM DUAL; 변화가 없는 것 처럼 보이지만 SELECT TO_CHAR(TRUNC(SYSDATE), 'YYYY-MM-DD HH24:MI:SS') FROM DUAL; SELECT TO_CHAR(TRUNC(SYSDATE, 'YEAR'), 'YYYY-MM-DD hh24:MI:SS') FROM DUAL; SELECT TO_CHAR(TRUNC(SYSDATE, 'MONTH'), 'YYYY-MM-DD hh24:MI:SS') FROM DUAL; SELECT TO_.. 더보기
[ SQL ] TO_CHAR 함수 1. 문자열 만들기 SELECT TO_CHAR(89087) FROM DUAL; 숫자를 문자로 바꾸는 함수 SELECT TO_CHAR(89087) || '원' FROM DUAL; 문자열 + 문자열 2. 날짜 표시 - TO_CHAR(데이트타입, 원하는 모양) SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') FROM DUAL; SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD') FROM DUAL; SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL; SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH:MI:SS') FROM DUAL; 12시간 단위로 표시 SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24.. 더보기