0. 복습
SQL 연산자
1) LIKE 연산자
2) BETWEEN a AND b
3) IN(a, b, c)
4) IS NULL / IS NOT NULL
5) 관계연산자 ANY
6) 관계연산자 ALL
논리연산자
NULL 관련 함수
- NULL : 비워져 있는 값
- NULL은 다른 값과 연산하면 NULL이 나옴
- 다른 값과 비교하면 알 수 없음이 나옴
1) NVL(컬럼, 값)
2) NVL2(컬럼, NULL이 아닐때, NULL일때 값)
3) NULLIF(값, 값)
4) COALESCE(값1, 값2, ...)
DCODE, CASE 문
: 특정 조건에 따라 원하는 값으로 조회할 때 사용
1) DECODE
- DECODE(컬럼명, 조건1, 결과1, 조건2, 결과2, ..., 기본값)
2) CASE
SELECT
CASE
WHEN 조건1 THEN 결과1
...
ELSE 위의 조건에 맞지 않을 때
END
FROM 테이블명
집계함수
- COUNT(), SUM(), AVG(), ...
- 집계 함수의 결과는 행 1개가 나온다 !
- NULL은 포함시키지 않는다
- ** WHERE 절에 사용 불가
그룹 연산
1) GROUP BY
2) HAVING
- GROUP BY로 묶은 그룹에 대한 조건을 설정할 때 사용
** SQL 실행 순서
FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY
1. 내장 함수
- SQL에 내장되어 있는 함수
- DBMS별로 약간의 차이가 있으나, 거의 비슷함
1) 문자열 함수
- SUBSTR(문자열, m, n) : 문자열 m번째 부터 n개 자름
- CONCAT(문자1, 문자2) : 문자열 연결
값 || 값 (연결 연산자와 동일)
- LENGTH(문자열) : 문자열 길이
- LOWER(문자열) : 소문자로 변환
- UPPER(문자열) : 대문자로 변환
- LTRIM(문자열, 지정문자) : 왼쪽에서 지정문자 삭제
- RTRIM(문자열, 지정문자) : 오른쪽에서 지정문자 삭제
- TRIM(지정문자 FROM 문자열) : 양쪽에서 지정문자 삭제
- REPLACE(문자열, 부분문자, 대체할 문자) : 문자열에서 특정 부분을 대체
2) 숫자형 함수
- ABS(숫자) : 절대값
- SIGN(숫자) : 부호 구분(양수, 음수, 0구분)
- MOD(숫자1, 숫자2) : 숫자1을 숫자2로 나눈 나머지
- CEIL(숫자) : 올림
- FLOOR(숫자) : 내림
- ROUND(숫자, m) : 소수점 자리 m에서 반올림
- TRUNC(숫자, m) : 소수점 자리 m에서 절삭
3) 날짜형 함수
- SYSDATE : 오늘 날짜를 날짜형 타입으로 반환
- EXTRACT(YEAR | MONTH | DAY FROM 날짜)
: 날짜에서 연도, 월, 일을 추출
2. 서브쿼리
- 다른 쿼리문 내부에 포함되어 있는 SELECT문을 의미
- 서브쿼리는 () 소괄호로 감싼다
WHERE절 : SUB QUREY
SELECT절 : SCALAR
FROM절 : IN LINE VIEW
=> 일반적으로 전부 서브쿼리라고 부른다
- 메인쿼리 : 서브쿼리를 감싸고 있는 쿼리
1) WHERE 절의 서브쿼리 (Sub Query)
- 메인쿼리의 where절에 SELECT문 사용
- ()소괄호 내에 SELECT문을 사용
(1) 단일 행 서브쿼리
- 서브쿼리 실행결과로 1개 행만 조회됨
- 사용하는 연산자 : 관계 연산자(비교) =, >, <, <>
(2) 다중 행 서브쿼리
- 서브쿼리 실행결과로 여러 개의 행이 조회됨
- 사용하는 연산자 : 다중 행 비교 연산자 IN(), ANY(), ALL()
- IN(a, b, c, ...) : 항목 중 하나에 해당하는 경우
- 관계연산 ANY(a, b, c, ...) : 아무거나 만족하는 경우
- 관계연산 ALL(a, b, c, ...) : 전부 만족하는 경우
(3) 다중 컬럼 서브쿼리
- 여러개의 조건을 한꺼번에 비교할 때 사용
=> 여러 컬럼에 대한 조건을 한 번에 비교할 때 사용