조인의 종류

 - 조인 연산자에 따른 구분: 동등 조인, 안티 조인

 - 조인 대상에 따른 구분: 셀프 조인

 - 조인 조건에 따른 구분: 내부 조인, 외부 조인, 세미 조인, 카타시안 조인

 - 기타: ANSI 조인

 

동등 조인: =

세미 조인: IN, EXISTS

안티 조인: NOT IN, NOT EXISTS

셀프 조인: 동일 테이블 조인

외부 조인: OUTER JOIN은 조인 조건에 명시된 컬럼에 값이 NULL이거나 ROW가 없더라도 데이터를 모두 추출

※ OUTER JOIN

 1) 조인 대상 테이블 중 데이터가 없는 테이블 조인 조건에 (+)를 붙인다

 2) 외부 조인의 조인 조건이 여러 개일 때 모든 조건에 (+)를 붙인다

 3) 한 번에 한 테이블에만 외부 조인을 할 수 있다.

 4) (+)연산자가 붙은 조건과 OR를 같이 사용할 수 없다

 5) (+)연산자가 붙은 조건에는 IN 연산자를 같이 사용할 수 없다(단 IN절에 포함되는 값이 1개이면 사용 가능)

카타시안 조인: WHERE 절에 조인 조건이 없는 조인

 

ANSI 조인

 

서브쿼리 종류

 - 메인 쿼리와의 연관성에 따라

   > 연관성 없는 서브 쿼리

   > 연관성 있는 서브 쿼리

 

 - 형태에 따라

   > 일반 서브 쿼리(SELECT 절)

   > 인라인 뷰(FROM 절)

   > 중첩 쿼리(WHERE 절)

 

COUNT(expr)

 - NULL이 아닌 ROW수만 반환

 - COUNT(*) : 전체 로우 반환(NULL 포함)

SUM(expr)

AVG(expr)

MIN(expr), MAX(expr)

VARIANCE(expr), STDDEV(expr)

 

GROUP BY, HAVING

 

ROLLUP, CUBE

 - ROLLUP(expr1, expr2, ...) : expr로 명시한 표현식 기준으로 집계한 결과 뿐 아니라 추가적인 집계 정보도 보여준다.

   레벨별로 집계한 결과 반환. 표현식 개수가 n개이면 n+1 레벨까지 하위 레벨에서 상위 레벨 순으로 데이터 집계

 - CUBE(expr1, expr2, ...) : ROLLUP이 레벨별로 순차적 집계를 했다면, CUBE는 명시한 표현식의 모든 경우의 수를 조합     별로 집계한 결과를 반환. 2^(expr개수) 만큼 종류별로 집계

표현식 집계 종류
ROLLUP(expr1, expr2) expr1 + expr2
expr1
전체
GROUP BY expr1, ROLLUP(expr2, expr3) expr1 + (expr2 + expr3)
expr1 + (expr2)
expr1
GROUP BY ROLLUP(expr1), expr2 expr2 + expr1
expr2
CUBE(expr1, expr2) expr1 + expr2
expr1
expr2
전체
GROUP BY expr1, CUBE(expr2, expr3) expr1 + (expr2 + expr3)
expr1 + (expr2)
expr1 + (expr3)
expr1

 

UNION, UNION ALL

 - UNION은 중복 제거

 - UNION ALL은 중복 포함

MINUS

INTERSECT

※ 집합 연산자 제한사항

 1) 각 SELECT문의 리스트 개수와 데이터 타입이 일치해야 한다

 2) ORDER BY절은 맨 마지막 문장에서만 사용가능

 3) BLOB, CLOB, BFILE 타입 컬럼은 집합 연산자 사용 불가

 4) UNION, INTERSECT, MINUS 연산자는 LONG형 컬럼에서 사용 불가

 

GROUPING SETS

 - GROUP BY GROUPING SETS(expr1, expr2, expr3) : (GROUP BY expr1) UNION ALL (GROUP BY expr2) UNION ALL (GROUP BY expr3)

 

숫자 함수

ABS(n) : 절대값

ex) ABS(-10.123) : 10.123

 

CEIL(n), FLOOR(n) : 올림, 내림

ex) CEIL(11.001) : 12, FLOOR(11.001) : 11

 

ROUND(n, i) : n을 소수점 i+1번 째에서 반올림한 결과

ex) ROUND(10.123, 2) : 10.12

 

TRUNC(n1, n2) : n1을 소수점 기준 n2자리에서 잘라낸 결과

ex) TRUNC(11.123, 2) : 11.12

 

POWER(n2, n1) : n2를 n1 제곱

SQRT(n) : n의 제곱근

 

MOD(n2, n1) : n2를 n1으로 나눈 나머지 값

REMAINDER(n2, n1) : n2를 n1으로 나눈 나머지 값

 

EXP(n)

LN(n)

LOG(n2, n1)

 

문자 함수

INITCAP(char) : char의 첫 문자는 대문자로 나머지는 소문자로 반환

LOWER(char)

UPPER(char)

 

CONCAT(char1, char2) : || 연산자처럼 두 문자를 붙여 반환

SUBSTR(char, pos, len) : 대상 문자열 char의 pos번째 문자부터 len 길이만큼 잘라낸 결과 반환

SUBSTRB(char, pos, len) : 문자 갯수가 아닌 바이트수 만큼 잘라낸 결과 반환

ex) SUBSTRB('ABCDEFG', 1, 4) : ABCD, SUBSTRB('가나다라마바사', 1, 4) : 가나

 

LTRIM(char, set), RTRIM(char, set) : char 문자열에서 set으로 지정된 문자열을 왼쪽 또는 오른쪽 끝에서 제거한 후 나머지 문자열 반환

ex) LTRIM('ABCDEFGABC', 'ABC') : DEFGABC, RTRIM('ABCDEFGABC', 'ABC') : ABCDEFG

 

※set 문자열이 맨왼쪽 또는 오른쪽에 없고 중간에 있다면 문자열 전체 반환한다.

set를 생략하면 공백 문자 한글자가 set로 사용된다.

  > 공백 제거

 

LPAD(expr1, n, expr2), RPAD(expr1, n expr2) : expr2를 왼쪽 또는 오른쪽부터 채워 expr1을 반환, n은 expr2와 expr1이 합쳐져 반환되는 총 자릿수를 의미한다.

 > expr2를 생략하면 디폴트로 공백 한 문자

 

REPLACE(char, search_str, replace_str)

TRANSLATE(expr, from_str, to_str)

 

INSTR(str, substr, pos, occur) : str 문자열에서 substr과 일치하는 위치를 반환. pos는 시작 위치로 디폴트는 1, occur은 몇 번째 일치하는지 명시하는 값으로 디폴트는 1

LENGTH(chr), LENGTHB(chr)

 

날짜 함수

SYSDATE

ADD_MONTHS(date, integer)

MONTHS_BETWEEN(date1, date2)

LAST_DAY(date) : date 기준으로 해당 월의 마지막 일자를 반환

ROUND(date, format), TRUNC(date. format) : ROUND는 format에 따라 반올림한 날짜를, TRUNC는 잘라낸 날짜를 반환

ex) SYSDATE : 2015-03-16 22:11:51

     ROUND(SYSDATE, 'MONTH') : 2015-04-01 00:00:00

     TRUNC(SYSDATE, 'MONTH') : 2015-03-01 00:00:00

NEXT_DAY(date, char) : date를 char에 명시한 날짜로 다음 주 주중 일자를 반환

 

변환 함수

TO_CHAR(숫자 혹은 날짜, format)

TO_NUMBER(expr, format)

TO_DATE(char, format)

 

NULL 관련 함수

NVL(expr1, expr2), NVL2(expr1, expr2, expr3) : expr1이 NULL 이면 expr2 반환 아니면 expr3 반환

COALESCE(expr1, expr2, ...) : NULL이 아닌 첫 번째 표현식을 반환하는 함수

 

기타함수

GREATEST(expr1, expr2, ...), LEAST(expr1, expr2, ...)

DECODE(expr, search1, result1, search2, result2, ..., defalut)

+ Recent posts