MySQL 내장함수
숫자 관련 함수
- ABS(숫자) : 절대값
- CEILING(숫자) : 값보다 큰 정수 중 가장 작은수
- FLOOR(숫자) : 값보다 작은 정수 중 가장 큰 수
- ROUND(숫자, 자릿수) : 자릿수 기준으로 반올림
- TRUNCATE(숫자, 자릿수) : 숫자를 자릴수를 기준으로 버림
- POW(X, Y) or POWER(X, Y) : X의 Y 제곱
- MOD(A, B) : A mod B
- GREATEST(num1, num2, ...) : 주어진 수에서 가장 큰 수를 반환
- LEAST(num1, num2, ...) : 주어진 수에서 가장 작은 수를 반환
문자 관련 함수
- ASCII(문자) : .문자의 아스키 코드 값 리턴
- CONCAT('문자열1', '문자열2', ...) : 문자열들을 결합
- INSERT('문자열', 시작위치, 길이, '새로운 문자열') : 문자열의 시작위치무터 길이만큼 새로운 문자열로 대치
- REPLACE('문자열', '기존 문자열', '바뀔 문자열') : 문자열 중 기준 문자열을 바뀔 문자열로 변경
- INSTR('문자열', '찾는 문자열') : 문자열 중 찾는 문자열의 위치 값을 리턴
- MID('문자열', 시작위치, 개수) : 문자열 중 시작위치부터 개수만큼 리턴
- SUBSTRING('문자열', 시작위치, 개수) : 문자열 중 시작위치부터 개수만큼 리턴
- LTRIM('문자열') : 문자열 중 왼쪽의 공백을 제거
- RTRIM('문자열') : 문자열 중 오른쪽의 공백을 제거
- TRIM('문자열') : 양쪽 모두의 공백을 제거
- LACSE('문자열') or LOWER('문자열') : 모든 문자를 소문자로 변경
- UCASE('문자열') or UPPER('문자열') : 모든 문자를 대문자로 변경
- LEFT('문자열', 개수) : 문자열 중 왼쪽에서 개수만큼 추출
- RIGHT('문자열', 개수) : 문자열 중 오른쪽에서 개수만큼 추출
- REVERSE('문자열') : 문자열을 반대로 나열
날짜 관련 함수
- NOW() or SYSDATE() or CURRENT_TIMESTAMP() : 현재 날짜와 시간 리턴
- CURDATE() or CURRENT_DATE() : 현재 날짜 리턴
- CURTIME() or CURRENT_TIME() : 현재 시간 리턴
- DATE_ADD(날짜, INTERVAL 기준 값) : 날짜에서 기준 값만큼 더한다
- DATE_SUB(날짜, INTERVAL 기준 값) : 날짜에서 기준 값만큼 뺀다
- YEAR(날짜) : 날짜의 연도 리턴
- MONTH(날짜) : 날짜의 월 리턴
- MONTHNAME(날짜) : 날짜의 월을 영어로 리턴
- DAYNAME(날짜) : 날짜의 요일을 영어로 리턴
- DAYOFMONTH(날짜) : 날짜의 월별 일자 리턴
- DAYOFWEEK(날짜) : 날짜의 주별 일자 리턴, 일요일(1), 월요일(2), ..., 토요일(7)
- WEEKDAY(날짜) : 날짜의 주별 일자 리턴, 월요일(0), 화요일(1), ...,일요일(6)
- DAYOFYEAR(날짜) : 일년을 기준으로 한 날짜까지의 일 수 (365일 중 X일)
- WEEK(날짜) : 일년 중 몇 번째 주
- FROM_DAYS(날수) : 00년 00월 00일부터 날 수 만큼 경과한 날의 날짜 리턴
- TO_DAYS(날짜) : 00년 00월 00일부터 날짜까지의 일자 수 리턴
- DATE_FORMAT(날짜, '형식') : 날짜를 형식에 맞게 리턴
날짜 형식
- %Y : 년, 2022
- %y : 년, 22
- %b : 월, Jan, ..., Dec
- %M : 월, January, ..., December
- %m : 월, 01, 02, ..., 12
- %d : 일, 00, 01, 02, ..., 30, 31
- %e : 일, 0, 1, 2, ..., 30, 31
- %a : 요일, Sun, ..., Sat
- %W : 요일, Sunday, ..., Saturday
- %w : 요일, 0(일요일), ..., 6(토요일)
- %p : AM or PM
- %H : 시간, 01, 02, ..., 22, 23
- %h : 시간, 01, 02, ..., 11, 12
- %I : 시간, 01, 02, ..., 11,12 upper i
- %k : 시간, 0, 1, 2, ..., 22, 23
- %l : 시간, 1, 2, ..., 11, 12 lower L
- %i : 분, 00, 01, ..., 59
- %S : 초, 00, 01, ..., 59
- %s : 초, 00, 01, ..., 59
- %T : 시간, 24-hour (hh:mm:ss)
- %j : 1년 중 X일, 001, 002, ..., 365
논리 관련 함수
- IF(논리식, 값1, 값2) : 논리식이 참이면 값1 리턴, 거짓이면 값2 리턴
- IFNULL(값1, 값2) : 값1이 NULL이면 값2로 대치, NULL이 아니면 값1 리턴
- NULLIF(값1, 값2) : 값1 = 값2이 TRUE이면 NULL 리턴, 그렇지 않으면 값1 리턴
그룹 함수(aggregation function)
집계(그룹, 집합) 함수는 하나 이상의 행을 그룹으로 묶어 연산하여 총합, 평균 등을 하나의 결과로 반환
- COUNT(필드명) : NULL 값이 아닌 레코드 수를 리턴
- SUM(필드명) : 필드명에 해당하는 레코드 값의 합계를 리턴
- AVG(필드명) : 각각의 그룹 안에서 필드명에 해당하는 레코드 값의 평균을 리턴
- MAX(필드명) : 필드명에 해당하는 레코드 값 중 최대값을 리턴
- MIN(필드명) : 필드명에 해당하는 레코드 값 중 최소값을 리턴
GROUP BY Clause
GROUP BY 절
SELECT 문에서 GROUP BY 절을 사용하는 경우 Database는 쿼리 된 테이블의 행을 그룹으로 묶는다.
데이테베이스는 선택 목록의 집계 함수를 각 행 그룹에 적용하고 각 그룹에 대해 단일 결과 행을 반환한다.
GROUP BY 절을 생락하면 데이테베이스는 선택 목록의 집계 함수를 쿼리 된 테이블의 모든 행에 적용
SELECT 절의 모든 요소는 GRUOP BY 절의 표현식, 집계 함수를 포함하는 표현식 또는 상수만 가능
HAVING 절
GROUP BY 결과에 조건을 추가 할 경우 HAVING 절을 사용
Query의 실행 순서를 보면 WHERE 절이 GROUP BY절 보다 먼저 실행 되기 때문에 aggregate 조건은 HAVING 절에 작성
SET Operation
모든 집합 연산자는 동일한 우선순위를 갖는다.
SELECT 절에 있는 column의 개수와 type이 일치해야 한다.
- UNION : 두 쿼리에서 선택된 모든 행 반환(중복은 한 번만), SET - 합집합
- UNION ALL : 두 쿼리에서 선택된 모든 행 반환(모든 중복 포함), SET - 합집합
- INTERSECT : 두 쿼리에서 선택된 모든 중복 행 반환, SET - 교집합
- MINUS : 첫 번째 쿼리에서 선택한 행 반환(중복행 제거), SET - 차집합
Transaction
데이테베이스의 상태를 변화시키는 일종의 작업 단위를 의미
- START TRANSACTION : COMMIT, ROLLBACK이 나올 때까지 실행되는 모든 SQL
- COMMIT : 모든 코드를 실행
- ROLLBACK : START TRANSACTIOM 실행 전 상태로 되돌림
'Back-End > Database' 카테고리의 다른 글
Database Modelling (데이터베이스 모델링) 1 (0) | 2022.09.26 |
---|---|
Sub query (0) | 2022.09.19 |
JOIN (0) | 2022.09.19 |
Data Manipulation Language (DML) (0) | 2022.09.11 |
RDBMS & SQL (0) | 2022.09.11 |