본문 바로가기
MySQL

MySQL(함수)

by 글로리. 2020. 6. 18.

SQL 함수

저장되어 있는 데이터를 집계하거나 조회, 저장, 수정하는 과정에서 값을 가공하기 위하여 제공되는 모듈화된 기능
각 DBMS에 따라 차이를 보이지만, 기본적으로 많이 사용되는 함수들은 공통으로 포함하고 있음.

함수의 사용방법

데이터 조회 시 -> 조회하고자 하는 컬럼의 값을 함수로 가공하거나 검색조건의 값을 지정할 때 사용

select 함수이름(컬럼이름) from 테이블이름
[where 함수가 적용된 검색조건]

문자열 관련 함수

함수이름 설명
left(값, 길이) 값을 길이의 글자 수 만큼 왼쪽부터 자름.
right(값, 길이) 값을 길이의 글자 수 만큼 오른쪽부터 자름.
substring(값, 시작위치, 길이) 값을 시작위치부터 길이만큼 자름. 길이가 주어지지않을경우 끝까지 자름.
※ 주의 : 다른 언어와 다르게 시작위치가 1부터 시작.
replace(값, A, B) 값에서 A를 B로 바꿈.
concat(값1, 값2, ~~~, 값n) 값들을 하나의 문자열로 연결.
trim(값) 값의 앞뒤 공백 제거.
ltrim(값) 값의 왼쪽 공백 제거.
rtrim(값) 값의 오른쪽 공백 제거.
md5(값) 값을 암호화
char_length(값) 값의 글자수 리턴.
instr(값, 찾을 내용) 값에서 찾을 내용이 시작되는 위치 리턴. 못찾으면 0.
upper(값) 값을 대문자로 변환.
lower(값) 값을 소문자로 변환.

예제 1)

학생 테이블에서 학생의 이름과 성(이름의 첫글자)조회.

예제 2)

학생테이블에서 학생의 이름과 이름의 마지막글자 조회.

예제 3)

학생테이블에서 이름과 이름의 두번째글자 조회.

예제 4)

학생이름과 이름에서 '이'를 'lee'로 변환하여 조회.

예제 5)

학생이름과 학년을 하나의 문장으로 합쳐 출력.

예제 6)

학생이름과 학년을 '이름 학년'의 형식으로 출력.

예제 6)

학생이름에서 앞뒤 공백을 제거하여 출력.

예제 7)

학생이름에서 왼쪽 공백을 제거하여 출력.

예제 8)

학생이름에서 오른쪽 공백을 제거하여 출력.

예제 9)

학생이름을 암호화 한 결과 출력.

예제 10)

학생이름의 글자수 조회.

예제 11)

학생이름에서 '이'라는 글자가 나타나는 위치와 이름 조회.

예제 12)

학생 아이디를 대문자로 변환하여 출력.

예제 13)

학생 아이디를 소문자로 변환하여 출력.

날짜 관련 함수

프로그램을 사용하는 국가별 입력형식을 따라간다

날짜 관련 함수 종류(1)

함수이름 설명
now() 시스템의 현재 시각을 리턴.
date_add(시각, INTERVAL 값 단위) 시각을 기준으로 날짜를 연산하여 리턴.
date_format(시각, 형식) 시각을 형식에 맞춰 변환한 결과 리턴.

data_add 함수에 사용가능한 단위

YEAR, MONTH, HOUR, MINUTE, SECOND
예)

  • 1년후 -> date_add(now(), INTERVAL 1 YEAR)
  • 3개월 전 -> date_add(now(), INTERVAL -3 MONTH)

날짜 관련 함수 종류(2)

date_format 함수에서 사용 가능한 키워드

키워드 기능 키워드 기능
%M 달 이름 %m MM형식의 월
%W 요일 이름 %H HH형식의 시간 (24시간제)
%Y YYYY형식의 년도 %k H형식의 시간 (24시간제)
%y YY형식의 년도 %h HH형식의 시간 (12시간)
%a 요일 이름의 약자 %i MM형식의 분
%d DD형식의 날짜 %s SS형식의 초
%e D형식의 날짜 %p AM/PM

예제 1)

시스템의 현재시각 조회.

예제 2)

현재시점에서 100일 후, 7일 전 조회하기

예제 3)

현재시각을 yyyymmddhhmiss 형식의 14자리로 표현

그룹함수

Table의 전체 행을, 하나 이상의 칼럼을 기준으로 값에 따하 그룹화하여 그룹별로 결과 출력하는 함수.

종류 설명
COUNT 행의 갯수 출력
MAX NULL을 제외한 모든행에서 최대값 출력
MIN NULL을 제외한 모든행에서 최소값 출력
SUM NULL을 제외한 모든행의 합계 출력
AVG NULL을 제외한 모든행의 평균 출력

예제 1)

3학년 학생은 총 몇명인가?

예제 2)

101번 학과에 소속된 교수들의 보직수당 조회

예제 3)

101번 학과에 소속된 교수들중에서 보직수당을 받는 교수의 수 조회.

예제 4)

101번 학과에 소속된 교수는 모두 몇명인가?

예제 5)

급여를 가장 많이 받는 교수는 얼마를 받는가?

예제 6)

급여를 가장 적게 받는 교수는 얼마를 받는가?

예제 7)

한달에 지급되는 교수의 급여는 모두 얼마인가?

예제 8)

학생들의 평균 키는 몇인가?

예제 9)

101번 학과 학생들의 몸무게 평균과 합계를 출력.

 

'MySQL' 카테고리의 다른 글

MySQL(데이터베이스 생성 및 관리)  (0) 2020.06.19
MySQL(서브쿼리, 데이터 입력·수정·삭제, 함수)  (0) 2020.06.18
MySQL(그룹조회, 조인)  (0) 2020.06.18
MySQL(연산자, 정렬)  (0) 2020.06.17
MySQL(데이터베이스)  (1) 2020.06.17

댓글