🍃프로그래머스 백엔드 데브코스 4기 교육과정을 듣고 정리한 글입니다.🍃
SELECT
SELECT 컬럼1, 컬럼2, ...
FROM 테이블명
WHERE 조건
GROUP BY 컬럼1, 컬럼2 ...
ORDER BY 컬럼(숫자)[ASC|DESC]
LIMIT 숫자;
CASE WEHN
SELECT fruit,
CASE
WHEN price < 1 THEN '싼 과일'
WHEN price >= 1 AND price <= 2 THEN '보통 가격의 과일'
WHEN price > 2 THEN '비싼 과일'
ELSE '알 수 없음'
END AS price_range
FROM fruits;
COUNT
SELECT COUNT(*) FROM 테이블명 WHERE 조건;
SELECT COUNT(숫자) FROM 테이블명 WHERE 조건;
SELECT COUNT(NULL) FROM 테이블명 WHERE 조건;
SELECT COUNT(컬럼) FROM 테이블명 WHERE 조건;
SELECT COUNT(DISTINCT 컬럼) FROM 테이블명 WHERE 조건;
WHERE
- 조건으로 사용
- CASE WHEN에서 사용 가능
IN
SELECT * FROM 테이블명 WHERE 컬럼 [NOT] IN (값1, 값2, 값3);
LIKE
- 패턴 매칭을 수행하여 문자열 비교
- % 기호는 임의의 문자열
SELECT * FROM 테이블명 WHERE 컬럼 [NOT] LIKE '%패턴%';
BETWEEN
- 주어진 범위 내의 값을 비교(시작값과 끝값 포함)
- 숫자, 날짜 및 문자열 사용 가능
SELECT * FROM 테이블명 WHERE 열명 BETWEEN 값1 AND 값2;
STRING FUNCTION
LEFT(str, N)
SELECT LEFT('Hello World', 5);
REPLACE(str, exp1, exp2)
- 문자열 str에서 exp1을 exp2로 대체한 결과를 반환
SELECT REPLACE('Hello World', 'World', 'Universe');
UPPER(str), LOWER(str)
- 문자열 str을 대(소)문자로 변환한 결과를 반환
SELECT UPPER('Hello');
SELECT LOWER('WORLD');
LENGTH(str)
SELECT LENGTH('Hello World');
LPAD(str, N, exp), RPAD(str, N, exp)
- 문자열 str을 왼(오른)쪽으로 채우고, 총 길이가 N이 되도록 exp로 채움
SELECT LPAD('Hello', 10, '*');
SELECT RPAD('World', 10, '_');
SUBSTRING(str, N)
- 문자열 str에서 특정 부분 문자열을 추출
- 시작 위치와 추출할 길이 지정
SELECT SUBSTRING('Hello World', 7);
SELECT SUBSTRING('Hello World', 7, 5);
CONCAT(str1, str2, ...)
SELECT CONCAT('Hello', ' ', 'World');
ORDER BY
- 테이블에서 레코드를 정렬
- 오름차순(ASC)가 기본값, ORDER BY 1 ASC
- 내림차순(DESC)을 원하면, ORDER BY 1 DESC
- 여러 개의 필드(숫자)를 사용해서 정렬, ORDER BY 1 ASC, 2 DESC, ...
- NULL값은 오름차순 일 경우 처음에 위치, 내림차순 일 경우 마지막에 위치
DATE
NOW()
SELECT NOW();
DATE, WEEK, MONTH, YEAR, HOUR, MINUTE, SECOND, QUARTER, MONTHNAME
SELECT DATE('2023-06-19');
SELECT WEEK('2023-06-19');
SELECT MONTH('2023-06-19');
SELECT YEAR('2023-06-19');
SELECT HOUR('2023-06-19 15:30:45');
SELECT MINUTE('2023-06-19 15:30:45');
SELECT SECOND('2023-06-19 15:30:45');
SELECT QUARTER('2023-06-19');
SELECT MONTHNAME('2023-06-19');
DATEDIFF(date1, date2)
SELECT DATEDIFF('2023-06-19', '2023-06-15');
DATE_ADD(date, INTERVAL value unit)
SELECT DATE_ADD('2023-06-19', INTERVAL 1 DAY);
SELECT DATE_ADD('2023-06-19', INTERVAL 1 MONTH);
SELECT STR_TO_DATE('2023-06-19', '%Y-%m-%d');
SELECT DATE_FORMAT('2023-06-19', '%Y-%m-%d');
SELECT DATE_FORMAT('2023-06-19', '%W, %M %e, %Y');
GROUP BY
- SELECT 문과 함께 사용되며, 그룹화할 컬럼(여러개) 지정
- 아래의 집계함수와 함께 사용
SELECT 컬럼1, 집계함수(컬럼2) FROM 테이블명 GROUP BY 컬럼1;
COUNT()
SUM()
AVG()
MIN()
MAX()
GROUP_CONCAT()