서브쿼리 서브쿼리는 SQL문을 실행하는 데 데이터를 추가 조회하기 위해 SQL문 내부에 사용하는 SELECT문이다. 서브쿼리의 기본형식은 아래와 같다. 파란색 박스가 칠해져 있는 곳은 '메인쿼리', 빨간색 박스가 칠해져 있는 곳은 '서브쿼리'라 부른다. 간단한 예제로 서브쿼리의 사용을 확인해보자. 사원 이름이 JONES인 사원의 급여를 출력하면 아래와 같다. SELECT SAL FROM EMP WHERE ENAME = 'JONES'; 사원 이름 JONES의 급여가 '2975'인걸 주목하자. 만약 사원의 급여가 2975 이상인 사원 데이터를 출력한다면 아래와 같은 쿼리문이 출력 될거다. SELECT * FROM EMP WHERE SAL > 2975; 앞서 JONES의 급여가 '2975'인 것에 주목하자고 ..
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..
다중행 함수 다중행 함수는 여러 행을 바탕으로 하나의 결과 값을 도출해내는 함수다. 자주 사용하는 함수에는 아래와 같이 5가지의 함수가 있다. 함수 설명 SUM 지정한 데이터의 합 반환 COUNT 지정한 데이터의 개수 반환 MAX 지정한 데이터 중 최댓값 반환 MIN 지정한 데이터 중 최솟값 반환 AVG 지정한 데이터의 평균값 반환 합계를 구하는 SUM 함수 SUM함수는 데이터의 합을 구하는 함수다. SUM([DISTINCT, ALL 중 하나를 선택하거나 아무 값도 지정하지 않음(선택)] [합계를 구할 열이나 연산자, 함수를 사용한 데이터(필수)]) 추가 수당 합계를 구하기 위한 쿼리문을 SUM 함수를 작성해보자. SELECT SUM(COMM) FROM EMP; SUM 함수를 생략 가능한 옵션 DISTI..
특정 열 값이나 데이터 값에 따라 어떤 데이터를 반환할 지 정할 때는 DECODE 함수 또는 CASE문을 사용한다. DECODE 함수 DECODE 함수는 기준이 되는 데이터를 먼저 지정한 후 해당 데이터 값에 따라 다른 결과 값을 내보내는 함수다. DECODE([검사 대상이 될 열 또는 데이터, 연산이나 함수의 결과], [조건1], [데이터가 조건1과 일치할 때 반환할 결과], [조건2], [데이터가 조건2와 일치할 때 반환할 결과], ... [조건n], [데이터가 조건n과 일치할 때 반환할 결과], [위 조건1~조건n과 일치한 경우가 없을 때 반환할 결과]) EMP 테이블에서 직책이 MANAGER인 사람은 급여의 10%를 인상한 급여, SALESMAN인 사람은 급여의 5%, ANALYST인 사람은 그대..
NULL 함수 NULL은 연산이 불가능하다. 오라클은 NULL일 경우 연산을 하기 위해 NULL값을 다른 데이터로 변환하는 NVL과 NVL2 함수를 사용한다. NVL 함수 NVL 함수는 첫 번째 입력 데이터가 NULL이면 두 번째 입력 데이터 값으로 저장하고, NULL이 아닐경우 그대로 첫 번째 입력값이 그대로 반환된다. NVL([NULL인지 여부를 검사할 데이터 또는 열(필수)], [앞의 데이터가 NULL일 경우 반환할 데이터](필수)) NVL 함수를 통해 급여외 수당(COMM)이 NULL이면 0으로 대체하고 0이 아니면 그대로 값을 출력하는 쿼리문을 작성해보자. SELECT EMPNO, ENAME, SAL, COMM, SAL+COMM, NVL(COMM, 0), SAL+NVL(COMM, 0) FROM ..
형 변환 함수 오라클은 다양한 데이터 종류의 자료형을 제공한다. 잘못된 자료형의 사용으로 인해 즉, 잘못된 형 변환으로 인해 오류가 발생한다. Query 출력값 사원 'SCOTT'의 사원번호와 문자열 'ABCD'를 사원번호와 합친 데이터를 출력하려했다. 하지만 문자열+숫자는 타입이 맞지않아 'invalid number'에러 즉 수치가 부적합하다는 오류가 발생했다. 이처럼 형번환의 문제를 해결하기 위해 오라클은 다음과 같이 세 종류의 형 변환 함수를 제공한다. 종류 설명 TO_CHAR 숫자 또는 날짜 데이터를 문자 데이터로 변환 TO_NUMBER 문자 데이터를 숫자 데이터로 변환 TO_DATE 문자 데이터를 날짜 데이터로 변환 날짜, 숫자 데이터를 문자 데이터로 변환하는 TO_CHAR 함수 TO_CHAR ..
날짜 함수 오라클은 날짜 데이터를 다루는 다양한 함수를 제공한다. 날짜 데이터를 다루는 함수를 하나씩 알아보도록 하자. 몇 개월 이후 날짜를 구하는 ADD_MONTHS 함수 오라클은 특정 날짜에 지정한 개월 수 이후 날짜 데이터를 번환하는 ADD_MONTHS 함수를 제공한다. ADD_MONTHS([날짜 데이터(필수)], [더할 개월 수(정수)(필수)] 현재 날짜에 3개월을 더한 결과를 ADD_MONTHS 함수를 쿼리문을 통해 출력해보자. 글을 작성하는 오늘 날짜는 2022년 2월 9일이다. ADD_MONTHS 함수를 통해 3개월 이후의 값을 구하면 22년 5월 9일 날짜가 정확히 나온다. ADD_MONTHS 함수의 대표 예시로 입사 10주년이 되는 사원들을 쿼리를 통해 출력해보자. 10주년이면 개월 수로..
오라클 함수 오라클은 특정한 결과 값을 얻기 위해 데이터를 입력할 수 있는 특수 명령어가 존재하는데 이를 오라클 함수라 한다. 오라클 함수는 오라클 함수에서 기본으로 제공하는 내장함수와 사용자 필요에 의해 직접 정의한 사용자 정의 함수로 나뉜다. 내장함수 안에는 데이터가 한 행씩 입력되고 입력된 한 행당 결과가 하나씩 나오는 단일행 함수와 여러 행이 입력되어 하나의 행으로 결과가 반환되는 다중행 함수가 있다. 문자함수 UPPER, LOWER, INITCAP 함수 문자 함수에는 대·소문자로 바꿔주는 함수가 있다. 함수 설명 UPPER(문자열) 괄호 안 문자 데이터를 모두 대문자로 변환하여 변환 LOWER(문자열) 괄호 안 문자 데이터를 모두 소문자로 변환하여 변환 INTCAP(문자열) 괄호 안 문자 데이터..