▶ MySQL References |
MySQL Data Types |
MySQL Functions |
MySQL Functions
MySQL Functions: 함수 종류와 사용법
MySQL은 데이터를 처리하고 변환하는 데 유용한 내장 함수를 다양하게 제공합니다. 함수는 데이터를 쉽게 다루고 분석하기 위한 기본 도구입니다. MySQL에서 자주 사용되는 함수는 크게 문자열 함수, 숫자 함수, 날짜 및 시간 함수, 집계 함수, 제어 흐름 함수로 나뉩니다. 이 글에서는 각 함수의 종류와 사용법을 소개하고 실전 예제를 함께 설명하겠습니다.
1. 문자열 함수 (String Functions)
문자열을 처리할 때 자주 사용되는 함수들입니다.
-
CONCAT(): 문자열을 연결하는 함수.
SELECT CONCAT('Hello, ', 'World!'); -- 결과: Hello, World!
-
LENGTH(): 문자열의 길이를 반환합니다.
SELECT LENGTH('MySQL'); -- 결과: 5
-
LOWER() / UPPER(): 문자열을 소문자 또는 대문자로 변환합니다.
SELECT LOWER('MySQL'); -- 결과: mysql SELECT UPPER('mysql'); -- 결과: MYSQL
-
SUBSTRING(): 문자열의 일부분을 추출합니다.
SELECT SUBSTRING('Hello World', 1, 5); -- 결과: Hello
-
TRIM(): 문자열의 앞뒤 공백을 제거합니다.
SELECT TRIM(' MySQL '); -- 결과: MySQL
-
REPLACE(): 문자열 내의 특정 부분을 다른 문자열로 대체합니다.
SELECT REPLACE('I love MySQL', 'love', 'like'); -- 결과: I like MySQL
-
REVERSE(): 문자열을 뒤집습니다.
SELECT REVERSE('MySQL'); -- 결과: LQSyM
2. 숫자 함수 (Numeric Functions)
숫자 데이터를 처리하는 데 사용되는 함수들입니다.
-
ABS(): 절대값을 반환합니다.
SELECT ABS(-10); -- 결과: 10
-
CEIL() / FLOOR(): 소수점 이하 값을 올림 또는 내림 처리합니다.
SELECT CEIL(5.2); -- 결과: 6 SELECT FLOOR(5.9); -- 결과: 5
-
ROUND(): 소수점을 반올림하여 특정 자리수까지 숫자를 반환합니다.
SELECT ROUND(5.678, 2); -- 결과: 5.68
-
MOD(): 나눗셈의 나머지를 반환합니다.
SELECT MOD(10, 3); -- 결과: 1
-
POW() / SQRT(): 제곱과 제곱근을 구합니다.
SELECT POW(2, 3); -- 결과: 8 SELECT SQRT(16); -- 결과: 4
3. 날짜 및 시간 함수 (Date and Time Functions)
날짜 및 시간을 다룰 때 사용하는 함수입니다.
-
NOW(): 현재 날짜와 시간을 반환합니다.
SELECT NOW(); -- 결과: 2024-10-11 12:45:30 (현재 시각)
-
CURDATE() / CURTIME(): 현재 날짜와 시간만을 반환합니다.
SELECT CURDATE(); -- 결과: 2024-10-11 SELECT CURTIME(); -- 결과: 12:45:30
-
DATE_ADD() / DATE_SUB(): 날짜에 특정 간격을 더하거나 뺍니다.
SELECT DATE_ADD('2024-10-11', INTERVAL 7 DAY); -- 결과: 2024-10-18 SELECT DATE_SUB('2024-10-11', INTERVAL 1 MONTH); -- 결과: 2024-09-11
-
DATEDIFF(): 두 날짜 간의 차이를 일(day) 단위로 반환합니다.
SELECT DATEDIFF('2024-12-25', '2024-10-11'); -- 결과: 75일
-
EXTRACT(): 날짜나 시간의 특정 부분(연, 월, 일, 시, 분 등)을 추출합니다.
SELECT EXTRACT(YEAR FROM '2024-10-11'); -- 결과: 2024 SELECT EXTRACT(MONTH FROM '2024-10-11'); -- 결과: 10
-
STR_TO_DATE(): 문자열을 날짜로 변환합니다.
SELECT STR_TO_DATE('11/10/2024', '%d/%m/%Y'); -- 결과: 2024-10-11
-
DATE_FORMAT(): 날짜를 지정한 형식으로 변환합니다.
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); -- 결과: 2024-10-11 12:45:30
4. 집계 함수 (Aggregate Functions)
집계 함수는 여러 행의 값을 하나의 값으로 계산할 때 사용됩니다.
-
COUNT(): 특정 컬럼 또는 행의 개수를 반환합니다.
SELECT COUNT(*) FROM employees; -- 전체 행의 개수 SELECT COUNT(salary) FROM employees; -- salary 값이 있는 행의 개수
-
SUM(): 특정 컬럼의 합계를 계산합니다.
SELECT SUM(salary) FROM employees; -- 직원들의 급여 총합
-
AVG(): 특정 컬럼의 평균값을 계산합니다.
SELECT AVG(salary) FROM employees; -- 직원들의 평균 급여
-
MAX() / MIN(): 최대값과 최소값을 반환합니다.
SELECT MAX(salary) FROM employees; -- 가장 높은 급여 SELECT MIN(salary) FROM employees; -- 가장 낮은 급여
5. 제어 흐름 함수 (Control Flow Functions)
제어 흐름 함수는 조건에 따라 값을 다르게 반환할 수 있습니다.
-
IF(): 조건에 따라 다른 값을 반환하는 함수.
SELECT IF(salary > 5000, 'High', 'Low') FROM employees;
-
IFNULL(): 값이
NULL
인 경우 대체 값을 반환합니다.SELECT IFNULL(bonus, 0) FROM employees; -- bonus가 NULL이면 0 반환
-
CASE: 조건문을 사용하는 함수로, 여러 조건을 처리할 수 있습니다.
SELECT name, CASE WHEN salary > 5000 THEN 'High' WHEN salary BETWEEN 3000 AND 5000 THEN 'Medium' ELSE 'Low' END AS salary_level FROM employees;
6. 기타 유용한 함수
-
COALESCE(): 여러 값 중 첫 번째로
NULL
이 아닌 값을 반환합니다.SELECT COALESCE(bonus, salary, 0) FROM employees; -- bonus가 NULL이면 salary, 둘 다 NULL이면 0 반환
-
FORMAT(): 숫자를 형식화하여 반환합니다 (주로 소수점 자리수와 천 단위 구분).
SELECT FORMAT(12345.678, 2); -- 결과: 12,345.68
요약
MySQL에는 데이터를 변환하고 처리하는 데 도움이 되는 다양한 함수가 내장되어 있습니다. 이 함수들은 문자열, 숫자, 날짜 및 시간, 집계 및 제어 흐름과 같은 여러 상황에서 유용하게 사용됩니다. 각 함수의 사용법과 기능을 이해하고 실무에 적절하게 활용하면 데이터베이스 작업을 훨씬 더 효율적으로 수행할 수 있습니다.