SELECT, WHERE, JOIN, GROUP BY, HAVING, ORDER BY 등의 기본문법은 제외했습니다.
문자열 조작
CONCAT(str1, str2, ...) | 문자열 합치기, 하나라도 null 존재하면 null 반환 |
SUBSTRING(str, 시작, 끝) | 부분문자열 추출 |
LOCATE(str, 찾는 문자열) | 문자열 내에서 찾는 문자열이 처음으로 나타나는 위치를 찾아서 해당 위치를 반환, 존재 안하면 0 반환 (시작 인덱스 1) |
LEFT(str, 개수) RIGHT(str, 개수) |
문자열의 왼쪽/오른쪽부터 지정한 개수만큼의 문자를 반환 |
LENGTH(str) | 문자열 길이 |
LOWER(str) UPPER(str) |
문자열의 문자를 모두 대/소문자로 변경 |
REPLACE(str, 바꾸고 싶은 문자, 바꿀 문자) | 문자 바꾸기 |
TRIM(제거하고 싶은 문자열 FROM str) | 문자열 내부의 특정 문자열 제거 |
문자열 검색
WHERE 컬럼명 LIKE "%문자열%" | 문자열이 포함되는지 확인 |
WHERE 컬럼명 REGEXP 정규식 | 정규식을 만족하는지 확인 |
WHERE 컬럼명 IN (str1, str2, ...) | 문자열이 괄호 안의 값들 중 하나인지 확인 |
LIKE - 와일드카드
와일드카드 문자 | 의미 |
% | 해당 위치에 있는 0개 이상의 문자 |
_ | 해당 위치에 있는 문자 하나 |
REGEXP - 정규식
정규식 | 의미 |
^a | a로 시작하는 문자열 |
a$ | a로 끝나는 문자열 |
[abc] | a, b, c 중 하나의 문자 |
[^abc] | a, b, c 를 제외한 하나의 문자 |
[a-z] | a ~ z 중 하나의 문자 |
.* | 모든 문자열 |
숫자 조작
ROUND(값, 반올림 결과 자릿수) CEIL(값, 올림 결과 자릿수) FLOOR(값, 내림 결과 자릿수) TRUNCATE(값, 버릴 자릿수) |
반올림, 올림, 내림, 버림 |
SUM(컬럼명) AVG(컬럼명) |
컬럼의 총합, 평균 |
MIN(컬럼명) MAX(컬럼명) |
컬럼의 최댓값, 최솟값 (이때, 해당 행을 전체 다 가져오는 게 아님을 주의) |
COUNT(컬럼명) | 컬럼이 가진 행의 개수 |
날짜 조작
DATE_FORMAT(날짜, "포맷") | 날짜를 포맷대로 바꿈 |
DATEDIFF(날짜1, 날짜2) | 날짜1과 날짜2 사이의 기간 |
YEAR(날짜) MONTH(날짜) DAY(날짜) |
년, 월, 일 정보 |
범위 조작
BETWEEN A AND B | A와 B 사이의 값 |
DISTINCT 컬럼명 | 중복된 것은 1개씩만 보여준다 |
LIMIT N | 상위 N개만 출력 |
서브쿼리 다루기
- 서브쿼리의 결과는 무조건 하나여야 한다.
최댓값을 가진 행 찾기
SELECT *
FROM A
WHERE AGE = ( SELECT MAX(AGE)
FROM A )
ANY - 서브쿼리의 결과 중 아무거나
SELECT *
FROM A
WHERE AGE > ANY ( SELECT AGE
FROM A )
⏩️ AGE 컬럼 중 어떤 값보다만 크면 된다.
ALL - 모든 서브쿼리의 결과
SELECT *
FROM A
WHERE AGE > ALL ( SELECT AGE
FROM A )
⏩️ AGE 컬럼의 모든 값보다 커야 한다.
CASE문
SELECT
CASE
WHEN [컬럼명] = "A"
THEN "X"
WHEN [컬럼명] = "B"
THEN "Y"
ELSE "Z"
END AS [원하는 컬럼명]
FROM [테이블]
IF문
IF(조건문, 참일때 값, 거짓일때 값) | 참일 때와 거짓일 때 값을 다르게 출력 |
IFNULL(컬럼명, 대체하고 싶은 값) | null일 때 값을 대체해서 출력 |
WITH RECURSIVE 구문
WITH RECURSIVE [원하는 테이블명] AS (
SELECT [초기값] AS [원하는 컬럼명]
UNION ALL
SELECT [원하는 컬럼명] + 1
FROM [원하는 테이블명]
WHERE [원하는 컬럼명] < [원하는 컬럼 개수]
)
WITH RECURSIVE HOURS AS (
SELECT 0 AS HOUR
UNION ALL
SELECT HOUR + 1
FROM HOURS
WHERE HOUR < 23
)
WITH RECURSIVE 예제 - 프로그래머스 입양 시각 구하기(2)
그룹 별 특정 조건을 만족하는 ROW 뽑기
SELECT *
FROM [테이블명] AS A
WHERE [컬럼명] = (SELECT MAX([컬럼명])
FROM [테이블명] AS B
WHERE A.[그룹 컬럼명] = B.[그룹 컬럼명])
⏩️ [그룹 컬럼명]으로 구분되는 그룹 내부에서 [컬럼명]이 최댓값인 ROW들을 뽑아 보여준다
그룹 별 특정 조건을 만족하는 row 뽑기 예제 - 프로그래머스 즐겨찾기가 가장 많은 식당 정보 출력하기
'알고리즘 > 코딩테스트' 카테고리의 다른 글
모듈러 연산의 분배법칙 (0) | 2024.01.07 |
---|---|
[JS] 배열을 순회하는 반복문, 함수 (for, for ... of, map(), filter(), forEach(), reduce()) 비교 (1) | 2024.01.05 |