본문 바로가기

Paul Work/Sql

CONNECT BY를 이용한 정렬 EXPENSE_CODE = 기본키 EXPENSE_PCODE = 부모의 정보를 가지고 있는 키 SELECT EXPENSE_CODE, EXPENSE_PCODE, EXPENSE_NAME_KOR, SORT_NO, ROWNUM RNT, EXPENSE_LEVEL FROM BSC_EXPENSE_CODE WHERE EXPENSE_CODE IS NOT NULL START WITH EXPENSE_CODE = '111' CONNECT BY PRIOR EXPENSE_CODE = EXPENSE_PCODE ORDER BY SORT_NO EXPENSE_CODE 값이 NULL인것을 제외한 START WITH 값을 시작으로 해서 값을 추출 해낸다. 그리고 뽑아온 데이터는 ORDER BY에 의해 순차적으로 정렬이 되어짐 SORT_NO는.. 더보기
○ DML 확장 ○ DML 확장 inline view : from 에 있는 subquery 1) Explicit Default create table t1 (no number, loc varchar2(10) default 'SEOUL'); 1. insert into t1 values(100); -> ORA-00947 : not enough values : 컬럼이 두개인데 하나의 컬럼에만 값이 들어갔기 때문에 error 2. Implicit Default insert into t1(no) values(100); 3. Explicit Default insert into t1(no loc) values(100, default); -> 2,3번 둘다 같은 값이 들어가지만 구문을 보고 이해 할 수 있도록 해야 하므로 Explic.. 더보기
/*+ APPEND */ 힌트의 진실과 거짓 APPEND 힌트가 최고인가요? 대량의 데이터를 INSERT 시킬때 많이 사용하는 구문 중에 하나가 INSERT INTO big_table SELECT * FROM all_objects; 라는건 많이 아실 겁니다. (물론 테이블 drop후 create table big_table as select * ~~~~이 더 빠르긴 함. 상황이 다르지만) 그럼 저 구문을 더 빠르게 할려면 어떻게 하냐의 질문에는 아마 많은 분들이 append 힌트를 쓰라고 하실겁니다.. 저두 그렇구요. INSERT /*+ APPEND */ INTO big_table SELECT * FROM all_objects; 그럼 APPEND 힌트를 쓰면 리두 로그가 생성되지 않아 빠르게 수행된다고 생각하시겠죠.. APPEND 힌트와 같이 직접.. 더보기