SQL

[MySQL] BASIC

mopipi 2024. 1. 24. 16:20
반응형
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, ...) : 주어진 숫자 중 최솟값 출력 

 

 

반응형