[DB/DML] 코테 대비용 MYSQL, SELECT 문법 정리

 

 

 

여러 코딩테스트를 치다보니 자잘한 함수가 안 외워져 풀 수가 없었습니다.

그래서 SQL문제 30개를 풀어보며 필요한 문법, 함수, 연사자들을 제대로 정리해봤습니다.

 

🧨MYSQL 기준이며, ORCLE은 일부 호환이 안 될 수 있습니다.

1️⃣SELECT의 기본 문법


WHERE

SELECT * FROM table WHERE colume = 'value';

ORDER BY

SELECT * FROM table ORDER BY column ASC; 
SELECT * FROM table ORDER BY column DESC;
SELECT * FROM table ORDER BY column DESC LIMIT 3;

GROUP BY

SELECT column, COUNT(*) FROM table GROUP BY column;

HAVLING

SELECT column, COUNT(*) FROM Table GROUP BY column HAVING COUNT(*) > 1;

Limit

SELECT * FROM table LIMIT 10;

DITINCT

SELECT DISTINCT column FROM table

JOIN

SELECT * FROM table1 JOIN table2 ON table1.column = table2.column;

UNION

SELECT column FROM table1 UNION SELECT column FROM table2;

AS

SELECT column AS alias_name FROM table;

2️⃣  SQL 조건문


CASE 표현식 (CASE - WHEN - THEN - ELSE - END)

SELECT column1, column2,
    CASE
        WHEN column3 = '조건1' THEN '값1'
        WHEN column3 = '조건2' THEN '값2'
        ELSE '기본값'
    END AS modified_column3
FROM table

3️⃣SQL 연산자들


NULL 체크

SELECT * FROM table_name WHERE column_name IS NOT NULL;
SELECT * FROM table_name WHERE column_name IS NULL

범위 내의 값 선택 (BETWEEN __ AND __ )

SELECT * FROM table_name WHERE column_name BETWEEN 'value1' AND 'value2'

리스트 내의 값 중 하나와 일치하는 행 선택 ( IN )

SELECT * FROM table_name WHERE column_name IN ('value1', 'value2', 'value3');

패턴에 일치하는 행 선택 ( LIKE)

SELECT * FROM table_name WHERE column_name LIKE '%pattern%';
SELECT * FROM table_name WHERE column_name LIKE '_pattern'; 

4️⃣SQL 숫자 관련 함수


반올림

SELECT ROUNT(12.345, 1); -- 1

소수점 이하 버리기, 소수점 이하 올리기

SELECT FLOOR(12.345);
SELECT CEIL(12.345);

특정 자리 수 이하 자르기

SELECT TRUNCATE(12.345, 1);

나머지 연산

SELECT MOD(12.345, 1) -- 0.345

데이터 유형을 변환하여 소수점 이하 자릿수를 제어

SELECT CAST(12.345 AS DEMICAL(5, 1)) -- 전체자릿수:5, 소수점 이하 자릿수:1
-- 즉, 전체 자릿수가 5자리이고 소수점 이하 자릿수가 1자리인 12.3

5️⃣SQL 문의 집계 함수들


COUNT()

SELECT column, count(*) FROM table;

SUM()

SELECT SUM(column) FROM table;

AVG()

SELECT AVG(column) FROM table;

MAX()

SELECT MAX(column) FROM table;

MIN()

SELECT MIN(column) FROM table;

6️⃣DDL의 날짜 관련 함수


현재 날짜 및 시간 값 반환하기

SELECT CURRENT_DATE;
SELECT CURRENT_TIME;
SELECT CURRENT_TIMESTAMP;

날짜 부분만 추출하기

SELECT DATE('2023-01-01');
SELECT DATE(CURRENT_TIMESTAMP);
SELECT DATE_FORMAT('2023-01-01 00:00:00', '%y-%m-%d');

날짜에서 일, 월, 연도 추출하기

SELECT DAY('2023-01-01');
SELECT DAYOFMONTH('2023-01-01');
SELECT MONTH('2023-01-01'); // MYSQL에서만 됨
SELECT YEAR('2023-01-01'); 

주어진 날짜가 주(week)의 몇 번째 일인지 반환하기

SELECT DAYOFWEEK('2023-01-01'); /* 일요일이 1 */

주어진 날짜가 연도의 몇 번째 일인지 반환하기

SELECT DAYOFYEAR('2023-01-01');

날짜가 속한 주의 숫자를 반환하기

SELECT WEEK('2023-01-01');

두 날짜 간의 차이 구하기

SELECT DATEDIFF('2023-01-01-', INTERVAL 1 DAY);

특정 기간을 더하거나 빼기

SELECT DATE_ADD('2023-01-01', INTERVAL 1 DAY);
SELECT DATE_SUB('2023-01-01', INTERVAL 1 MONTH);

날짜에서 특정 부분 추출하기

SELECT EXTRACT(YEAR FROM '2023-01-01');
SELECT EXTRACT(MONTH FROM '2023-01-01');

문자열을 날짜 타입으로 변환하기

SELECT TO_DATE('2023-01-01', 'YYYY-MM-DD');