DB/Oracle

DB/Oracle

[DB/Oracle]오라클 실행계획

1.실행계획이란 :사용자가 SQL 문장을 실행하여 데이터를 추출할 때 옵티마이저가 수립하는 작업절차다. 한 문장으로 요약하자면, 실행계획은 SQL문이 어떻게 실행될지 알려주는 ‘설명서’다. 2.실행계획 실행하기 :쿼리문의 실행계획을 확인하는 방법은 EXPLAIN PLAIN, AUTOTRACE, SQL TRACE 3가지 방법이있다. 이중 AUTOTRACE를 가장 많이 쓰고 그 사용법에 대해서는 아래에 링크를 참조하길 바란다. 오라클 실행계획 확인하기 3.실행계획 순서 실행계획 실행계획은 다음과 같은 규칙으로 읽어나간다. 1.위에서 아래로 읽어 내려가면서 제일 먼저 읽어낼 문장을 찾는다. 2.내려가는 과정에서 같은 들여쓰기가 적용되면, 위->아래 순서로 읽는다. 3.읽고자 하는 문장보다 들여쓰기가 된 문장이..

DB/Oracle

[Oracle] 와일드카드 비교

여러글자(0~N) 한글자 Oracle % _ MySql % ? Ex. 1.'title%' title(가능) / title1 (가능) 2.'title_' / 'title?' title(불가능) / title1 (가능) / title11(불가능)

DB/Oracle

[서브쿼리] 다중열 서브쿼리/FROM절에 사용하는 서브쿼리와 WITH절

다중열 서브쿼리 다중열 서브쿼리는 서브쿼리의 SELECT절에 비교할 데이터를 여러 개 지정하는 방식이다. SELECT * FROM EMP WHERE (DEPTNO, SAL) IN (SELECT DEPTNO, MAX(SAL) FROM EMP GROUP BY DEPTNO); FROM절에 사용하는 서브쿼리와 WITH절 앞서 살펴본 서브쿼리는 WHERE절에서 조건식 대상으로 사용했다. 그런데 FROM절 역시 WHERE절과 마찬가지로 서브쿼리를 사용할 수 있다. FROM절에 사용하는 서브쿼리는 인라인 뷰라고 부른다. 인라인 뷰는 특정 테이블 전체 데이터가 아닌 SELECT문을 통해 일부 데이터를 먼저 추출한 후 별칭을 주어 아래와 같이 작성할 수 있다. SELECT E10.EMPNO, E10.ENAME, E10...

DB/Oracle

[서브쿼리] 다중행 서브쿼리

다중행 서브쿼리 다중행 서브쿼리는 실행 결과 행이 여러 개 나오는 서브쿼리입니다. 다중행 서브쿼리에 사용되는 연산자는 아래와 같다. 다중행 연산자 설명 IN 메인쿼리의 데이터가 서브쿼리의 결과 중 하나라도 일치한 데이터가 있다면 true ANY, SOME 메인쿼리의 조건식을 만족하는 서브쿼리의 결과가 하나 이상이면 true ALL 메인쿼리의 조건식을 서브쿼리의 결과 모두가 만족하면 true EXISTS 서브쿼리의 결과가 존재하면(즉, 행이 1개 이상일 경우) true IN 연산자 IN 연산자를 서브쿼리와 함께 쓰면 메인쿼리의 데이터가 서브쿼리의 결과 중 하나라도 일치한 데이터가 있다면 실행된다. 예를들어 IN 연산자와 서브쿼리를 사용하여 각 부서별 최고 급여와 동일한 급여를 받는 사원 정보를 출력하는 쿼..

DB/Oracle

[서브쿼리] 단일행 서브쿼리

단일행 서브쿼리 단일행 서브쿼리는 실행 결과가 단 하나의 행으로 나오는 서브쿼리다. 단일행 서브쿼리는 단일행 연산자를 사용하여 비교한다. 단일행 연산자 > >= =

DB/Oracle

[서브쿼리] 서브쿼리의 정의

서브쿼리 서브쿼리는 SQL문을 실행하는 데 데이터를 추가 조회하기 위해 SQL문 내부에 사용하는 SELECT문이다. 서브쿼리의 기본형식은 아래와 같다. 파란색 박스가 칠해져 있는 곳은 '메인쿼리', 빨간색 박스가 칠해져 있는 곳은 '서브쿼리'라 부른다. 간단한 예제로 서브쿼리의 사용을 확인해보자. 사원 이름이 JONES인 사원의 급여를 출력하면 아래와 같다. SELECT SAL FROM EMP WHERE ENAME = 'JONES'; 사원 이름 JONES의 급여가 '2975'인걸 주목하자. 만약 사원의 급여가 2975 이상인 사원 데이터를 출력한다면 아래와 같은 쿼리문이 출력 될거다. SELECT * FROM EMP WHERE SAL > 2975; 앞서 JONES의 급여가 '2975'인 것에 주목하자고 ..

DB/Oracle

[다중행 함수] 결과 값을 원하는 열로 묶어 출력하는 GROUP BY절

GROUP BY절 하나의 결과값을 출력하는 함수를 사용하여 부서 번호(DEPTNO)의 열 값별로 평균값을 구하려면 아래와 같이 각 부서 평균 값을 SELECT문을 하나하나 작성해야한다. SELECT AVG(SAL) FROM EMP WHERE DEPTNO = 10: SELECT AVG(SAL) FROM EMP WHERE DEPTNO = 20: SELECT AVG(SAL) FROM EMP WHERE DEPTNO = 30: ... 각 부서별 평균 급여를 통합해보려면 아래와 같이 집한 연산자를 사용할 수 있다. SELECT AVG(SAL), '10' AS DEPTNO FROM EMP WHERE DEPTNO = 10 UNION ALL SELECT AVG(SAL), '20' AS DEPTNO FROM EMP WHE..

DB/Oracle

[다중행 함수] 하나의 열에 출력 결과를 담는 다중행 함수

다중행 함수 다중행 함수는 여러 행을 바탕으로 하나의 결과 값을 도출해내는 함수다. 자주 사용하는 함수에는 아래와 같이 5가지의 함수가 있다. 함수 설명 SUM 지정한 데이터의 합 반환 COUNT 지정한 데이터의 개수 반환 MAX 지정한 데이터 중 최댓값 반환 MIN 지정한 데이터 중 최솟값 반환 AVG 지정한 데이터의 평균값 반환 합계를 구하는 SUM 함수 SUM함수는 데이터의 합을 구하는 함수다. SUM([DISTINCT, ALL 중 하나를 선택하거나 아무 값도 지정하지 않음(선택)] [합계를 구할 열이나 연산자, 함수를 사용한 데이터(필수)]) 추가 수당 합계를 구하기 위한 쿼리문을 SUM 함수를 작성해보자. SELECT SUM(COMM) FROM EMP; SUM 함수를 생략 가능한 옵션 DISTI..

각시탈코더
'DB/Oracle' 카테고리의 글 목록