목차 :
3. 함수
4. WHERE
5. GROUP BY, HAVING
6. ORDER BY
7. 서브 쿼리
8. JOIN
3. 함수
- 함수는 단일 행 함수, 다중 행 함수, 사용자 정의 함수로 나뉜다.
- 단일 행 함수
- 문자형 함수 : 문자 입력하면 문자나 숫자 값 반환. LOWER, UPPER, CONCAT(문자열 연결), SUBSTR(인덱스 위치에서 n개의 문자 길이에 해당하는 문자 반환), LENGTH, LTRIM(지정문자가 나타나면 해당 문자 제거, 공백 제거), RTRIM(마지막 문자부터 봐서 지정문자가 나타나면 해당 문자 제거,오른쪽 공백 제거), TRIM(양쪽) 이 있다.
4. WHERE
- 연산자를 통해 조건을 부여하여 자신이 원하는 자료를 검색하기 위한 구문이다.
- 비교 연산자 : =,>,<,>=,<=,!=,^=,<>가 있다.
- 논리 연산자 : AND, OR, NOT
- SQL 연산자 : BETWEEN A AND B(A,B값 사이), IN (list) : 리스트 값중에서 하나라도 일치, LIKE 문자열(문자열과 형태가 일치), IS NULL(null값 인경우)
- null 값 연산시 =은 쓰지말자
- IN과 NOT IN 절에서 NULL : IN에서 null값인 데이터는 항상 나오지 않는다, NOT IN은 하나라도 일치하면 안되므로 row가 나오지 않는다.
- ROWNUM & TOP : ROWNUM은 행 갯수 제한, TOP도 마찬가지(SQL Server)
5. GROUP BY, HAVING
- 집계함수는 여러 행들의 그룹이 모여서 단 하나의 결과를 돌려주는 다중행 함수중 하나이다. COUNT(*)(null 포함),COUNT(표현식)(null 포함 안함) SUM, AVG, MAX, MIN, STDDEV, VARIAN이 있다.(null제외)
- GROUP BY, HAVING : 그룹바이 절로 소그룹별 기준을 정한다. null값 제외, 별칭 사용 못함, 집계함수는 WHERE 절에 올 수 없다. WHERE절이 그룹바이보다 먼저 실행, HAVING은 그룹바이 절 뒤에 위치하여 그룹바이 절의 조건 표시
- 작성법 : SELECT절 집계함수가 있으면 그룹바이 지정해야함, 별칭은 그룹바이에서 사용 불가, WHERE절은 그룹함수 사용 안됌. HAVING에서 사용
SELECT [DISTINCT] 컬럼명 [ALIAS명]
FROM 테이블명
WHERE 조건식
GROUP BY 컬럼이나 표현식
HAVING 그룹조건식
6. ORDER BY
- 정렬하기 위해 사용, 별칭이나 컬럼순서를 나타내는 정수 사용 가능, 기본값으로 오름차순
- 실행 순서 :
1. 대상 테이블 참조(FROM)
- 대상 테이블 아닌건 제거(WHERE)
- 행들을 소그룹화(GROUP BY)
- 그루핑된 값의 조건에 맞는 것만 출력(HAVING)
- 데이터 값을 출력/계산(SELECT)
- 데이터를 정렬(ORDER BY)
7. 서브 쿼리
- 서브쿼리는 SQL문 안의 또 다른 SQL문. 괄호로 감싼다. 단일행 비교연산자를 쓰면 결과가 1건이어야 하고 복수 행이면 건수 상관 없다. 중첩 및 스칼라 서브 쿼리에서는 ORDER BY와 세미콜론 사용 불가, SELECT FROM WHERE HAVING ORDER BY에서 사용 가능
- 비연관 서브커리는 단독으로 실행하는 쿼리. 외부와 상관 없음
- 연관 서브쿼리는 내부 쿼리의 값을 외부 쿼리에 의존한다
- 단일 행 서브쿼리는 단일행 비교 연산자를 사용한 쿼리. =,<,<=,>,>=,<>
- 다중 행 서브쿼리는 결과가 여러건인 서브쿼리. IN ALL ANY SOME EXISTS
- 다중 컬럼 서브쿼리는 실행 결과로 여러 컬럼은 반환하는 서브쿼리. 서브쿼리와 메인 쿼리에서 비교하고자 하는 컬럼 갯수와 컬럼위치가 동일해야한다.
8. JOIN
- 조인은 2개 이상의 테이블들을 연결해 데이터를 출력하는 것을 의미한다. 관계형 데이터베이스의 가장 큰 장점이면서 핵심 기능이다.
- INNER JOIN : 기본 조인. 조인에 참여하는 테이블이 n개라면 최소 조인 조건은 n-1개가 있어야 한다. WHERE 절로도 표현 가능하다.
- OUTER JOIN : 조인 조건을 만족하지 않는 행들도 함께 반환할 때 사용한다. LEFT/RIGHT로 나뉘고 WHERE 절로도 표현 가능
SELECT FROM LEFT OUTER JOIN ON = SELECT FROM WHERE a=b(b는 기준테이블임. 전부 나옴)
- CROSS JOIN : 속칭 막조인이라고 부른다. 두 테이블 집합의 모든 경우의 수가 나온다. 3건 3건이면 9건임
- FULL OUTER JOIN : 조인 수행 시 좌측 우측 테이블의 모든 데이터를 읽어서 조인한다. LEFT/RIGHT OUTER JOIN의 결과를 합집합으로 처리한다.