SELECT의 기본 관련 포스트는 Database #1 참조
Group Function
이라고도 함.-- 절대값 : 5 0 5
SELECT
ABS(-5),ABS(0), ABS(+5);
-- 올림(정수) : 13 13 -12 -12
SELECT ceil(12.2), CEILING(12.2), ceil(-12.2), CEILING(-12.2);
-- 버림(정수) : 12 -13
SELECT FLOOR(12.2), FLOOR(-12.2);
-- 반올림 : 1526 1526 1526.2 1526.16 1530 2000
SELECT ROUND(1526.159), ROUND(1526.159, 0), ROUND(1526.159, 1), ROUND(1526.159, 2), ROUND(1526.159, -1), ROUND(1526.159, -3);
-- 버림 : 1526 1526.1 1526.15 1520 1000
SELECT
TRUNCATE(1526.159, 0),
TRUNCATE(1526.159, 1),
TRUNCATE(1526.159, 2),
TRUNCATE(1526.159, -1),
TRUNCATE(1526.159, -3);
-- 제곱, 제곱근 : 8 8 4
SELECT pow(2,3), power(2, 3), SQRT(16);
-- 나머지 : 2 2
SELECT MOD(8, 3), 8 % 3
-- 최대, 최소값 : 9 3
SELECT greatest(6,2,3,4,9,1,7), least(6,2,3,4,9,1,7);
-- 난수
SELECT RAND(), TRUNCATE(RAND() * 45 + 1, 0);
-- 문자 :: > 아스키, 아스키 ::> 문자 : 48 65 97 '0' 'A' 'a' 'ABCD'
SELECT ASCII('0'), ASCII('A'), ASCII('a'), char(49);
-- 문자열 결합 : 100번 사원의 이름 Steven King
select CONCAT(employee_id, '번 사원의 이름 ',first_name, ' ', last_name) "이름"
from employees
where employee_id = 100;
-- 구분자를 이용한 문자열 결합 : 2024-09-10
SELECT CONCAT_WS('-', 2024, 09, 10);
-- 문자열 대치(index) : hello ssafy !!!
SELECT 'ssafyabc!!!', insert('ssafyabc!!!', 6, 3, 'ssafy ');
-- 문자열 대치(문자열) : hello ssafy !!!
SELECT 'ssafyabc!!!', replace('ssafyabc!!!', 'abc', 'ssafy ');
-- 찾을 문자열의 index 반환 : 7
select instr('hello ssafy !!!', 'ssafy');
select '123-456', SUBSTR('123-456', 1, INSTR('123-456', '-') - 1), SUBSTR('123-456', INSTR('123-456', '-') + 1, 3);
-- 문자열 추출 : ssafy
select 'hello ssafy !!!', mid('hello ssafy !!!', 7, 5), SUBSTR('hello ssafy !!!', 7, 5);
-- hello ssafy !!!
SELECT REVERSE('hello ssafy !!!');
-- hello ssafy !!! hello ssafy !!!
SELECT lower('hello ssafy !!!'), LCASE('hello ssafy !!!');
-- HELLO SSAFY !!! HELLO SSAFY !!!
SELECT UPPER('hello ssafy !!!'), UCASE('hello ssafy !!!');
-- hello fy !!!
SELECT 'hello ssafy !!!', left('hello ssafy !!!', 5), RIGHT('hello ssafy !!!', 6);
-- 3자리마다 콤마(,) & 소수점 2자리까지
SELECT FORMAT(12345678.987 , 2);
-- 공백제거, 문자기준 trim
SELECT LENGTH(RTRIM(' aaaa ')), LENGTH(LTRIM(' aaaa ')), LENGTH(TRIM(' aaaa '));
-- 길이(byte), 비트수, 문자의 개수
SELECT length('ssafy'), BIT_LENGTH('ssafy'), CHAR_LENGTH('ssafy'), length('싸피'), BIT_LENGTH('싸피'), CHAR_LENGTH('싸피');
-- 현재 시간 2024-09-10 10:11:52 2024-09-10 10:11:52 2024-09-10 10:11:52
select now(), SYSDATE(), CURRENT_TIMESTAMP();
-- 현재시간 (실행시점) : 2024-09-10 10:11:52. 2024-09-10 10:11:57. 2024-09-10 10:11:52
select now(), SLEEP(5), SYSDATE(), sleep(5), CURRENT_TIMESTAMP();
-- now()와 current_timestamp()는 select 함수가 시작된 시간
-- sysdate()는 현재 시간
-- 날짜 또는 시간만 반환 : 2024-09-10 2024-09-10 10:12:10 10:12:10
SELECT CURDATE(), CURRENT_DATE(), CURTIME(), CURRENT_TIME();
-- X일(or 시간) 전, 후
SELECT now(), ADDDATE(now(), INTERVAL 5 MINUTE), ADDDATE(now(), INTERVAL 5 day), ADDDATE(now(), INTERVAL 5 year),
DATE_ADD(now(), interval -2 MINUTE), SUBDATE(now(), interval -2 MINUTE);
-- 날짜 세부 반환 함수 :
SELECT year(now()), MONTH(now()), MONTH('2024-10-11'), MONTHNAME(now()), DAYOFMONTH(now()), DAYOFWEEK(now());
-- 날짜 형식 지정 :
-- 2024-09-03 14:04:44
-- 2024 September 3 PM 2 04 44
-- 24-09-03 14:04:44
-- 24.09.03 Tuesday
-- 14시04분44초
SELECT DATE_FORMAT(now(), '%Y-%m-%d %H:%i:%s'),
DATE_FORMAT(now(), '%Y %M %e %p %h %i %s'),
DATE_FORMAT(now(), '%Y-%m-%d %H:%i:%s'),
DATE_FORMAT(now(), '%Y-%m-%d %H:%i:%s'),
DATE_FORMAT(now(), '%Y-%m-%d %H:%i:%s');
-- 시간, 날짜 차
select datediff(curdate(), '1998-11-04'), TIMEDIFF(CURTIME(), '08:30:11');
-- 달의 마지막 날
SELECT last_day('2028-02-11');
논리 함수
집계 함수
하나 이상의 행을 그룹으로 묶어 연산하여 총합, 평균 등을 하나의 결과로 반환
-- 논리함수 : 크다 작다 3 b a
SELECT if(3 > 2, '크다', '작다');
-- select if(조건 , 참결과, 거짓결과);
SELECT if(3 > 2, '크다', '작다'), IFNULL(null, 'a'), IFNULL('a', 'b'), NULLIF('a','a');
-- employees table에서 사원의 총수, 급여의 합, 급여의 평균, 최고급여, 최저급여
SELECT count(employee_id), sum(salary), AVG(salary), max(salary), min(salary)
from employees;