SELECT {COL1}, {COL2}, ...
FROM {TABLE}
WHERE {CONDITION}
GROUP BY {COL}
HAVING {그룹화 한 데이터 거를 조건}
ORDER BY {COL1}, {COL2}... ASC/DESC;
▫️ GROUP BY
- 특정 기준에 대해 그룹화한 데이터를 집계 함수에 사용
- COUNT, AVG, MIN, MAX, SUM (COUNT를 사용할 경우 보통 COUNT(*)로 사용)
- GROUP BY 뒤에 제시한 열 기준으로 카테고라이징
▫️ HAVING
- GROUP BY 절로 그룹화 된 데이터들을 2차적으로 거를 조건 제시
- 여기에도 COUNT, AVG, MIN, MAX, SUM 값을 토대로 조건문을 쓸 수 있음
▫️ SELECT {col1}, {col2}, NULL
- SELECT로 테이블을 가공하면서, NULL값을 디폴트로 하는 열을 임의로 1개 추가해서 출력함
- COL 개수가 다른 테이블들을 UNION 하고 싶을 때 임의로 추가함
▫️ IN, NOT IN
- OR로 여러가지 조건을 달고 싶을 때 한 번에 처리할 수 있음
- 주로 WHERE과 함께 사용함, 괄호 안에 서브쿼리가 올 수도 있음 (여러 개 중 하나에 해당하는지 조건으로)
→ JOIN과 동일한 기능을 함
WHERE KEY_ID IN (SELECT ID
FROM ITEM_INFO
WHERE RARITY = 'RARE')
>> 서브쿼리로 구성한 예시
▫️ REGEXP
-- 다중 LIKE
WHERE OPTIONS LIKE '%통풍시트%' OR OPTIONS LIKE '%열선시트%' OR OPTIONS LIKE '%가죽시트%'
-- 정규 표현식
WHERE OPTIONS REGEXP '통풍시트|열선시트|가죽시트'
- LIKE와 비슷한 기능을 하지만, 정규 표현식(패턴과 일치하는 문자열 검색)을 이용해 검색함
▫️ 특정 문자가 포함된 문자열 다중 LIKE 처리 : '통풍시트|열선시트|가죽시트'
▫️ 특정 문자로 시작하는 문자열 .. : '^통풍시트|^열선시트|^가죽시트'
▫️ 길이가 6인 문자열 중 3번째 자리부터 OK를 포함하는 문자열 .. : '^..OK..$'
➕ {텍스트 + 숫자} 로 구성된 문자열에서 숫자만 있는 문자열 찾기
WHERE OPTIONS REGEXP ('^[0-9]+$')
OR OPTIONS REGEXP ('^\d$')
OR OPTIONS REGEXP ('^[:digit:]$');
✅ 연산자
🔻연산자 우선순위 : 산술 연산자 > 대소 비교 연산자 > 비교 연산자 > BETWEEN 연산자 > 논리 연산자
▫️ 산술 연산자 (사칙 연산자)
- 종류 : +, -, *, /
- 우선 순위 : 괄호 > 곱하기 = 나누기 > 더하기 = 빼기
▫️ 논리 연산자
- 종류 : NOT, AND, OR
- 우선 순위 : NOT > AND > OR
✅ 숫자 함수
- ABS(숫자) : 절대값 출력
- CEIL(숫자) : 소수점 이하 올림
- FLOOR(숫자) : 소수점 이하 버림
- ROUND(숫자, 자릿수) : 자릿수 기준 반올림 (디폴트 : 소수점 첫번째 자리에서 반올림)
EX) ROUND(1.1215, 3) → 1.122
- TRUNCATE(숫자, 자릿수) : 자릿수 기준 버림
EX) TRUNCATE(123291, -4) → 120,000
- POW(X, Y), POWER(X, Y) : X의 Y제곱
- GREATEST(N1, N2, ...) : 주어진 숫자 중 최대값 출력
- LEAST(N1, N2, ...) : 주어진 숫자 중 최솟값 출력
'SQL' 카테고리의 다른 글
[SQL/MySQL] 다양한 함수 (문자열, 수학, 집계, 시간, 조건...) (0) | 2024.02.22 |
---|---|
[SQL/MySQL] 조건문 - IF, CASE (0) | 2024.02.13 |
[SQL/MySQL] JOIN, UNION, WITH (0) | 2024.01.22 |
[SQL/MySQL] DATE 관련 함수들 (0) | 2024.01.20 |