본문 바로가기

BackEnd/DB(SQL)

[DB_MySQL] 이것이 MySQL이다 ch07 SQL 고급 3(수학 함수, 날짜 및 시간 함수, 시스템 정보 함수)

728x90
반응형

1. 수학 함수

1. ABS(숫자)
   ▷ 숫자의 절댓값 계산
-- ABS(숫자) : 절댓값
select abs(-100);

-- 100 반환​


2. ACOS(숫자), ASIN(숫자), ATAN(숫자), ATAN2(숫자1, 숫자2), SIN(숫자), COS(숫자), TAN(숫자)
   ▷ 삼각 함수와 관련된 함수 제공

3. CEILING(숫자), FLOOR(숫자), ROUND(숫자)
   ▷ 올림, 내림, 반올림 계산
-- CEILING(숫자) : 올림 = ceil()
-- FLOOR(숫자) : 내림
-- ROUND(숫자) : 반올림
select ceiling(4.7), floor(4.7), round(4.7);

-- 5, 4, 5 반환​


4. CONV(숫자, 원래 진수, 변환할 진수)
   ▷ 숫자를 원래 진수에서 변환할 진수로 계산
-- CONV(숫자, 원래 진수, 변환할 진수) : 진수 변환
select conv('A4', 16, 2), conv(100, 10, 8);

-- 10100100, 144 반환​


5. DEGREES(숫자), RADIANS(숫자), PI ( )
   ▷ 라디안 값을 각도 값으로, 각도 값을 라디안 값으로 변환, PI()는 3.141592 반환
-- DEGREES(숫자) : 라디안 값을 각도 값으로
-- RADIANS(숫자) : 각도 값을 라디안으로 변환
-- PI ( )
select degrees(pi()), radians(180);

-- 180, 3.141592653589793 반환​


6. EXP(X), LN(숫자), LOG(숫자), LOG(밑수, 숫자), LOG2(숫자), LOG10(숫자)
   ▷ 지수, 로그와 관련된 함수 제공

7. MOD(숫자1, 숫자2) 또는 숫자1 % 숫자2 또는 숫자1 MOD 숫자2
   ▷ 숫자1을 숫자2로 나눈 나머지 값을 구함
-- MOD(숫자1, 숫자2) : 숫자1을 숫자2로 나눈 나머지
-- 숫자1 % 숫자2
-- 숫자1 MOD 숫자2
select mod(157,10), 157%10, 157 mod 10;

-- 7, 7, 7 반환​


8. POW(숫자1, 숫자2), SQRT(숫자)
   ▷ 거듭제곱값 및 제곱근을 구함
-- POW(숫자1, 숫자2) : 거듭제곱 값
-- SQRT(숫자) : 제곱근
select pow(2,3), sqrt(9);

-- 8, 3 반환​


   ▷ RAND( )는 0 이상 1 미만의 실수 구함
-- RAND() : 0~1 미만의 실수를 구하게 됩니다. (랜덤 값을 구할 때)
select rand(), floor(1 + (rand() * (7-1)));

-- 0.493648..., 6 반환


9. SIGN(숫자)
   ▷ 숫자가 양수, 0, 음수인지 판별, 결과는 1, 0, -1 셋 중에 하나 반환
-- SIGN(숫자) : 양수 = 1, 0 = 0, 음수 = -1
select sign(100), sign(0), sign(-100.123);

-- 1, 0, -1 반환​


10. TRUNCATE(숫자, 정수)
   ▷ 숫자를 소수점을 기준으로 정수 위치까지 구하고 나머지는 버림
-- truncate(숫자, 정수) : 숫자를 소수점을 기준으로 정수 위치까지 구하고 나머지는 버린다.
-- 양수면 소수점 자리수 이후에 버림, 음수면 정수 자리까지 버림
select truncate(12346.12345, 2), truncate(12346.12345, -2);

-- 12346.12, 12300 반환​

 

 

2. 날짜 및 시간 함수

1. ADDDATE(날짜, 차이), SUBDATE(날짜, 차이)
   ▷ 날짜를 기준으로 차이를 더하거나 뺀 날짜 구함
-- ADDDATE(날짜, 차이) : 날짜를 기준으로 추가(이후 날짜를 구할 때)
-- SUBDATE(날짜, 차이) : 날짜를 기준으로 빼기(이전 날짜를 구할 때)
select adddate('2023-02-07', interval 31 day), adddate('2023-02-07', interval 1 month);
-- 2023-03-10, 2023-03-07 반환

select subdate('2023-02-07', interval 31 day), subdate('2023-02-07', interval 1 month);
-- 2023-01-07, 2023-01-07 반환​


2. ADDTIME(날짜/시간, 시간), SUBTIME(날짜/시간, 시간)
   ▷ 날짜/시간을 기준으로 시간을 더하거나 뺀 결과를 구함
-- ADDTIME(날짜/시간, 시간) : 이후 시간을 구할 때
-- SUBTIME(날짜/시간, 시간) : 이전 시간을 구할 때
select addtime('2023-02-07 11:22:59', '1:1:1'), addtime('11:22:59', '2:10:10');
-- 2023-02-07 12:24:00, 13:33:09 반환

select subtime('2023-02-07 11:22:59', '1:1:1'), subtime('11:22:59', '2:10:10');
-- 2023-02-07 10:21:58, 09:12:49 반환​


3. CURDATE( ), CURTIME( ), NOW( ), SYSDATE( )
   ▷ CURDATE( ) : 현재 연-월-일
   ▷ CURTIME( ) : 현재 시 : 분 : 초
   ▷ NOW( ), SYSDATE( ) : 현재 ‘연-월-일 시 : 분 : 초
-- CURDATE( ) : 현재 날짜 연-월-일
-- CURTIME( ) : 현재 시간 시:분:초
-- NOW( ), SYSDATE( ) : 시스템 현재 날짜 시간 연-월-일 시:분:초
select curdate(), curtime(), now(), sysdate();
-- 2023-02-07, 11:29:54, 2023-02-07 11:29:54, 2023-02-07 11:29:54 반환​


4. YEAR(날짜), MONTH(날짜), DAY(날짜), HOUR(시간), MINUTE(시간), SECOND(시간), MICROSECOND(시간)
   ▷ 날짜 또는 시간에서 연, 월, 일, 시, 분, 초, 밀리초 구함
-- YEAR(날짜)
-- MONTH(날짜)
-- DAY(날짜)
-- HOUR(시간)
-- MINUTE(시간)
-- SECOND(시간)
-- MICROSECOND(시간)
select year(curdate()), month(curdate()), dayofmonth(curdate());
-- 2023, 2, 7 반환

select hour(curtime()), minute(curtime()), second(curtime()), microsecond(current_time());
-- 11, 33, 16, 0 반환
-- 여기서 micosecond는 출력이 되지않습니다.
-- curtime(), current_time() 둘 다 사용해도 무관합니다.​


5. DATE( ), TIME( )
   ▷ DATETIME 형식에서 연-월-일 및 시 : 분 : 초만 추출
-- DATE( ) : 연-월-일
-- TIME( ) : 시:분:초
select date(now()), time(now());
-- 2023-02-07, 11:34:51 반환​


6. DATEDIFF(날짜1, 날짜2), TIMEDIFF(날짜1 또는 시간1, 날짜1 또는 시간2)
   ▷ DATEDIFF( )는 날짜1-날짜2의 일수를 결과로 구함
-- DATEDIFF(날짜1, 날짜2) : 날짜1, 날짜2의 차이 일수(날짜 차이)
-- TIMEDIFF(날짜1 또는 시간1, 날짜1 또는 시간2) : 시간 차이를 구할 때
select datediff('2023-03-31', now());
-- 52 반환

select timediff('23:23:59', '11:38:59');
-- 11:45:00 반환​


7. DAYOFWEEK(날짜), MONTHNAME( ), DAYOFYEAR(날짜)
   ▷ 요일(1:일, 2:월~7:토) 및 1년 중 몇 번째 날짜인지 구함
-- DAYOFWEEK(날짜) : 한 주의 요일 출력(일 : 1, 월 : 2, 화 : 3, ..., 토 : 7) 
-- MONTHNAME( ) : 달의 이름
-- DAYOFYEAR(날짜) : 일년 중 몇 일이 지났는지
select dayofweek(curdate()), monthname(curdate()), dayofyear(curdate());
-- 3, February, 38 반환​


8. LAST_DAY(날짜)
   ▷ 주어진 날짜의 마지막 날짜를 구함
-- LAST_DAY(날짜) : 주어진 날짜의 달에 마지막 일을 구할 때
select last_day('2024-02-02');
-- 2024-02-29 반환​


9. MAKEDATE(연도, 정수)
   ▷ 연도에서 정수만큼 지난 날짜 구함
-- MAKEDATE(연도, 정수) : 연도에서 정수만큼 지난 일자를 구할 때
select makedate(2025, 32);
-- 2025-02-01 반환​


10. MAKETIME(시, 분, 초)
   ▷ 시, 분, 초를 이용해서 ‘시 : 분 : 초’의 TIME 형식 만듦
-- MAKETIME(시, 분, 초) : 시:분:초 형태로 변환
select maketime(11, 49, 59);
-- 11:49:59 반환​


11. PERIOD_ADD(연월, 개월수), PERIOD_DIFF(연월1, 연월2)
   ▷ PERIOD_ADD( )는 연월에서 개월만큼의 개월이 지난 연월 구함
   ▷ PERIOD_DIFF( )는 연월1-연월2의 개월수 구함
-- PERIOD_ADD(연월, 개월수) : 연월에서 개월수 지난 날짜
-- PERIOD_DIFF(연월1, 연월2) : 연월1과 연월2의 차이 월
select period_add(202501, 11), period_diff(202501, 202312);
-- 202512, 13 반환​


12. QUARTER(날짜)
   ▷ 날짜가 4분기 중에서 몇 분기인지를 구함
-- QUARTER(날짜) : 4분기 : 1분기(1~3), 2분기(4~6), 3분기(7~9), 4분기(10~12)
select quarter('2025-07-07');
-- 3 반환​


13. TIME_TO_SEC(시간)
   ▷ 시간을 초 단위로 구함
-- TIME_TO_SEC(시간) : 시간을 초 단위 환산
select time_to_sec('12:11:10');
-- 43870 반환​

 

 

3. 시스템 정보 함수 : 시스템의 정보를 출력하는 함수

1. USER(), DATABASE()
   ▷ USER() : 현재 접속한 사용
   ▷ DATABASE() : 현재 선택된 데이터베이스
-- USER() : 현재 접속한 사용자
-- DATABASE() : 현재 선택된 데이터베이스
use sqldb;
select current_user(), database();
-- root@%, sqldb 반환​


2. FOUND_ROWS() 
   ▷ 바로 앞의 SELECT 문을 실행해서 조회된 행의 개수
-- FOUND_ROWS() : 바로 앞의 SELECT 문을 실행해서 조회된 행의 개수
use sqldb;
select * from usertbl;
select found_rows();
-- 10 반환​


3. ROW_COUNT()
   ▷ 바로 앞의 INSERT, UPDATE, DELETE 문에서 입력, 수정, 삭제된 행의 개수
   ▷ DROP문은 0을 반환하고 SELECT문은 -1을 반환한다
-- ROW_COUNT() : 바로 앞의 INSERT, UPDATE, DELETE 문에서 입력, 수정, 삭제된 행의 개수
--               DROP문은 0을 반환하고 SELECT문은 -1을 반환한다.
use sqldb;
set SQL_SAFE_UPDATES = 0;
update buytbl set price = price * 2;
select row_count();
-- 12 반환​


4. version()
   ▷ 현재 MySQL의 버전
-- version() : 현재 MySQL의 버전
select version();
-- 8.0.32 반환​


5. SLEEP(초)
   ▷ 일시정지
-- SLEEP(초) : 일시정지
select sleep(5);
select '5초 후 보여지는 항목';
-- 5초 후 '5초 후 보여지는 항목' 반환​

 

수학 함수, 날짜 및 시간 함수, 시스템 정보 함수 등을 공부해보았습니다!!

 

MySQL은 종류가 되게 많네요!

 

더 다양한 함수에 대해서 보고싶다면 아래의 사이트로 접속하세요.

http://dev.mysql.com/doc/refman/8.0/en/functions.html

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

728x90
반응형