본문 바로가기

전체 글

(228)
SQL - 외부 테이블 (external table) ** 오라클의 테이블 종류 1. 일반 테이블 ( heap table )2. 임시 테이블 ( temp table )3. 외부 테이블 ( external table )4. 파티션 테이블 ( partition table ) 외부 테이블(external table) (1) emp.txt를 c 드라이브 밑에 data라는 폴더를 만들고 그 안에 넣기 (2) c 드라이브에 data 폴더를 오라클 디렉토리로 생성하기 create directory emp_dir as 'c:\data'; (3) 외부 테이블 생성하기 organiztion external --> external table을 생성하겠다.type oracle_loader --> data를 로드하는 엔진을 sql*loader를 사용하겠다. (자동으로 insert..
SQL - 3개 이상의 테이블 조인 3개 이상의 테이블 조인하기 * 2개의 테이블 조인 연결 고리 1개emp ----------------------------- dept * 3개의 테이블 조인 연결 고리 (and) 연결 고리dept ----------------------------- emp ----------------------------- salgrade e.deptno=d.deptno and e.sal between s.losal and s.hisal 예제 : 이름과 부서위치와 월급과 부서번호를 출력하기 select d.loc, e.sal, e.deptno from emp e, dept d where d.deptno=e.deptno 예제 : 이름과 부서위치와 급여등급을 출력하기select e.ename, d.loc, s.grade..
SQL - 데이터의 품질 높이기 ( 테이블 제약 걸기 ) 데이터 분석을 하다보면 가장 많은 시간을 할애하는 작업은 데이터 전처리. 품질이 높은 데이터를 처음부터 입력받도록 강제화하면 나중에 데이터 전처리에 많은 시간을 들이지 않아도 된다. 그래서 데이터 품질을 높이기 위한 한 방법으로 제약을 사용한다. 그래서 처음부터 테이블에 데이터를 입력받을 때부터 엄격한 기준으로 데이터를 입력하도록 제약을 건다. * 제약의 종류 1. PRIMARY KEY : 중복된 데이터와 null 값을 허용하지 않게 하는 제약2. UNIQUE : 중복된 데이터를 허용하지 않게 하는 제약3. NOT NULL : null 값을 허용하지 않게 하는 제약4. CHECK : 특정 데이터 외 다른 데이터는 입력되지 못하게 하는 제약5. FOREIGN KEY : 참조하는 컬럼에 거는 제약 * PRI..
SQL - 실수로 지운 데이터 복구하기 1. 실수로 지운 데이터 복구하기 ( FLASHBACK QUERY ) 오라클은 10g 버전부터 타임 머신 기능이 생겼다. 그래서 타임 머신 기능을 이용해서 과거의 데이터를 확인할 수 있고테이블을 과거로 되돌릴 수가 있다. flashback query는 과거의 데이터를 확인하는 기능이다. 예 :delete from emp; commit; 사라져버린 emp 테이블commit 까지 해버렸다. * 10분 전에 있었던 emp 테이블 상태를 확인하기 select * from emp as of timestamp( systimestamp - interval '10' minute ); 그럼 일단 이걸 그대로 emp 백업 테이블에 저장하고, create table emp_backup_20201111 as select * ..
SQL - 시퀀스 예제 : 1부터 6까지 값을 갖는 시퀀스 생성하기create sequence seq1 start with 1 maxvalue 6; 이 때 start with은 시퀀스의 시작 번호,maxvalue는 시퀀스의 최대 번호를 뜻한다. 이렇게 만들었으면, select seq1.nextval from dual; 로 실행시켜보자. 1이 출력되었다. 그리고 아까 실행시킨 select seq1.nextval from dual; 위 구절을 계~속 반복 실행해보면 계속 1씩 증가하는 것이 보인다. 그러다가 6까지 실행되고, 한 번 더 하면.. 오류가 발생하면서 안 된다. 아까 maxvalue 를 6으로 설정해두었기 때문. ** 시퀀스를 이용하면 좋은 점 번호를 중복되지 않게 일관되게 테이블에 입력할 수 있다. 번호가 중복되..
SQL - 인덱스를 사용한 튜닝 인덱스를 사용하여 튜닝하는 방법 튜닝전 : explain plan for select /*+ index(emp emp_sal) */ ename, sal from emp where sal*12=36000; -- 지금 sal에는 인덱스가 있는 상황이고, 인덱스를 엑세스하라고 힌트를 줬는데도 불구하고실행 계획이 full table scan을 했다.왜냐하면where 절의 인덱스 컬럼이 가공 되었기 때문. 어떻게 튜닝해야 인덱스 scan을 하도록 만들 수 있을까? explain plan for select /*+ index(emp emp_sal) */ ename, sal from emp where sal=36000/12; select * from table(dbms_xplan.display); 튜닝 전 :sele..
SQL - 인덱스 원리, 힌트 데이터베이스를 배울 때 인덱스(INDEX)를 알아야 하는 이유 : 인덱스를 알아야 빠르게 데이터를 검색할 수 있고, 속도는 현업에서 매우 매우 중요하다. 20분 ---> 0.01초 : 쉬운 SQL 튜닝0.1 ---> 0.01초 : 어려운 SQL 튜닝 --> 인덱스의 구조를 이해하고, 활용을 잘할 수 있어야한다. 인덱스의 구조 : 컬럼명 + rowid ( row의 물리적 주소 ) + 컬럼명이 오름차순으로 정렬이 되어있다. ** 만약에 대용량 데이터가 있는 환경에 가서 SQL을 수행했는데너무 느리다면 반드시 실행 계획을 확인해서 full table scan을 했는지, index scan을 했는지 확인을 해야한다. SQL 문 앞에 explain plan for 를 붙이고실행계획을 확인하는 table을 조회하자..
SQL - 인덱스 오라클 데이터 베이스의 객체(object)의 종류 5가지 1. table : 데이터를 저장하는 기본 저장소2. view : 데이터를 바라보는 쿼리문3. index : 검색 속도를 향상시키기 위한 database object4. sequence : 순서대로 번호를 생성하는 database object5. synonym : 테이블명에 대한 또 다른 이름 INDEX(인덱스)는 SQL 튜닝을 위해 반드시 알아야 하는 DATABASE object이다. 설명 : 인덱스는 테이블을 책으로 치면 책 앞에 나오는 목차-- 만약 목차 없이 책에서 내용을 찾는다면, 처음부터 끝까지 다 보아야한다. 예제 1: 이름이 SCOTT 인 사원의 이름과 월급을 출력하기 select ename, sal from emp where ena..