SELECT 필드이름1, 필드이름2
FROM 테이블이름
WHERE 선택조건
GROUP BY 필드이름1, 필드이름2
ORDER BY 필드이름 OR 필드번호 [ASC|DESC]
LIMIT N;
조회할 데이터 개수 지정
중복된 데이터 제거하여 조회
모든 레코드 수 카운트 = COUNT(0) = COUNT(1) = COUNT(*)
SELECT channel_id,
CASE
WHEN channel_id in (1, 5, 6) THEN 'Social-Media'
WHEN channel_id in (2, 4) THEN 'Search-Engine'
ELSE 'Something-Else'
END channel_type // 필드 이름
FROM session;
SELECT 0 + NULL, 0 - NULL, 0 * NULL, 0 / NULL → NULL
COUNT(null) → 0
LEFT(str, N)
문자열 왼쪽에서부터 N개만 보여준다.
RIGHT(str, N)
문자열 오른쪽에서부터 N개만 보여준다.
LPAD(필드_이름, N, '-')
필드에 해당하는 value를 N 길이 만큼만 보여준다. 만약 value의 길이가 N보다 작다면 작은 만큼 '-'을 왼쪽에 채원주다. ('-'은 다른 문자로 교체할 수 있다.)
select LPAD(channel, 15, 'ㅁ') from channel limit 1; → ㅁㅁㅁㅁㅁㅁInstagram
RPAD(필드_이름, N, '-')
필드에 해당하는 value를 N 길이 만큼만 보여준다. 만약 value의 길이가 N보다 작다면 작은 만큼 '-'을 오른쪽에 채원주다. ('-'은 다른 문자로 교체할 수 있다.)
select RPAD(channel, 15, 'ㅁ') from channel limit 1; → Instagramㅁㅁㅁㅁㅁㅁ
SUBSTR(str, pos)
str에서 pos 번째 위치에서 모든 문자를 읽어들인다.
SUBSTR(str, pos, len)
str에서 pos 번째 위치에서 len개의 문자를 읽어 들인다.
문자열을 합친다.
select concat(id, '. ', channel) from channel limit 1; → 1. Instagram
DATEDIFF(날짜1, 날짜2)
날짜1과 날짜2가 몇일 차이가 나는지 알려준다.
DATEADD(기준날짜, INTERVAL)
SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR);
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);
DATESUB(기준날짜, INTERVAL)
SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR);
SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);
STR_TO_DATE
timestamp 문자열을 DATE 타입으로 변경
DATE_FORMAT
timestamp DATE 타입으로 문자열로 변경
SELECT cast('100.0' as float), convert('100.0', float);
테이블의 레코드를 그룹핑하여 다양한 정보를 계산한다.
SELECT channel_id, COUNT(1)
FROM session
GROUP BY 1; // 첫번째 필드(channel_id)를 기준으로 그룹화하라!
필드 이름 OR 필드의 일련 번호를 사용하여 그룹화한다.