본문 바로가기

나 취준생/SQL

(54)
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..
SQL - 뷰 테이블은 아니고 데이터를 바라보는 쿼리문을 테이블처럼 하나의 object(객체)로 생성하자 예 : emp 테이블의 내용을 가진 emp708 생성하기create table emp708 as select empno, ename, sal, deptno from emp; select * from emp708; ** as 다음에 나오는 쿼리문의 결과대로 emp708 테이블이 생성된다. 하지만 emp708은 emp와는 다른, 별개의 또 다른 테이블이다. ** emp로 시작하는 내가 만든 테이블이 뭐가 있는지 확인하는 방법 select table_name from user_tables where table_name like 'EMP%'; -->> 반드시 대문자로 작성해줘야한다. create view emp801 as..
SQL - 임시 테이블 생성 임시 테이블 생성하기 ( create temporary table) ** 데이터를 영구히 database에 저장하는 게 아니라 임시로 저장하는 테이블 데이터 중에서 영구히 저장할 필요는 없고, 잠깐 테스트를 위해서 볼 데이터라던가현재만 필요하고 나중에는 필요하지 않은 데이터가 있는데그 데이터를 잠깐 저장할 때 사용하는 테이블이 임시 테이블. * 임시 테이블의 종류 2가지 1. on commit delete rows 옵션 : 데이터를 commit 할 때 까지만 보관2. on commit preserve rows 옵션 : 데이터를 접속한 유저가 로그아웃할때까지만 보관 예제 :create global temporary table emp700( empno number(10), ename varchar2(10),..
SQL - 구구단 출력하기 예제1 : 숫자 1과 2를 출력하는 SQL문 select level from dual connect by level
SQL - 치환 변수 (&) SQL 치환 변수 (&) 사용법 SQL 문장을 수행할 때 매번 검색해야하는 데이터 값이 다른데SQL 문장이 같을 때 검색을 용이하게 하는 오라클 SQL 문법 예 : 사원 번호, 사원 이름, 월급 출력하기select empno, ename, sal from emp where empno= &사원번호; 여기서 7788을 입력하면, 사원 번호 7788인 SCOTT의 데이터가 나온다. 예제 : 동전을 n번 던져서 앞면이 나올 확률을 구하기 undefine 던진횟수select count(*) / &&던진횟수 as "동전이 앞면이 나올 확률" from ( select round ( dbms_random.value(0,1) as 동전from dualconnect by level