본문 바로가기

Oracle/SQL

(98)
SQL - Flashback 데이터 복구 query 복구 QUERY 복구 백업을 복구하지 않고, 과거 시점의 데이터를 조회하는 방법 과거시점의 데이터를 조회해서 그 데이터를 새로 create as table 해준다. 테이블을 플래쉬백 할 수 있는 골든 타임은 기본적으로 15 분이다. ( 회사마다 설정된 시간이 조금 씩 다름 ) 시간 확인해보는 쿼리문 select name, value from v$PARAMETER where name = 'undo_retention' ; value 값에 초단위로 적힌 시간을 확인하면 플래쉬백 할 수 있는 기본 시간을 확인 해 볼 수 있다. table 을 지우고 commit 까지 해버린 상황 delete from emp; commit ; 현재시간확인 select systimestamp from dual; →복붙하기 21/11/26..
SQL - SEQUENCE 절대 중복되지않는 번호 사원번호, 계좌번호, 은행번호표 등 절대 중복되면 안되는 경우 시퀀스를 사용하고 이렇게 생성된 sequence 는 index 가 자동 등록 된다. 사람이 일일히 번호를 입력하지 않고 기계에게 밭겨 번호가 안전하게 입력할 수 있도록 한다. 시퀀스 생성 문법 create sequence seq1 start with 1 increment by 1 MAXVALUE 100; → start with 시작숫자 → increment by 증가치 → maxvalue 최대값 → 최대값 넘어가면 오류뜬다~ 시퀀스 삭제하기 drop sequence seq1; 내가만든 시퀀스 리스트 확인하기 select sequence_name from user_sequences; stock table 생성하기 create table stoc..
SQL - INDEX 데이터검색속도 높이기(2) order by 없이 index 정렬 (desc 도 가능!) 인덱스를 이용한 튜닝방법중에 정렬을 일으키는 SQL 튜닝 order by 절을 대용량 데이터때 사용하게 되면 성능이 아주 느려진다. 따라서 order by 절 사용을 가급적 자제하는게 좋다. 따라서 order by 절을 안쓰고 데이터를 정렬하는 방법이 있는데 그게 바로 인덱스를 활용하는것이다. 인덱스는 생성할때만 정렬하고 그이후에는 정렬된 데이터가 인덱스의 구조로 이미 저장되어있으므로 인덱스에서 데이터를 차례대로 읽어오면 정렬된 결과를 볼 수 있다. 튜닝전 select ename,sal from emp order by sal asc; 튜닝후 create index emp_sal_idx on emp(sal); → 인덱스를 생성시키거나, 생성되어있다면 select ename, sal from emp wher..
SQL - INDEX 데이터검색속도 높이기 index 는 책의 '목차' 와 비슷하다. 테이블의 검색속도를 높이기 위한 database object 이다. ex) 일반쿼리 검색 속도가 너무 느리다면 실행계획을 먼저 살펴 본 후 index 가 없으면 index 를 생성해 다시 실행 해 준다. (검색할 컬럼 = where 절 에 사용할 컬럼 ) ! index 의 구조 : 컬럼명과 rowid 로 구성되어있다. 인덱스(목차)를 생성하려는 컬럼의 데이터가 자동으로 asc 하게 정렬되어 구성됨 정말 필요할때만 인덱스를 생성해야한다. 불필요하게 인덱스를 많이 생성한다면 insert, update, delete 속도가 느려진다. 인덱스를 생성하는 방법 2 가지 수동으로 create index 인덱스이름 on 테이블명(컬럼명) 자동으로 primary key 제약이..
SQL VIEW 생성하기 view 의 종류 2가지 단순뷰 복합뷰 테이블의 갯수 1개 2개이상 함수포함여부 포함안함 포함 데이터 갱신여부 갱신됨 갱신안될 수도 있다. VIEW 의 장점 보안상 민감한 데이터를 노출 시키고 싶지 않을때 복잡한 쿼리문을 간단하게 쿼리하고 싶을때 emp57 emp 테이블에서 사원번호, 이름, 월급을 가져온 데이터로 view 생성하기 create or replace view emp57 as select empno, ename, sal from emp ; emp57 view 의 데이터를 이름이 scott 인 사원의 월급을 0 로 수정 update emp57 set sal = 0 where ename = 'SCOTT'; *****view 를 수정하게 되면 table 도 수정이 된다. (단순 view) 직업이 ..
SQL TEMPORARY CREATE 생성방법 (임시테이블 ) 임시테이블 종류 2가지 on commit delete rows : 데이터를 commit 할때까지만 유지 on commit preserve rows : 데이터를 세션이 종료할때까지만 유지 데이터를 영구히 저장하는게 아닌 임시로 보관하는 테이블이다. EX) 잠깐만 볼 데이터를 위해 , SK 휴대폰 요금 이번달 청구서~ 같은경우! 예제 임시테이블 emp56 을 만들기 create global temporary table emp56 (empno number(10), emane varchar2(20), sal number(10)) on commit delete rows; 기존에 쓰던 일반 테이블과 다른 점은 global temporary on commit delete rows / on commit preserve..
SQL CREATE 생성방법, 데이터타입 종류 create 로 생성할 수 있는 데이터 오브젝트는 table, view, index, sequence , synonym 5가지 가 있다. table 생성 방법 Create table 테이블명 컬럼명1 데이터 타입(byte 수), 컬럼명2 데이터타입(byte 수), 컬럼명3 데이터타입 (byte 수 ) , . . . ) ; 테이블명과 컬럼명 지정 시의 규칙 1. 반드시 문자로 시작해야한다. 2. 이름의 길이는 30자 이하여야한다. 3. 대문자 알파벳과 소문자 알파벳과 숫자를 포함 할 수 있다. 4. 특수문자는 $,_ ,# 만 가능하다. 예제 emp93 table 을 생성해라~ create table emp93 (empno number (10), ename varchar2(10), sal number(10,..
SQL Create 로 만들 수 있는 데이터 베이스 오브젝트 1. tabel : 데이터베이스에 데이터를 저장하는 기본 저장소 (행 row , 열 column 으로 이루어져있다.) 2. view : 복잡한 쿼리문을 간단하게 access 하기 위한 DB objeck ( 뷰가 따로 데이터로 저장되는 형태가 아닌 그냥 테이블을 조합화여 조회한 결과 창이다 = 가상의 테이블 . ) 3. index : 대용량 데이터에서 특정 데이터의 검색을 빠르게 하는 DB ( 책의 목차 같은것 , 쿼리 성능향상 ) 인덱스를 생성해야하는 경우 - 조건절이나 조인조건에서 컬럼을 자주이용할때 -컬럼이 넓은 범위값 - 많은 Null 값을 갖는 컬럼일 경우 4. sequence : 번호 생성기 ( 겹치지 않는) (primary key 값을 생성시 필요하다) 5. synonym : 동의어 ( emp..