추출할 데이터의 조건.
모든 레코드를 읽는 것이 아닌, 관심 있는 레코드만 찾아올 수 있음.
예. 시기, 특정 페이지의 세션.
FROM 절 바로 뒤에 위치.
GROUP BY 앞에 위치해야 함. 같이 쓸 수 있는 명령어.
IN : 조건에 해당하는 것들.
NOT IN : 해당 조건이 아닌 나머지.
LIKE '': 대소문자 구별 없이 문자열 매칭 기능 제공.
WHERE channel LIKE ‘G%’ -> ‘G*’ : 알파벳 G로 시작하는 모든 채널을 탐색.
NOT LIKE '': ‘ ’만 안 들어가는 것 탐색.
BETWEEN A AND B : 조건의 A부터 B까지.
주로 날짜, 시간 따위에 사용.
위의 명령어들은 CASE WHEN에서도 사용 가능.
WHERE 과 HAVING 의 차이.
WHERE은 개별 행, HAVING은 전체 결과 대상으로 적용됨.
WHERE은 개별 행 필터링, HAVING은 그룹 전체의 필터링.
WHERE은 GROUP BY 전에 사용해야하며, HAVING은 후에 사용해야 함.
GROUP BY
테이블의 레코드를 그룹핑하여 그룹별로 다양한 정보를 계산.
두 단계로 나누어짐.
1 그룹핑 할 필드를 결정하고 GROUP BY로 지정.
필드는 하나 이상이 될 수 있고, 지정은 필드 이름을 사용하거나 필드 일련번호를 사용함.
2 그룹별로 계산할 내용을 결정.
Aggregate함수 사용 (COUNT, SUM, AVG, MIN, MAX, GROUP_CONCAT ~~~)
ORDER BY
출력 시 데이터를 정렬해줌.
디폴트 순서는 오름차순. (작은 값이 먼저 나옴)
ASC - 오름차순 / DESC - 내림차순
여러 필드를 사용해서 정렬하려면
ORDER BY 1 DESC 2, 3,;
DISTINCT
중복되지 않은 값을 알고 싶을 때 사용.
COUNT
데이터의 개수를 셀 때 사용.
COUNT 함수는 인자에 따라 달라짐. NULL이 아닌 경우 1씩 카운트, NULL인 경우 카운트를 하지 않음.
VALUE : NULL이 아닌 경우를 카운트.
DISTINCT VALUE : NULL이 아닌 값 중 중복되지 않은 경우를 카운트.
CASE WHEN
필드 값의 변환을 위해 사용.
여러 조건을 사용하여 변환하는 것도 가능.
CASE
WHNE 조건 1 THEN (조건1이 참일 때) 값
WHEN 조건 2 THEN (조건 2가 참일 때) 값
ELSE (조건이 거짓일 때) 값
END 필드 이름;
NULL
값이 존재하지 않음을 나타내는 상수.
0이나 " "과는 다름.
필드 지정 시 값이 없는 경우 NULL로 지정 가능.
테이블 정의 시 디폴트 값으로도 지정 가능.
어떤 필드의 값이 NULL인지 아닌지 비교는 특수한 문법으로 함.
field1 is NULL 혹은 field is NOT NULL