## 적는 순서
SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY - LIMIT
SELECT CATEGORY,PRICE as MAX_PRICE,PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE (PRICE) IN (SELECT MAX(PRICE) FROM FOOD_PRODUCT GROUP BY CATEGORY)
AND CATEGORY IN ('과자', '국', '김치', '식용유')
ORDER BY PRICE DESC
'파닥%' : '파닥'으로 시작하는 문자열
'%파닥' : '파닥'으로 끝나는 문자열
'%파닥%' : '파닥'이 들어간 문자열
'_파닥' : 첫 글자 하나 있고 그 뒤에 '파닥'이 있는 문자열 (3글자)
'파닥_' : 처음에 '파닥'이 있고 맨 끝에 글자 하나 있는 문자열 (3글자)
'_파닥_' : 처음과 끝에 '파닥'이 있고, 그 가운데 '파닥'이 있는 문자열 (4글자)
ex. WHERE STRING LIKE '파닥%' (LIKE를 꼭 써주자)
CHAR_LENGTH
LENGTH
LENGTH('PADAKMON') => 8
LENGTH('파닥몬') => 9
CHAR_LENGTH('PADAKMON') => 8
CHAR_LENGTH('파닥몬') => 3
LOWER(STR) ↔️ UPPER(STR)
// STR=HELLO
LEFT(STR, 2) => HE
RIGHT(STR, 2) => LO
SUBSTR(STR, 2,2) => EL
SUBSTR(STR, 시작 index, 가져올 개수)
// LEFT
LTRIM(STR)
TRIM(LEADING FROM STR)
// RIGHT
RTRIM(STR)
TRIM(TRAILING FROM STR)
// BOTH
TRIM(STR)
// LEFT
TRIM(LEADING 지울문자열 FROM STR)
// RIGHT
TRIM(TRAILING 지울문자열 FROM STR)
// BOTH
TRIM(BOTH 지울문자열 FROM STR)
CASE
...WHEN과 THEN의 반복
ELSE
END AS 칼럼명
SELECT ORDER_ID, PRODUCT_ID,OUT_DATE,
CASE
WHEN OUT_DATE IS NULL
THEN '출고미정'
WHEN OUT_DATE<='2022-05-01'
THEN '출고완료'
ELSE '출고대기'
END AS 출고여부
FROM FOOD_ORDER
ORDER BY ORDER_ID
SELECT IF(조건, 참 값, 거짓 값)
// 해당 column의 값 중 NULL이 있으면, 대체값 입력
SELECT IFNULL(COLUMN, 대체값)
SELECT ...
FROM ...
WHERE ID BETWEEN 10 AND 40
ROUND(숫자,반올림할 자릿수) - 숫자를 반올림할 자릿수 +1 자릿수에서 반올림
⇒ ROUND(123.3567,2) = 123.36
올림 => CEILING
내림 => FLOOR
// 제곱
POW(밑, 지수)
// 절댓값
ABS(숫자)
Date 관련 단위 :
초-분-시-일-주-월-분기-연
SECOND-MINUTE-HOUR-DAY-WEEK-MONTH-QUARTER-YEAR
# 각 연/월/일을 가져오기
YEAR(날짜), MONTH(날짜), DAY(날짜), DATE(날짜)
# 형 변환
1) DATE_FORMAT(날짜, 원하는 format) ex. %Y-%m-%d
2) TO_DATE(날짜, 원하는 format)
# format
Y = 2022, y=22, M=October, m=10
# 더하기/빼기
// (날짜, INTERVAL_더할/뺄 숫자_단위)
DATE_ADD(DATE, INTERVAL 1 HOUR)
DATE_SUB(DATE, INTERVAL 1 HOUR)
# 차이 구하기
DATEDIFF(날짜1, 날짜2) => '일(DAY)' 기준
TIMESTAMPDIFF(단위, 날짜1, 날짜2) => 단위 기준
SELECT A, B, C, RANK() OVER (ORDER BY salary DESC) "등수"
FROM TABLE;
RANK 관련 함수 3가지 (중복 순위를 어떻게 처리하냐의 차이)
1) RANK : 1-2-3-3-3-6
2) DENSE_RANK : 1-2-3-3-3-4
3) ROW_NUMBER : 1-2-3-4-5-6
SELECT ... FROM ...
LIMIT 가져올 개수