
1. 문자열 함수
문자열 함수는 텍스트를 처리할 때 주로 사용되는데요. 예를 들어, 이름이나 주소와 같은 데이터를 다룰 때 많이 사용됩니다.
| 함수명 | 설명 | 예시 | 결과 |
| CONCAT() | 여러 문자열을 하나로 합침 | CONCAT('Hello','','World!') | Hello World! |
| SUBSTRING() | 문자열의 일부를 추출 | SUBSTRING('HelloWorld!',7,5) | World |
| LENGTH() | 문자열의 길이를 반환 | LENGTH('Hello') | 5 |
| UPPER() | 문자열을 대문자로 변환합니다. | UPPER('hello') | HELLO |
| LOWER() | 문자열을 소문자로 변환합니다. | LOWER('HELLO') | hello |
| TRIM() | 문자열의 앞뒤 공백을 제거합니다. | TRIM(' Hello ') | Hello |
| LTRIM() | 문자열의 앞쪽 공백을 제거합니다. | LTRIM(' Hello') | Hello |
| RTRIM() | 문자열의 뒤쪽 공백을 제거합니다. | RTRIM('Hello ') | Hello |
| REPLACE() | 문자열에서 특정 부분을 다른 문자열로 대체합니다. | REPLACE('Hello World', 'World' 'MySQL') | Hello MySQL |
| INSTR() | 문자열 내에서 특정 문자열의 위치를 반환합니다. | INSTR('Hello World' 'World') | 7 |
| LEFT() | 문자열의 왼쪽에서 지정한 길이만큼의 부분을 반환합니다. | LEFT('Hello World', 5) | Hello |
| RIGHT() | 문자열의 오른쪽에서 지정한 길이만큼의 부분을 반환합니다. | RIGHT('Hello World', 5) | World |
| REPEAT() | 문자열을 지정한 횟수만큼 반복합니다. | REPEAT('MySQL', 3) | MySQLMySQLMySQL |
| REVERSE() | 문자열을 뒤집습니다. | REVERSE('MySQL') | LQSyM |
| LPAD() | 문자열의 왼쪽에 지정한 문자로 채워서 지정한 길이로 만듭니다. | LPAD('123', 5, '0') | 00123 |
| RPAD() | 문자열의 오른쪽에 지정한 문자로 채워서 지정한 길이로 만듭니다. | RPAD('123', 5, '0') | 12300 |
| CHAR_LENGTH() | 문자열의 길이를 반환합니다. (문자의 개수 바이트 단위가 아님) | CHAR_LENGTH('Hello') | 5 |
| SUBSTRING_INDEX() | 문자열에서 지정한 구분자를 기준으로 부분 문자열을 반환합니다. | SUBSTRING_INDEX('a,b,c,d', ',',2) | a, b |
| FIND_IN_SET() | 문자열이 리스트 내에서 몇 번째 위치에 있는지 반환합니다. (쉼표로 구분된 리스트) | FIND_IN_SET('b', 'a,b,c') | 2 |
| FORMAT() | 숫자를 문자열로 변환하고 지정한 형식으로 포맷팅합니다. | FORMAT(1234567.89, 2) | 1234567.89 |
2. 수학 함수
수학 함수는 숫자 계산을 할 때 주로 사용됩니다. 합계를 구하거나 평균을 내는 등 다양한 계산에 유용합니다.
| 함수명 | 설명 | 예시 | 결과 |
| ROUND() | 숫자를 반올림 | ROUND(3.14159,2) | 3.14 |
| FLOOR() | 주어진 숫자보다 작거나 같은 가장 큰 정수를 반환 | FLOOR(2.9) | 2 |
| ABS() | 숫자의 절대값을 반환 | ABS(-5) | 5 |
| CEIL() | 주어진 숫자보다 크거나 같은 가장 작은 정수를 반환합니다. | CEIL(2.3) | 3 |
| CEILING() | `CEIL()`의 동의어로, 동일한 기능을 수행합니다. | CEILING(2.3) | 3 |
| FLOOR() | 주어진 숫자보다 작거나 같은 가장 큰 정수를 반환합니다. | FLOOR(2.9) | 2 |
| ROUND() | 숫자를 반올림합니다. | ROUND(3.14159, 2) | 3.14 |
| TRUNCATE() | 숫자를 소수점 아래에서 지정한 자리까지 잘라냅니다. | TRUNCATE(3.14159, 2) | 3.14 |
| MOD() | 나머지 연산을 수행하여 나머지를 반환합니다. | MOD(10, 3) | 1 |
| POW() | 주어진 숫자를 거듭제곱합니다. (동의어: `POWER()`) | POW(2, 3) | 8 |
| POWER() | 주어진 숫자를 거듭제곱합니다. | POWER(2, 3) | 8 |
| SQRT() | 주어진 숫자의 제곱근을 반환합니다. | SQRT(16) | 4 |
| EXP() | 주어진 숫자의 지수승(자연로그의 역수)을 계산합니다. | EXP(1) | 2.718281828 |
| LOG() | 주어진 숫자의 자연 로그를 계산합니다. | LOG(10) | 2.302585093 |
| LOG10() | 주어진 숫자의 10 로그를 계산합니다. | LOG10(1000) | 3 |
| LOG2() | 주어진 숫자의 2 로그를 계산합니다. | LOG2(8) | 3 |
| PI() | 원주율 π (3.141592653589793)을 반환합니다. | PI() | 3.141592654 |
| RADIANS() | 각도를 라디안으로 변환합니다. | RADIANS(180) | 3.141592654 |
| DEGREES() | 라디안을 각도로 변환합니다. | DEGREES(PI()) | 180 |
| SIN() | 주어진 각도의 사인 값을 반환합니다. | SIN(PI()/2) | 1 |
| COS() | 주어진 각도의 코사인 값을 반환합니다. | COS(PI()) | -1 |
| TAN() | 주어진 각도의 탄젠트 값을 반환합니다. | TAN(PI()/4) | 1 |
| SIGN() | 숫자의 부호를 반환합니다. (양수는 1, 음수는 -1, 0은 0) | SIGN(-10) | -1 |
| RAND() | 0과 1 사이의 랜덤 값을 반환합니다. | RAND() | 예:0.673847238402 |
| GREATEST() | 주어진 인수들 중에서 가장 큰 값을 반환합니다. | GREATEST(1, 5, 3, 9) | 9 |
| LEAST() | 주어진 인수들 중에서 가장 작은 값을 반환합니다. | LEAST(1, 5, 3, 9) | 1 |
3. 날짜와 시간 함수
날짜와 시간 함수는 시간과 관련된 데이터를 처리할 때 사용됩니다. 예를 들어, 날짜를 다른 형식으로 변환한다거나 할 때 많이 사용됩니다.
| 함수명 | 설명 | 예시 | 결과 |
| NOW() | 현재 날짜와 시간을 반환 | NOW() | 현재 날짜와 시간 |
| DATE_ADD() | 날짜에 특정 기간을 더함 | DATE_ADD('2023-08-27',INTERVAL10DAY) | `2023-09-06` |
| DATEDIFF() | 두 날짜 사이의 차이를 계산 | DATEDIFF('2023-09-06','2023-08-27') | `10` |
| CURDATE() | 현재 날짜를 `YYYY-MM-DD` 형식으로 반환합니다. | CURDATE() | 예: `2024-08-27` |
| CURTIME() | 현재 시간을 `HH:MM:SS` 형식으로 반환합니다. | CURTIME() | 예: `14:30:00` |
| DATE() | 날짜 부분만 추출합니다. | DATE('2024-08-27 14:30:00') | `2024-08-27` |
| YEAR() | 주어진 날짜의 연도를 반환합니다. | YEAR('2024-08-27') | `2024` |
| MONTH() | 주어진 날짜의 월을 반환합니다. | MONTH('2024-08-27') | `8` |
| DAY() | 주어진 날짜의 일을 반환합니다. | DAY('2024-08-27') | `27` |
| HOUR() | 주어진 시간의 시간을 반환합니다. | HOUR('14:30:00') | `14` |
| MINUTE() | 주어진 시간의 분을 반환합니다. | MINUTE('14:30:00') | `30` |
| SECOND() | 주어진 시간의 초를 반환합니다. | SECOND('14:30:45') | `45` |
| WEEK() | 주어진 날짜가 연중 몇 번째 주인지 반환합니다. | WEEK('2024-08-27') | `35` |
| DAYOFWEEK() | 주어진 날짜가 주의 몇 번째 요일인지 반환합니다. (일요일이 1) | DAYOFWEEK('2024-08-27') | `3` |
| DAYOFMONTH() | 주어진 날짜가 월의 몇 번째 날인지 반환합니다. | DAYOFMONTH('2024-08-27') | `27` |
| DAYOFYEAR() | 주어진 날짜가 연중 몇 번째 날인지 반환합니다. | DAYOFYEAR('2024-08-27') | `240` |
| LAST_DAY() | 주어진 날짜의 해당 월의 마지막 날짜를 반환합니다. | LAST_DAY('2024-08-15') | `2024-08-31` |
| ADDDATE() | 날짜에 지정된 기간을 더합니다. | ADDDATE('2024-08-27', INTERVAL 10 DAY) | `2024-09-06` |
| SUBDATE() | 날짜에서 지정된 기간을 뺍니다. | SUBDATE('2024-08-27', INTERVAL 10 DAY) | `2024-08-17` |
| TIMESTAMP() | 날짜와 시간을 하나의 타임스탬프로 결합합니다. | TIMESTAMP('2024-08-27', '14:30:00') | `2024-08-27 14:30:00` |
| TIMEDIFF() | 두 타임스탬프 간의 차이를 지정된 단위로 반환합니다. | TIMESTAMPDIFF(DAY, '2024-08-01', '2024-08-27') | `26` |
| TO_DAYS() | 주어진 날짜를 연속된 일수로 변환합니다. | TO_DAYS('2024-08-27') | 예: `750000` |
| FROM_DAYS() | 연속된 일수를 날짜로 변환합니다. | FROM_DAYS(750000) | `2024-08-27` |
| STR_TO_DATE() | 지정된 형식의 문자열을 날짜로 변환합니다. | STR_TO_DATE('27-08-2024', '%d-%m-%Y') | `2024-08-27` |
| DATE_FORMAT() | 날짜를 지정된 형식으로 변환하여 반환합니다. | DATE_FORMAT('2024-08-27', '%Y/%m/%d') | `2024/08/27` |
| MAKEDATE() | 주어진 연도와 연중 몇 번째 날인지로 날짜를 생성합니다. | MAKEDATE(2024, 240) | `2024-08-27` |
| MAKETIME() | 주어진 시, 분, 초로 시간을 생성합니다. | MAKETIME(14, 30, 0) | `14:30:00` |
| SEC_TO_TIME() | 초를 시간으로 변환하여 반환합니다. | SEC_TO_TIME(3661) | `01:01:01` |
| TIME_TO_SEC() | 시간을 초로 변환하여 반환합니다. | TIME_TO_SEC('01:01:01') | `3661` |
4. 논리 함수
논리 함수는 조건을 이용할 때 사용됩니다. 아래 함수들을 이용해서 특정 조건이 참인지 거짓인지에 따라 결과를 다르게 처리할 수 있습니다.
| 함수명 | 설명 | 예시 | 결과 |
| IF() | 조건에 따라 다른 값을 반환합니다. | IF(1<2,'True','False') | `True` |
| CASE WHEN | 여러 조건을 평가하여 맞는 값을 반환 | CASE WHEN age >= 18 THEN '성인' ELSE '미성년자' END | 나이에 따라 '성인' 또는 '미성년자' |
| IFNULL() | 첫 번째 인수가 NULL이면 두 번째 인수를 반환하고, 그렇지 않으면 첫 번째 인수를 반환합니다. | SELECT IFNULL(NULL, 'Default'); | `'Default'` |
| NULLIF() | 두 인수가 같으면 NULL을 반환하고, 그렇지 않으면 첫 번째 인수를 반환합니다. | SELECT NULLIF(1, 1); | `NULL` |
| COALESCE() | 인수 목록에서 첫 번째 NULL이 아닌 값을 반환합니다. | SELECT COALESCE(NULL, NULL, 'MySQL'); | `'MySQL'` |
| GREATEST() | 주어진 인수들 중에서 가장 큰 값을 반환합니다. | SELECT GREATEST(1, 3, 7, 2); | `7` |
| LEAST() | 주어진 인수들 중에서 가장 작은 값을 반환합니다. | SELECT LEAST(1, 3, 7, 2); | `1` |
| ELT() | 주어진 인덱스에 해당하는 문자열을 반환합니다. | SELECT ELT(2, 'red', 'green', 'blue'); | `'green'` |
| INTERVAL() | 주어진 값이 지정된 값 사이에 어디에 위치하는지 반환합니다. | SELECT INTERVAL(5, 1, 4, 6, 8); | `2` |
| STRCMP() | 두 문자열을 비교하여 같으면 0, 첫 번째가 크면 1, 두 번째가 크면 -1을 반환합니다. | SELECT STRCMP('abc', 'abd'); | `-1` |
5. 집계 함수
집계 함수는 여러 행의 데이터를 Grouping해서 결과를 산출합니다. 예를 들어, 직원들의 평균 연봉을 계산할 때 집계 함수를 사용합니다.
| 함수명 | 설명 | 예시 | 결과 |
| SUM() | 숫자 열의 합계를 반환합니다. | SELECT SUM(price) FROM products; | 전체 `price`의 합계 |
| AVG() | 숫자 열의 평균값을 반환합니다. | SELECT AVG(score) FROM students; | 전체 `score`의 평균 |
| COUNT() | 행의 개수를 셉니다. | SELECT COUNT(*) FROM orders; | 전체 행의 수 |
| MAX() | 주어진 열에서 최대값을 반환합니다. | SELECT MAX(salary) FROM employees; | 최대 `salary` 값 |
| MIN() | 주어진 열에서 최소값을 반환합니다. | SELECT MIN(age) FROM customers; | 최소 `age` 값 |
| GROUP_CONCAT() | 그룹화된 결과를 문자열로 연결하여 반환합니다. | SELECT GROUP_CONCAT(name) FROM students; | `name`들을 쉼표로 연결 |
| COUNT(DISTINCT) | 고유한 값의 개수를 셉니다. | SELECT COUNT(DISTINCT department) FROM employees; | 고유한 `department`의 수 |
| STDDEV() | 집합의 표준편차를 반환합니다. | SELECT STDDEV(salary) FROM employees; | `salary`의 표준편차 |
| VARIANCE() | 집합의 분산을 반환합니다. | SELECT VARIANCE(salary) FROM employees; | `salary`의 분산 |
| BIT_AND() | 모든 행의 비트 AND 연산 결과를 반환합니다. | SELECT BIT_AND(flags) FROM settings; | 모든 `flags`의 비트 AND |
| BIT_OR() | 모든 행의 비트 OR 연산 결과를 반환합니다. | SELECT BIT_OR(flags) FROM settings; | 모든 `flags`의 비트 OR |
| BIT_XOR() | 모든 행의 비트 XOR 연산 결과를 반환합니다. | SELECT BIT_XOR(flags) FROM settings; | 모든 `flags`의 비트 XOR |
| JSON_ARRAYAGG() | JSON 배열 형식으로 그룹화된 결과를 반환합니다. | SELECT JSON_ARRAYAGG(name) FROM students; | 이름들의 JSON 배열 |
| JSON_OBJECTAGG() | JSON 객체 형식으로 키-값 쌍을 그룹화하여 반환합니다. | SELECT JSON_OBJECTAGG(id, name) FROM students; | ID와 이름의 JSON 객체 |
'Computer Science > DB' 카테고리의 다른 글
| [MySQL] truncate(), round() (1) | 2025.02.05 |
|---|---|
| SQL Joins 도식 (1) | 2025.02.05 |
| [스크랩] MySQL 완전 삭제 후 설치 방법 (0) | 2025.02.03 |
| [SQL] 쿼리 문법 정리 (1) | 2025.01.07 |