문자열함수
limit : limit 0,10 붙이면 1 부터 10번째 까지만
concat : concat ( A, B) 연결
upper , ucase : 대문자로
lower , lcase : 소문자로
substring('문자열' , 시작index , 시작으로부터몇개인지) :문자열 자르기
lpad , rpad : lpad(’내용’, 전체칸수, ‘나머지채울내용’) 왼쪽정렬 / rpad는 오른쪽 정렬
trim , ltrim , rtrim : MySQL 문자열에 공백 또는 문자 제거
length : 문자 길이 (공백 포함)
수학함수
abs : 절댓값 반환
floor : 소숫점 내림(버림)
ceil : 소숫점 올림
mod(a,b) : a%b 의 값. 나머지 반환
power(x,y) : x의 y승
pow(x,y) : x의 y제곱근
round(x) , round(x,y) : x에 가장 가까운 정수 (반올림) / x값 중에서 소수점 y자리에 가장 근접한 실수
greatest , least : 주어진 값들 중에서 최댓값 , 최솟값 반환
날짜함수
curdate() , current_date : 현재시간
now() vs sysdate() : 현재시간 시분초까지
now()의 경우 쿼리가 실행되는 그 순간을 기점으로 삼는다. 반면 sysdate()의 경우 함수가 실행되는 순간을 기점으로 삼는다.
date_format :
| %Y | 4자리 년도 | %m | 숫자 월 ( 두자리 ) |
|---|---|---|---|
| %y | 2자리 년도 | %c | 숫자 월(한자리는 한자리) |
| %M | 긴 월(영문) | %d | 일자 (두자리) |
| %b | 짧은 월(영문) | %e | 일자(한자리는 한자리) |
| %W | 긴 요일 이름(영문) | %I | 시간 (12시간) |
| %a | 짧은 요일 이름(영문) | %H | 시간(24시간) |
| %i | 분 | %r | hh:mm:ss AM,PM |
| %T | hh:mm:SS | %S | 초 |
period_diff(p1,p2) :p1 - p2 만큼 개월 수 를 구함
date_add(adddate,더할날짜길이) : 더할날짜만큼 날짜 더하기
date_sub(=subdate) : 뺄날짜만큼 날짜 빼기
cast('내용' as 타입) : type 변경
집계함수
avg : 평균
max , min : 최댓값, 최솟값
count : 갯수 반환
sum : 합 반환
stddev : 표준편차 반환
select절에 그룹함수(통계함수) 있는 경우, 어떤 컬럼도 select절에 올 수 없다 → 와도 의미가 없음
쿼리 순서
- from: 테이블에 접근
- where: 조건에 맞는 row를 선택
- projection: 집계(임시 테이블, 메모리 캐시)
- 결과를 반환: 출력
group by 한 컬럼은 select절에 올 수 있다.
Having 절 : 집계결과(결과 테이블) 에서 row를 선택해야 하는 경우 , 이미 where절은 실행 후 이기 때문에 having 절에서 조건을 줘야 한다.