SQL의 연산자
| 연산자 | 의미 |
|---|
| +,-,*,/ | 더하기, 빼기, 곱하기, 나누기 |
| %, MOD | 나머지 |
| IS | 양쪽이 모두 TRUE 또는 FALSE |
| IS NOT | 한쪽은 TRUE 한쪽은 FALSE |
| AND, && | 양쪽이 모두 TRUE |
| OR, || | 한쪽만 TRUE여도 TRUE |
| = | 양쪽 값이 동일 |
| !=, <> | 양쪽 같이 다름 |
| >, < | (왼쪽, 오른쪽) 값이 큼 |
| >=, <= | (왼쪽, 오른쪽) 값이 같거나 더 큼 |
| BETWEEN {MIN} AND {MAX} | 두 값 사이에 있음 |
| NOT BETWEEN {MIN} AND {MAX} | 두 값 사이가 아닌 곳에 있음 |
| IN(…) | 괄호 안의 값들 가운데 있음 |
| NOT IN(…) | 괄호 안의 값들 가운데 없음 |
| LIKE ‘…%…’ | 0~N개 문자를 가진 패턴 |
| LIKE ‘…_…’ | _ 갯수 만큼의 문자를 가진 패턴 |
사칙 연산
1
2
3
4
5
6
7
8
| // (1)
SELECT 1 + 2;
// (2)
SELECT 2 - 1 AS Minus;
// (3)
SELECT 'A' + 1;
// (4)
SELECT '1' + 3;
|
응용
📌 Example
| Product | Price | Count |
|---|
| A | 10 | 2 |
| B | 20 | 3 |
1
2
| SELECT Product, Price * Count AS Pay
FROM Example;
|
참 & 거짓
응용
// Example | Product | Price | Count | | ——- | —– | —– | | A | 10 | 2 | | B | 20 | 3 | | C | 20 | 5 | | D | 20 | 7 |
1
2
3
| SELECT Product, Count < 3 AS TEST
FROM Example
WHERE Count < 6;
|
이러한 연산자들을 SELECT 키워드 다음 혹은 WHERE 키워드 다음에 활용하여 다양한 데이터를 출력할 수 있다.
숫자 함수
| 함수 | 의미 |
|---|
| ROUND | 반올림 |
| CEIL | 올림 |
| FLOOR | 내림 |
| ABS | 절대값 |
| GREATEST | (괄호 안에서) 가장 큰 값 |
| LEAST | (괄호 안에서) 가장 작은 값 |
| MAX | 가장 큰 값 |
| MIN | 가장 작은 값 |
| COUNT | 갯수(NULL 미포함) |
| SUM | 총합 |
| AVG | 평균 |
| POW(A, B), POWER(A, B) | A를 B만큼 제곱 |
| SQRT | 제곱근 |
| TRUNCATE(N, n) | N을 소수점 n자리 까지 선택 |
문자열 함수
| 함수 | 의미 |
|---|
| UCASE, UPPER | 모두 대문자로 |
| LCASE, LOWER | 모두 소문자로 |
| CONCAT(…) | 괄호 안의 내용 이어 붙임 |
| CONCAT_WS(S, …) | 괄호 안의 내용 S로 이어 붙이기 |
| SUBSTR, SUBSTRING | 주어진 값에 따라 문자열 자르기 |
| LEFT | 왼쪽 부터 N글자 |
| RIGHT | 오른쪽 부터 N글자 |
| LENGTH | 문자열의 바이트 길이 |
| CHAR_LENGTH, CHARACTER_LENGTH | 문자열의 문자 길이 |
| TRIM | 양쪽 공백 제거 |
| LTRIM | 왼쪽 공백 제거 |
| RTRIM | 오른쪽 공백 제거 |
| LPAD(S, N, P) | S가 N글자가 될 때까지 P를 왼쪽에 이어 붙이기 |
| RPAD(S, N, P) | S가 N글자가 될 때까지 P를 오른쪽에 이어 붙이기 |
| REPLACE(S,A,B) | S중 A를 B로 변경 |
| INSTR(S, s) | S중 s의 첫 위치를 반환, 없다면 0 |
| CAST(A AS T), CONVERT(A,T) | A를 T자료형으로 변환 |
시간/날짜 관련 함수
| 함수 | 의미 | 예제 |
|---|
| CURRENT_DATE(), CURDATE() | 현재 날짜 변환 | |
| CURRENT_TIME(), CURTIME() | 현재 시간 반환 | |
| CURRENT_TIMESTAMP(), NOW() | 현재 시간과 날짜 반환 | |
| DATE() | 문자열에 따라 날짜 생성 | DATE(‘2024-02-12’) |
| TIME() | 문자열에 따라 시간 생성 | TIME(‘21:21:21’) |
| YEAR() | DATETIME값의 년도 반환 | |
| MONTHNAME() | DATETIME값의 월(영문) 반환 | MONTHNAME(‘2024-07-03’) -> July |
| MONTH() | DATETIME값의 월 반환 | |
| WEEKDAY() | DATETIME값의 요일값 (월요일: 0) | WEEKDAY(‘2024-02-16’) -> 6 |
| DAYNAME() | DATETIME값의 요일명 반환 | DAYNAME(‘2024-02-16’) -> Friday |
| DAYOFMONTH(), DAY() | DATETIME값의 날짜(일) 반환 | |
| HOUR() | DATETIME의 시 반환 | |
| MINUTE() | DATETIME의 분 반환 | |
| SECOND() | DATETIME의 초 반환 | |
| ADDDATE(), DATE_ADD() | 시간/날짜 더하기 | ADDDATE(‘2024-02-12’, INTERVAL 1 YEAR) -> ‘2025-02-12’ |
| SUBDATE(), DATE_SUB() | 시간/날짜 빼기 | |
| DATEDIFF() | 두 시간/날짜 간 일수차 | DATEDIFF(‘2024-02-12’, ‘2024-01-12’) -> 31 |
| TIMEDIFF() | 두 시간/날짜 간 시간차 | |
| LAST_DAY | 해당 달의 마지막 날짜 | |
| STR_TO_DATE(S,F) | S를 F형식으로 해석하여 시간/날짜 생성 | STR_TO_DATE(‘2024-02-12 21:21:21’, ‘%Y-%m-%d %T’) |
- DATE_FORMAT : 시간/날짜를 지정한 형식으로 반환한다.
| 형식 | 의미 |
|---|
| %Y | 4자리 연도 |
| %y | 2자리 연도 |
| %M | 월(영문) |
| %m | 월(숫자) |
| %D | 일(영문) |
| %d, %e | 일(숫자) |
| %T | hh:mm:ss |
| %r | hh:mm:ss AM/PM |
| %H, %k | 24시 |
| %h, %l | 12시 |
| %i | 분 |
| %S, $s | 초 |
| %p | AM/PM |
DATE_FORMAT(NOW(), '%Y년 %m월 %d일 %p %h시 %i분 %s초'); -> 2024년 02월 12일 PM 01시 01분 02초
기타 함수
IF(조건, T, F) : 조건이 참이라면 T, 거짓이면 F반환
📍 복잡한 조건은 CASE문 사용
1
2
3
4
5
6
7
8
9
| SELECT
CASE
WHEN a > 10 THEM '10보다 크다.'
WHEN a == 10 THEM '10이다.'
ELSE '10보다 작다.'
END;
SELECT
IF(1 > 0, '1은 0보다 크다.', '1은 0보다 작다');
|
IFNULL(A,B) : A가 NULL일 경우 B 출력
1
| SELECT(NULL, 'A'); -> A
|