#1. SQL 함수

1. SQL 함수

1) SQL 함수란?

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

 

2) 함수의 사용 방법

  • 데이터 조회 시 조회하고자 하는 컬럼의 값을 함수로 가공하거나 검색조건의 값을 지정할 때 사용한다.
SELECT 함수이름(컬럼이름) FROM 테이블이름
[WHERE 함수가 적용된 검색조건];

 

2. 문자열 관련 함수

1) 문자열 관련 함수의 종류

  • 아래의 표에서 값은 컬럼 이름으로도 지정 가능하다.
함수 이름 설명
left(값, 길이) 주어진 값을 길이의 글자 수 만큼 왼쪽에서 잘라낸다
right(값,길이)
주어진 값을 길이의 글자 수 만큼 오른쪽에서 잘라낸다.
substring(값,시작위치,길이)
주어진 값을 시작 위치부터 길이만큼 잘라낸다. 만약 길이가 주어지지 않은 경우 시작 위치부터 끝까지 잘라낸다.
replace(값,A,B)
주어진 값에서 A를 찾아 B로 바꾼다.
concat(값1,값2..값n)
주어진 값들을 하나의 문자열로 연결한다.
trim(값)
주어진 값의 앞뒤 공백을 제거한다.
ltrim(값)
주어진 값의 왼쪽 공백을 제거한다.
rtrim(값)
주어진 값의 오른쪽 공백을 제거한다.
md5(값)
주어진 값을 암호화 한다.
char_length(값)
주어진 값의 글자수를 리턴한다.
instr(값, 찾을 내용)
주어진 값에서 찾을 내용이 시작되는 위치를 리턴한다. 찾지 못할 경우 0을 리턴한다.
upper(값)
주어진 값을 대문자로 변경한다.
lower(값)
주어진 값을 소문자로 변경한다.

 

2) 예제

- 학생 테이블에서 학생의 이름과 성(이름의 첫글자)을 조회하시오.

- 학생 테이블에서 학생의 이름과 이름의 마지막 글자를 조회하시오.

- 학생 테이블에서 이름과 이름의 두 번째 글자를 조회하시오.

- 학생 이름과 이름에서 '김'을 'K'로 변경한 값을 출력하시오.

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

- 학생의 이름에서 앞뒤 공백을 제거한 값을 출력하시오.

- 학생의 이름을 암호화 한 결과를 출력하시오.

- 학생의 아이디에 대한 글자수를 조회하시오.

- 학생 이름에서 '진'이라는 글자가 나타나는 위치와 이름을 조회하시오.

0이 아닌 1부터 시작하며, 찾지 못했을 때는 0을 출력

- 학생의 아이디를 대문자로 변경하여 조회하시오.

- 학생의 아이디를 소문자로 변경하여 조회하시오.

 

3. 날짜 관련 함수

1) 날짜 관련 함수의 종류

함수 이름 설명
now( ) 시스템의 현재 시작을 리턴한다.
date_add(시각, INTERVAL 값 단위) 주어진 시각을 기준으로 날짜를 연산하여 리턴한다.
date_format(시각, 형식) 주어진 시각을 형식에 맞춰 변경한 결과를 리턴한다.
  • date_add 함수에서 사용 가능한 단위
    • YEAR, MONTH, DAY, HOUR, MINTUE, SECOND
# 1년 후
date_add(now(), INTERVAL 1 YEAR)

# 3개월 전
date_add(now(), INTERVAL -3 MONTH)
  • date_add 함수를 사용하여 저장되어 있는 데이터를 기준으로 날짜 계산을 수행하는 경우
date_add(컬럼이름, INTERVAL 값 단위)

 

  • date_format 함수에서 사용 가능한 키워드
기능 키워드 기능 키워드
달 이름 %M MM형식의 월 %m
요일 이름 %W HH형식의 시간(24시간제) %H
YYYY형식의 년도 %Y H형식의 시간(24시간제) %k
YY형식의 년도 %y HH형식의 시간(12시간제) %h
요일 이름의 약자 %a MM형식의 분 %i
DD형식의 날짜 %d SS형식의 초 %s
D형식의 날짜 %e AM / PM %p
# yy/mm/dd hh:mi:ss 형식의 날짜 얻기
SELECT date_format(now(), '%y/%m/%d %H:%i:%s');

 

1) 예제

- 시스템의 현재 시각 조회하기

단순히 시스템의 현재 시각을 조회하는 경우 FROM 절은 명시하지 않는다.

- 현재 시간에서 100일 후 조회하기

- 현재 시간에서 7일 전 조회하기

- 현재 시각을 yyyymmddhhmiss 형식의 14자리로 표현하시오.

 

4. 그룹 함수

1) 그룹함수란?

  • 그룹함수는 테이블의 전체 행, 하나 이상의 칼럼을 기준으로 칼럼 값에 따라 그룹화하여 그룹별로 결과를 출력하는 함수이다.
종류 설명
COUNT 행의 갯수 출력
MAX NULL을 제외한 모든 행에서 최대값 출력
MIN NULL을 제외한 모든 행에서 최소값 출력
SUM NULL을 제외한 모든 행의 합계
AVG NULL을 제외한 모든 행의 평균값

 

1) 예제

- 3학년 학생은 총 몇 명인지 구하시오.

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

일반 적으로 조회하면 NULL 데이터도 같이 조회된다.
COUNT 함수는 지정된 컬럼에서 NULL 데이터는 제외하고 집계하기 떄문에 보직 수당이 결정되지 않은 교수는 집계에서 제외된다.

- 101번 학과에 소속된 교수는 모두 몇 명인지 구하시오.

  • 전체 데이터 수를 조회하기 위해서는 COUNT 함수에 '*'을 지정하거나 NULL 데이터가 저장되어 있지 않은 칼럼을 지정한다.
  • 전체 데이터 수를 조회할 경우 컬럼 이름을 지정하는 것 보다 '*'을 지정하는 것이 처리속도가 더 빠르다. (MySQL에 한함)

- 급여를 가장 많이 받는 교수는 얼마를 받는지 구하시오.

- 급여를 가장 적게 받는 교수는 얼마를 받는지 구하시오.

- 한달에 지급되는 교수의 급여는 모두 얼마인지 구하시오.

- 학생들의 평균 키는 얼마인지 구하시오.

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

'국비수업 > MySQL' 카테고리의 다른 글

[MySQL] 서브쿼리  (0) 2022.06.13
[MySQL] 그룹 조회 / 조인(JOIN)  (0) 2022.06.10
[MySQL] SQL 연산자 / 정렬, 부분조회  (0) 2022.06.09
[MySQL] 데이터베이스 조회하기  (0) 2022.06.08
[MySQL] Mac에 MySQL 설치하기  (0) 2022.06.08

+ Recent posts