MySQL

MySQL 내장 함수

WoodenStella 2023. 1. 16. 14:22

이번 게시글에서는 MySQL의 내장 함수 중 자주, 혹은 종종 쓰이는 함수들에 대해 알아보고자 한다.

이번 게시글에서의 함수 사용 시에는, 임의의 테이블인 dual을 from문에 위치시키는 것을 기본으로 한다.

1. 숫자 함수

  • ABS(n): 절댓값
select abs(-4.5)
  from dual;

  • CEIL(n): 크거나 같은 최소의 정수 (올림)
select ceil(4.1)
  from dual;

 

  • FLOOR(n): 작거나 같은 최소의 정수(내림)
select floor(4.1)
  from dual;

  • ROUND(n, m): m번째 자리까지의 반올림
select round(4.17, 1)
  from dual;

2. 문자 함수

  • CONCAT('문자열', '문자열'): 여러 개의 문자열을 합침
select CONCAT('SQL ', 'PRACTICING')
  from dual;

  • LPAD, RPAD('문자열',정수,'문자'): 대상 문자열의 왼쪽 혹은 오른쪽에 지정한 자릿수만큼 지정한 문자로 채움(기존 문자 포함해서 카운팅)
select LPAD('1234', 7, '*')
  from dual;
select RPAD('1234', 7, '*')
  from dual;

  • REPLACE('문자열', '문자열', '문자열'): 문자열 1의 문자열2를 문자열 3으로 바꿈
select REPLACE('hello python', 'python', 'mysql')
  from dual;

  • SUBSTR('문자열', 정수1, 정수2): 문자열을 정수1 위치부터 정수2만큼 잘라냄
select SUBSTR('ABCDEFG',1,3)
  from dual;

 *1번째(A)부터 시작해 3개의 문자 추출

3. 날짜 함수

  • STR_TO_DATE('문자열', '포맷'): 문자열을 날짜형으로 반환
select STR_TO_DATE('2022-11-25', '%Y-%m-%d')
  from dual;
  • DATE_FORMAT('날짜','포맷'): 날짜형 데이터를 문자열(VARCHAR)로 반환
select DATE_FORMAT('2022-11-25','%Y-%m-%d')
  from dual;
  • DATEDIFF('날짜1', '날짜2'): 두 날짜 간의 차이 반환
select DATEDIFF('2022-02-14', '2022-11-25')
  from dual;

마지막으로 날짜함수를 응용해보도록 하자.

현재 사용 중인 데이터에서, 월별 총 매출을 구해보고자 한다.

단계는 다음과 같다.

1. 날짜데이터는 잘라서 사용할 수 없으므로, 날짜데이터를 문자열 데이터로 변환 후 사용한다.

2. SUBSTR으로 연월까지의 문자열을 잘라낸다.

3. 연월이 일치하는 것들을 기준으로 그루핑한다.

4. saleprice를 합산해 노출시킨다.

코드로 정리하자면 다음과 같다.

select substring( date_format(orderdate, '%Y %m %d'),1 ,7 )as Year-Month, sum(saleprice) as Totalsales
  from Orders
  group by Year-Month;

데이터 기준으로는 2014년 7월밖에 없으므로, 다음과 같이 7월의 매출이 나온다.

이상으로 MySQL의 내장함수에 대해 알아보았다.