MySQL 함수 총정리

stone tiger·2025년 3월 4일

MySQL

목록 보기
10/11

📌 1. 문자열(String) 함수

함수설명예제
LENGTH(str)바이트(byte) 길이 반환SELECT LENGTH('한글'); -- 6 (UTF-8 기준)
CHAR_LENGTH(str)문자(character) 개수 반환SELECT CHAR_LENGTH('한글'); -- 2
UPPER(str)대문자로 변환SELECT UPPER('hello'); -- 'HELLO'
LOWER(str)소문자로 변환SELECT LOWER('HELLO'); -- 'hello'
TRIM(str)양쪽 공백 제거SELECT TRIM(' hello '); -- 'hello'
LTRIM(str)왼쪽 공백 제거SELECT LTRIM(' hello'); -- 'hello'
RTRIM(str)오른쪽 공백 제거SELECT RTRIM('hello '); -- 'hello'
CONCAT(str1, str2, …)문자열 연결SELECT CONCAT('My', 'SQL'); -- 'MySQL'
SUBSTRING(str, start, length)부분 문자열 추출SELECT SUBSTRING('Hello', 2, 3); -- 'ell'
REPLACE(str, from, to)문자열 치환SELECT REPLACE('hello world', 'world', 'MySQL'); -- 'hello MySQL'
REVERSE(str)문자열 뒤집기SELECT REVERSE('hello'); -- 'olleh'

📌 2. 숫자(Number) 함수

함수설명예제
ABS(x)절댓값 반환SELECT ABS(-10); -- 10
CEIL(x)올림 (정수)SELECT CEIL(4.2); -- 5
FLOOR(x)내림 (정수)SELECT FLOOR(4.9); -- 4
ROUND(x, d)반올림 (d: 소수점 자리 수)SELECT ROUND(4.567, 2); -- 4.57
TRUNCATE(x, d)소수점 이하 절삭SELECT TRUNCATE(4.567, 2); -- 4.56
MOD(x, y)나머지 연산SELECT MOD(10, 3); -- 1
RAND()0~1 사이 난수 생성SELECT RAND(); -- 0.6354...
POW(x, y), POWER(x, y)거듭제곱 (x^y)SELECT POW(2, 3); -- 8
SQRT(x)제곱근 반환SELECT SQRT(25); -- 5

📌 3. 날짜(Date) & 시간(Time) 함수

함수설명예제
NOW()현재 날짜 및 시간 반환SELECT NOW(); -- '2025-02-21 15:30:00'
CURDATE()현재 날짜 반환SELECT CURDATE(); -- '2025-02-21'
CURTIME()현재 시간 반환SELECT CURTIME(); -- '15:30:00'
YEAR(date), MONTH(date), DAY(date)연/월/일 반환SELECT YEAR('2025-02-21'); -- 2025
HOUR(time), MINUTE(time), SECOND(time)시/분/초 반환SELECT HOUR('15:30:45'); -- 15
DATE_ADD(date, INTERVAL n unit)날짜 더하기SELECT DATE_ADD('2025-02-21', INTERVAL 7 DAY); -- '2025-02-28'
DATE_SUB(date, INTERVAL n unit)날짜 빼기SELECT DATE_SUB('2025-02-21', INTERVAL 1 MONTH); -- '2025-01-21'
DATEDIFF(date1, date2)날짜 차이 계산SELECT DATEDIFF('2025-02-21', '2025-02-01'); -- 20
TIMEDIFF(time1, time2)시간 차이 계산SELECT TIMEDIFF('12:00:00', '08:30:00'); -- '03:30:00'
LAST_DAY(date)해당 월의 마지막 날 반환SELECT LAST_DAY('2025-02-15'); -- '2025-02-28'

📌 4. 제어 흐름(Control Flow) 함수

함수설명예제
IF(condition, true_value, false_value)조건문 (삼항 연산자)SELECT IF(10 > 5, 'YES', 'NO'); -- 'YES'
IFNULL(expr, default_value)NULL이면 기본값 반환SELECT IFNULL(NULL, 'Default'); -- 'Default'
COALESCE(expr1, expr2, …)NULL이 아닌 첫 번째 값 반환SELECT COALESCE(NULL, '', 'Hello'); -- 'Hello'
CASE WHEN condition THEN value ELSE default END다중 조건 분기```sql

SELECT CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
ELSE 'F'
END AS grade FROM students;


---

# 📌 **5. 집계(Aggregate) 함수**
| 함수 | 설명 | 예제 |
|------|------|------|
| `COUNT(*)` | **행 개수 반환** | `SELECT COUNT(*) FROM users;` |
| `SUM(column)` | **합계 반환** | `SELECT SUM(price) FROM orders;` |
| `AVG(column)` | **평균값 반환** | `SELECT AVG(salary) FROM employees;` |
| `MIN(column)` | **최소값 반환** | `SELECT MIN(age) FROM students;` |
| `MAX(column)` | **최대값 반환** | `SELECT MAX(score) FROM exams;` |
| `GROUP_CONCAT(column SEPARATOR ', ')` | **여러 값을 하나의 문자열로 합침** | `SELECT GROUP_CONCAT(name ORDER BY id SEPARATOR ', ') FROM employees;` |

---

# 📌 **6. JSON 함수**
| 함수 | 설명 | 예제 |
|------|------|------|
| `JSON_OBJECT(key, value, …)` | **JSON 객체 생성** | `SELECT JSON_OBJECT('name', 'Alice', 'age', 25);` |
| `JSON_ARRAY(value, …)` | **JSON 배열 생성** | `SELECT JSON_ARRAY('A', 'B', 'C');` |
| `JSON_EXTRACT(json, path)` | **JSON 값 추출** | `SELECT JSON_EXTRACT('{"name": "Alice"}', '$.name'); -- 'Alice;'`|

---

# 🚀 **정리**
✔ **문자열 함수:** `LENGTH()`, `CONCAT()`, `SUBSTRING()`, `REPLACE()`  
✔ **숫자 함수:** `ABS()`, `ROUND()`, `MOD()`, `POW()`  
✔ **날짜/시간 함수:** `NOW()`, `DATE_ADD()`, `DATEDIFF()`, `LAST_DAY()`  
✔ **제어 흐름 함수:** `IF()`, `CASE`, `COALESCE()`  
✔ **집계 함수:** `COUNT()`, `SUM()`, `AVG()`, `GROUP_CONCAT()`  

0개의 댓글