본문 바로가기
데이터분석/SQL

MySQL 내장 함수 53가지 정리 (숫자, 문자, 날짜, 논리, 집계)

by 코듀킹 2023. 11. 23.

MySQL을 사용할 때, 사용할 수 있는 내장 함수 53가지를 준비했다. 함수 종류가 많아서 하니씩 다 찾아보기 힘든 분들을 위해 카테고리 별로 나눠서 표로 정리했다. 숫자, 문자, 날짜, 논리, 집계 5가지 카테고리로 분류된다.

 

MySQL-내장-함수-정리

 

 

내용은 예시 SQL문, 실행 결과, 데이터를 가져왔을 때 사용하는 예문으로 구성된다. 각 함수에 대한 설명은 예시에 설명해 놓았다.


숫자 관련 함수

 

1. ABS(number)

-- 예시: 음수의 절대값 계산
SELECT ABS(-15); -- 결과: 15

-- 활용: 테이블의 특정 열에 있는 모든 값의 절대값 계산
SELECT ABS(column_name) FROM table_name;

 

2. CEILING(number)

-- 예시: 소수점 이하를 올림
SELECT CEILING(15.75); -- 결과: 16

-- 활용: 테이블의 특정 열에 있는 모든 값 올림
SELECT CEILING(column_name) FROM table_name;

 

 

3. FLOOR(number)

-- 예시: 소수점 이하를 내림
SELECT FLOOR(15.75) -- 결과: 15

-- 활용: 테이블의 특정 열에 있는 모든 값 내림
SELECT FLOOR(column_name) FROM table_name;

 

4. ROUND(number, decimals)

-- 예시: 소수점 첫째 자리에서 반올림
SELECT ROUND(15.789, 1); -- 결과: 15.8

 -- 활용: 테이블의 특정 열에 있는 모든 값 소수점 둘째 자리에서 반올림
SELECT ROUND(column_name, 2) FROM table_name;

 

5. TRUNCATE(number, decimals)

-- 예시: 소수점 첫째 자리에서 절삭
SELECT TRUNCATE(15.789, 1); -- 결과: 15.7

-- 활용: 테이블의 특정 열에 있는 모든 값 소수점 둘째 자리에서 절삭
SELECT TRUNCATE(column_name, 2) FROM table_name;

 

6. POW(base, exponent)

-- 예시: 2의 3제곱 계산
SELECT POW(2, 3); --결과: 8

-- 활용: 테이블의 특정 열에 있는 모든 값의 제곱 계산
SELECT POW(column_name, 2) FROM table_name;

 

7. MOD(number, divisor)

-- 예시: 10을 3으로 나눈 나머지 계산
SELECT MOD(10, 3); -- 결과: 1

-- 활용: 테이블의 특정 열에 있는 모든 값 4로 나눈 나머지 계산
SELECT MOD(column_name, 4) FROM table_name;

 

8. GREATEST(value1, value2, ...)

-- 예시: 주어진 값 중 가장 큰 값 찾기
SELECT GREATEST(1, 2, 3); -- 결과: 3

-- 활용: 테이블의 여러 열 중 각 행에서 가장 큰 값 찾기
SELECT GREATEST(column1, column2, column3) FROM table_name;

 

9. LEAST(value1, value2, ...)

-- 예시: 주어진 값 중 가장 작은 값 찾기
SELECT LEAST(1, 2, 3); -- 결과: 1

-- 활용: 테이블의 여러 열 중 각 행에서 가장 작은 값 찾기
SELECT LEAST(column1, column2, column3) FROM table_name;

 

10. INTERVAL(value, vlaue1, value2, ...)

value가 value1~value... 사이 중 몇 번째에 속하는지.

-- 예시: 값이 주어진 범위 내에서 어디에 속하는지 찾기
SELECT INTERVAL(23, 1, 15, 23, 30, 44, 200); -- 결과: 3

-- 활용: 테이블에서 특정 값이 주어진 범위 내에서 어디에 속하는지 찾기
SELECT INTERVAL(column_name, 1, 3, 7, 9) FROM table_name;

 


문자 관련 함수

 

11. ASCII(string)

-- 예시: 문자 'A'의 ASCII 값 반환
SELECT ASCII('A'); -- 결과: 65

-- 활용: 테이블의 특정 열에 있는 문자의 ASCII 값 반환
SELECT ASCII(column_name) FROM table_name;

 

12. CHAR(number1, number2, ...)

-- 예시: ASCII 값 65, 66, 67에 해당하는 문자 반환
SELECT CHAR(65, 66, 67); -- 결과: {"type":"Buffer","data":[65,66,67]}

-- 활용: ASCII 값 77과 테이블의 특정 열의 값에 해당하는 문자 반환
SELECT CHAR(77, column_name) FROM table_name;

 

13. CONCAT(string1, string2, ...)

-- 예시: 여러 문자열 연결
SELECT CONCAT('Hello', ' ', 'World'); -- 결과: Hello World

-- 활용: 테이블의 두 열을 연결
SELECT CONCAT(column1, ' ', column2) FROM table_name;

 

14. INSERT(string, position, length, new_string)

아래 예시 7, 5 숫자 의미 : 7번째 문자부터 5개를 지우고, 'MySQL'을 넣는다.

-- 예시: 문자열 중간에 다른 문자열 삽입
SELECT INSERT('Hello World', 7, 5, 'MySQL'); -- 결과: Hello MySQL

-- 활용: 테이블의 특정 열에 있는 문자열 중간에 'Test' 삽입
SELECT INSERT(column_name, 3, 4, 'Test') FROM table_name;

 

15. REPLACE(string, from_string, mew_string)

-- 예시: 문자열 내의 하위 문자열 교체
SELECT REPLACE('Hello World', 'World', 'MySQL'); -- 결과: Hello MySQL

-- 활용: 테이블의 특정 열에 있는 'old'를 'new'로 교체
SELECT REPLACE(column_name, 'old', 'new') FROM table_name;

 

16. INSTR(string, substring)

-- 예시: 하위 문자열 'World'의 시작 위치 찾기
SELECT INSTR('Hello World', 'World'); -- 결과: 7

-- 활용: 테이블의 특정 열에서 'pattern'이 시작되는 위치 찾기
SELECT INSTR(column_name, 'pattern') FROM table_name;

 

17. LEFT(string, length)

-- 예시: 문자열의 왼쪽부터 5번째 문자까지 반환
SELECT LEFT('Hello World', 5); -- 결과: Hello 

-- 활용: 테이블의 특정 열에서 왼쪽 3문자 반환
SELECT LEFT(column_name, 3) FROM table_name;

 

18. RIGHT(string, length)

-- 예시: 문자열의 오른쪽 부분 반환
SELECT RIGHT('Hello World', 5); --결과: World

-- 활용: 테이블의 특정 열에서 오른쪽 3문자 반환
SELECT RIGHT(column_name, 3) FROM table_name;

 

19. MID(string, start, length) 

-- 예시: 문자열의 중간 부분 반환
SELECT MID('Hello World', 4, 4); -- 결과: lo W

-- 활용: 테이블의 특정 열에서 2번째 위치부터 5문자 반환
SELECT MID(column_name, 2, 5) FROM table_name;

 

20. SUBSTRING(string, start, lenth)

MID함수와 똑같은 기능을 하며, SUBSTR(string, start, lenth)도 가능하다.

-- 예시: 문자열의 특정 부분 반환
SELECT SUBSTRING('Hello World', 4, 4); -- 결과: lo W

-- 활용: 테이블의 특정 열에서 2번째 위치부터 5문자 반환
SELECT SUBSTRING(column_name, 2, 5) FROM table_name;

 

21. LTRIM(string)

-- 예시: 문자열 왼쪽 공백 제거
SELECT LTRIM('  Hello World  '); -- 결과: Hello World

-- 활용: 테이블의 특정 열에서 왼쪽 공백 제거
SELECT LTRIM(column_name) FROM table_name;

 

22. RTRIM(string)

-- 예시: 문자열 오른쪽 공백 제거
SELECT RTRIM('  Hello World  '); -- 결과:   Hello World

-- 활용: 테이블의 특정 열에서 오른쪽 공백 제거
SELECT RTRIM(column_name) FROM table_name;

 

23. TRIM(string)

-- 예시: 문자열 양쪽 공백 제거
SELECT TRIM('  Hello World  '); -- 결과: Hello World

-- 문제: 테이블의 특정 열에서 양쪽 공백 제거
SELECT TRIM(column_name) FROM table_name;

 

24. LOWER(string)

-- 예시: 문자열을 소문자로 변환
SELECT LOWER('HELLO WORLD'); -- 결과: hello world

-- 활용: 테이블의 특정 열을 소문자로 변환
SELECT LOWER(column_name) FROM table_name;

 

25. UPPER(string)

-- 예시: 문자열을 대문자로 변환
SELECT UPPER('hello world'); -- 결과: HELLO WORLD

-- 활용: 테이블의 특정 열을 대문자로 변환
SELECT UPPER(column_name) FROM table_name;

 

26. REVERSE(string)

-- 예시: 문자열 뒤집기
SELECT REVERSE('Hello World'); -- 결과: dlroW olleH

-- 활용: 테이블의 특정 열의 문자열 뒤집기
SELECT REVERSE(column_name) FROM table_name;

 


날짜 관련 함수

27. NOW()

-- 예시: 현재 날짜와 시간 반환
SELECT NOW(); -- 결과: 2023-11-22 16:32:26

 

28. CURDATE()

-- 예시: 현재 날짜 반환
SELECT CURDATE(); -- 결과: 2023-11-22 00:00:00

 

29. CURTIME()

-- 예시: 현재 시간 반환
SELECT CURTIME(); -- 결과: 16:35:03

 

30. DATE_ADD(date, INTERVAL expr unit)

-- 예시: 날짜에 일수 추가
SELECT DATE_ADD('2023-01-01', INTERVAL 1 DAY); -- 결과: 2023-01-02

-- 활용: 테이블의 특정 열 날짜에 2주 추가
SELECT DATE_ADD(column_name, INTERVAL 2 WEEK) FROM table_name;

 

31. DATE_SUB(date, INTERVAL expr unit)

-- 예시: 날짜에서 일수 빼기
SELECT DATE_SUB('2023-01-01', INTERVAL 1 DAY); -- 결과: 2022-12-31

-- 활용: 테이블의 특정 열 날짜에서 3개월 빼기
SELECT DATE_SUB(column_name, INTERVAL 3 MONTH) FROM table_name;

 

32. YEAR(date)

-- 예시: 날짜의 연도 반환
SELECT YEAR('2023-01-01'); -- 결과: 2023

-- 활용: 테이블의 특정 열 날짜의 연도 반환
SELECT YEAR(column_name) FROM table_name;

 

33. MONTH(date)

-- 예시: 날짜의 월 반환
SELECT MONTH('2023-01-02'); -- 결과: 1

-- 활용: 테이블의 특정 열 날짜의 월 반환
SELECT MONTH(column_name) FROM table_name;

 

34. DAY(date)

-- 예시: 날짜의 일 반환
SELECT DAY('2023-01-02'); -- 결과: 2

-- 활용: 테이블의 특정 열 날짜의 일 반환
SELECT DAY(column_name) FROM table_name;

 

35. MONTHNAME(date)

-- 예시: 날짜의 월 이름 반환
SELECT MONTHNAME('2023-01-01'); -- 결과: January

-- 활용: 테이블의 특정 열 날짜의 월 이름 반환
SELECT MONTHNAME(column_name) FROM table_name;

 

36. DAYNAME(date)

-- 예시: 날짜의 요일 이름 반환
SELECT DAYNAME('2023-01-01'); -- 결과: Sunday

-- 활용: 테이블의 특정 열 날짜의 요일 이름 반환
SELECT DAYNAME(column_name) FROM table_name;

 

37. DAYOFMONTH(date)

-- 예시: 날짜의 월별 일자 반환
SELECT DAYOFMONTH('2023-01-02'); -- 결과: 2

-- 활용: 테이블의 특정 열 날짜의 월별 일자 반환
SELECT DAYOFMONTH(column_name) FROM table_name;

 

38. DAYOFWEEK(date)

-- 예시: 날짜의 주별 일자 반환 (1=Sunday, 7=Saturday)
SELECT DAYOFWEEK('2023-01-01'); -- 결과: 1

-- 활용: 테이블의 특정 열 날짜의 주별 요일 번호 반환
SELECT DAYOFWEEK(column_name) FROM table_name;

 

 

39. WEEKDAY(date)

-- 예시: 날짜의 주중 요일 번호 반환 (0=월요일, 6=일요일)
SELECT WEEKDAY('2023-01-01'); -- 결과: 6

-- 활용: 테이블의 특정 열 날짜의 주중 요일 번호 반환
SELECT WEEKDAY(column_name) FROM table_name;

 

40. DAYOFYEAR(date)

-- 예시: 날짜의 연중 일자 반환
SELECT DAYOFYEAR('2023-07-01'); -- 결과: 182

-- 활용: 테이블의 특정 열 날짜의 연중 일자 반환
SELECT DAYOFYEAR(column_name) FROM table_name;

 

41. WEEK(date)

-- 예시: 날짜가 포함된 주의 연중 주 번호 반환
SELECT WEEK('2023-01-08'); -- 결과: 2

-- 문제: 테이블의 특정 열 날짜의 연중 주 번호 반환
SELECT WEEK(column_name) FROM table_name;

 

42. FROM_DAYS(number)

-- 예시: 주어진 일 수를 날짜로 변환
SELECT FROM_DAYS(738000); -- 결과: 2020-07-29 00:00:00

-- 활용: 테이블의 특정 열 일 수를 날짜로 변환
SELECT FROM_DAYS(column_name) FROM table_name;

 

43. TO_DAYS(date)

-- 예시: 날짜를 연속된 일 수로 변환
SELECT TO_DAYS('2023-01-01'); -- 결과; 738886

-- 활용: 테이블의 특정 열 날짜를 연속된 일 수로 변환
SELECT TO_DAYS(column_name) FROM table_name;

 

44. DATE_FORMAT(date, format)

-- 예시: 날짜를 지정된 형식으로 포맷
SELECT DATE_FORMAT('2023-01-01', '%Y%m%d'); -- 결과: 20230101

-- 활용: 테이블의 특정 열 날짜를 'dd/mm/yyyy' 형식으로 포맷
SELECT DATE_FORMAT(column_name, '%d/%m/%Y') FROM table_name;

 


논리함수

 

45. IF(condition, true_value, false_value)

-- 예시: 조건에 따른 값 반환
SELECT IF(1>0, 'True', 'False'); -- 결과: TRUE

-- 활용: 테이블의 특정 열이 10보다 큰 경우 'Greater', 아니면 'Smaller' 반환
SELECT IF(column_name > 10, 'Greater', 'Smaller') FROM table_name;

 

46. IFNULL(value, defaulf_value)

-- 예시: NULL 값을 'Hello World'로 대체
SELECT IFNULL(NULL, 'Hello World'); -- 결과: Hello World

-- 활용: 테이블의 특정 열에서 NULL 값을 'Default'로 대체
SELECT IFNULL(column_name, 'Default') FROM table_name;

 


집계 함수

 

47. COUNT(expression)

-- 예시: 테이블의 전체 행 수 계산
SELECT COUNT(*) AS TotalCount FROM table_name; 

-- 문제: 특정 조건을 만족하는 행의 수 계산
SELECT COUNT(column_name) FROM table_name WHERE condition;

 

48. SUM(column)

-- 예시: 열 값의 합계 계산
SELECT SUM(column_name) AS TotalSum FROM table_name;

 

49. AVG(column)

-- 예시: 열 값의 평균 계산
SELECT AVG(column_name) AS AverageValue FROM table_name;

 

50. MAX(column)

-- 예시: 열 값의 최대값 찾기
SELECT MAX(column_name) AS MaxValue FROM table_name;

 

51. MIN(column)

-- 예시: 열 값의 최소값 찾기
SELECT MIN(column_name) AS MinValue FROM table_name;

 


기타 함수

 

51. DATABASE()

-- 예시: 현재 데이터베이스 이름 반환
SELECT DATABASE();

 

52. PASSWORD(string)

-- 예시: 문자열을 MySQL 비밀번호 형식으로 암호화
SELECT PASSWORD('my_password');

 

53. FORMAT(number, decimals)

-- 예시: 숫자를 지정된 소수점 자리수로 포맷
SELECT FORMAT(12345.6789, 2); -- 결과: 12,345.68

-- 활용: 테이블의 특정 열 숫자를 소수점 셋째 자리로 포맷
SELECT FORMAT(column_name, 3) FROM table_name;

댓글