Database/Oracle SQL: 43개의 글
Multiple-Row Subquery란?- 하나 이상의 행을 반환하는 Subquery이다- 단일 행 연산자를 사용하지 못하며, 다중 행 연산자(IN, NOT IN, ANY, ALL, EXISTS)만 사용이 가능하다.IN 연산자- IN 연산자는 하나의 컬럼이 여러개의 '=' 조건을 가지는 경우에 사용- OR는 IN을 포함한다. IN을 사용해 표현할 수 있는 것은 당연히 OR로 표현할 수 있다.- 하지만 OR로 표한한 것은 IN으로 표현하지 못할때가 있다. (OR에서 LIKE같은 연산자를 사용한 경우)- IN은 반드시 하나의 컬럼이 비교되어야 하므로 나중에 인덱스 구성에 대한 전략을 수립할 때 유리하다.- 그러므로 가능한 OR보다는 IN 을 사용하는 것이 좋다.-- 부서별로 가장 급여를 많이 받는 사원의 ..
Single-Row Subquery- SELECT 문장에서 오직 하나의 행(값)만 반환하는 Query이다- 단일 행 연산자(=,>, >=,
Subquery란?- Subquery는 다른 하나의 SQL 문장의 절에 NESTEDED된 SELECT 문장 이다.- SELECT, UPDATE, DELETE, INSERT와 같은 DML문과 CREATE TABLE 또는 VIEW의 WHERE절이나 HAVING절에서 사용 된다.- 보통 Subquery는 Main Query 이전에 한 번 실행된다.- Subquery는 괄호로 묶어야 한다.- 단일 행 연산자(=, >, >=,
GROUP BY절- GROUP BY 절은 데이터들을 원하는 그룹으로 나눌 수 있다.- 나누고자 하는 그룹의 컬럼명을 SELECT절과 GROUP BY절 뒤에 추가하면 된다.- 집계함수와 함께 사용되는 상수는 GROUP BY 절에 추가하지 않아도 된다. (개발자 분들이 많이 실수 함)- 아래는 집계 함수와 상수가 함께 SELECT 절에 사용되는 예이다.-- 부서별 사원수 조회SELECT '2005년' year, deptno 부서번호, COUNT(*) 사원수 FROM emp GROUP BY deptno ORDER BY COUNT(*) DESC; YEAR 부서번호 사원수------ ---------- ----------2005년 30 62005년 20 52005년 10 3아래 예제는 부서별로 그룹하여 부서번호,..
집계 함수란 여러행 또는 테이블 전체 행으로부터 하나의 결과값을 반환하는 함수이다.집계함수(Aggregate function)의 이해- GROUP BY절을 이용하여 그룹 당 하나의 결과로 그룹화 할 수 있다.- HAVING절을 사용하여 집계함수를 이용한 조건 비교를 할 수 있다.- MIN, MAX 함수는 모든 자료형에 사용 할 수 있다.- 일반적으로 가장 많이 사용하는 집계함수에는AVG(평균), COUNT(개수), MAX(최대값), MIN(최소값), SUM(합계) 등이 있다.COUNTCOUNT 함수는 검색된 행의 수를 반환 한다.-- 검색된 행의 총 수 4개를 반환. 즉 4개의 부서가 존재한다.SELECT COUNT(deptno) FROM dept; COUNT(DEPTNO)------------- 4 M..
NVLNVL 함수는 NULL 값을 다른 값으로 바꿀 때 사용하며, 모든 데이터 타입에 적용이 가능하다.-- 매니저가 없는 값을 0으로 바꾸어서 출력하는 예제.SELECT empno, NVL(mgr, 0) mgr FROM emp WHERE deptno = 10; EMPNO MGR------- ------- 7782 7839 7839 0 7934 7782 NVL2- NVL2라는 함수는 NVL함수의 DECODE 함수의 개념을 합쳤다고 생각하면 쉽습니다.- NVL2(expr, expr1, expr2)- expr의 값이 NULL이 아닐 경우에는 expr1의 값을 반환 하고, NULL일 경우에는 expr2의 값을 반환 한다.-- 매니저가 있는경우 1을 없는경우 0을 출력하는 예제이다.SELECT empno, NVL..
DECODE와 CASE 함수는 SQL 문장에서 조건에 해당하는 값을 추출하고자 할 때 주로 사용한다DECODE- DECODE 함수는 조건에 따라 데이터를 다른 값이나 컬럼값으로 추출 할 수 있다.- DECODE(VALUE, IF1, THEN1, IF2, THEN2...) 형태로 사용 할 수 있다.- VALUE 값이 IF1일 경우에 THEN1 값을 반환하고, VALUE 값이 IF2일 경우에는 THEN2 값을 반환한다.- DECODE 함수 안에 DECODE함수를 중첩으로 사용 할 수 있다.아래는 DECODE 함수의 일반적인 예제이다.-- 부서번호가 10이면 ACCOUNTING, 20이면 RESEARCH, 30이면 SALES-- 나머지는 OPERATIONS를 출력하는 예제SELECT deptno, DECODE..
DUMPDUMP는 바이트 크기와 해당 데이터 타입 코드를 반환 한다. -- 16대신 8을 넣으면 8진수로, 10를 넣으면 10진수로 변환이 된다. -- Len은 ename의 해당 byte 수 이다. SQL> SELECT ename, DUMP(ename, 16) "16진수" FROM emp WHERE ename = 'ALLEN'; ename 16진수 ------ ------------------------------ ALLEN Typ=1 Len=5: 41,4c,4c,45,4eGREATESTGREATEST 함수는 검색 값 중에서 가장 큰 값을 반환 한다. SQL> SELECT GREATEST(10, 100, 5, -7) FROM DUAL; GREATEST(10,100,5,-7) ----------------..
TO_CHARTO_CHAR 함수는 DATE형, NUMBER형을 문자 타입으로 변환하는 함수이다. TO_CHAR(number), TO_CHAR(number, format), TO_CHAR(date, format) 형식으로 사용할 수 있다.Number Format의 변환 예제NUMBER 타입의 데이터를 아래와 같이 특정 형식의 문자 타입으로 변환 할 수 있다.-- 콤마 예제SELECT TO_CHAR(12345678,'999,999,999') comma FROM DUAL; -- 소숫점 예제 SELECT TO_CHAR(123.45678,'999,999,999.99') period FROM DUAL; -- $ 표시 예제SELECT TO_CHAR(12345678,'$999,999,999') dollar FROM D..
날짜 함수는 오라클 날짜에 대해 연산을 한다.날짜 함수는 NUMBER형 값 또는 DATE형의 값을 RETURN 한다.SYSDATESYSDATE 함수를 사용하면 현재 일자와 시간(시스템기준)을 얻을 수 있다.최소단위 = 1초SELECT TO_CHAR(SYSDATE,'RRRR-MM-DD HH24:MI:SS') "지금시간" FROM DUAL ; SELECT TO_CHAR(SYSDATE-1,'RRRR-MM-DD HH24:MI:SS') "하루전지금시간" FROM DUAL ; SELECT TO_CHAR(SYSDATE-1/24,'RRRR-MM-DD HH24:MI:SS') "1시간전시간" FROM DUAL ; SELECT TO_CHAR(SYSDATE-1/24/60,'RRRR-MM-DD HH24:MI:SS') "1분전시..