Database 개념2
MySQL DataType
MySQL 내장함수
단일행 함수
- 특징 : 값은 변하지만 row의 수를 변화하지는 않는다.
숫자 관련 함수
함수 | 기능 |
---|---|
ABS(숫자) | 절대값 출력 |
CEILING(숫자) | 값보다 큰 정수 중 가장 작은 수 |
FLOOR(숫자) | 값보다 작은 정수 중 가장 큰 수 (실수를 무조건 버림(음수일 경우는 제외)) |
ROUND(숫자) | 숫자를 소수점 이하 자릿수에서 반올림 (자릿수는 양수, 0, 음수) |
TRUNCATE(숫자) | 숫자를 소수점 이하 자릿수에서 버림 |
POW(X, Y) or POWER(X,Y) | X의 Y승 |
MOD(분자, 분모) | 분자를 분모로 나눈 나머지를 구한다. (%연산자와 같음) |
GREATEST(숫자1, 숫자2, 숫자3 …) | 주어진 수 중 제일 큰 수 리턴 |
LEAST(숫자2, 숫자2, 숫자3 …) | 주어진 수 중 제일 작은 수 리턴 |
INTERVAL(a,b,c,d…) | a(숫자)의 위치 반환 |
-- emp row의 숫자만큼 3이 찍힌다. 총 14번 출력됨.
SELECT 3 FROM emp;
-- dummay table = dual
SELECT 3 FROM DUAL;
-- 단일행 함수 - 숫자 관련 함수
-- 절대값.
SELECT 3, ABS(3), ABS(-3) FROM DUAL;
-- 반올림.
SELECT 3.141592, ROUND(3.141592) FROM DUAL; -- 3.141692와 3출력.
SELECT 3.541592, ROUND(3.541592) FROM DUAL; -- 3.541692와 4출력.
SELECT 3.541592, ROUND(3.541592, 1) FROM DUAL; -- 3.541692와 3.5출력.
SELECT 3.541592, ROUND(3.541592, -1) FROM DUAL; -- 3.541692와 0출력.
-- 나머지.
SELECT '5%3', MOD(5,3) FROM DUAL;
-- 소수점 이하 자리수를 버림.
SELECT 3.1415, TRUNCATE(3.1415,1) FROM DUAL;
SELECT ename, sal, sal*1.1, ROUND(sal*1.1), TRUNCATE(sal*1.1,2) FROM emp;
문자 관련 함수
함수 | 기능 |
---|---|
ASCII(문자) | 문자의 아스키 코드값 리턴 |
CONCAT(‘문자열1’,’문자열2’,’문자열3’,…) | 문자열들을 이어준다. |
INSERT(‘문자열’,’시작위치’,’길이’,’새로운 문자열’) | 문자열의 시작위치부터 길이만큼 새로운 문자열로 대치 |
REPLACE(‘문자열’,’기존문자열’,’바뀔문자열’) | 문자열 중 기존 문자열을 바뀔 문자열로 바꾼다. |
INSTR(‘문자열’,’찾는문자열’) | 문자열 중 찾는 문자열의 위치값을 출력 |
MID(‘문자열’,시작위치, 개수) | 문자열 중 시작위치부터 개수만큼 출력 |
SUBSTRING(‘문자열’,시작위치,개수) | 문자열 중 시작위치부터 개수만큼 출력 |
LTRIM(‘문자열’) | 문자열 중 왼쪽의 공백을 없앤다. |
RTRIM(‘문자열’) | 문자열 중 오른쪽의 공백을 없앤다. |
TRIM(‘문자열’) | 양쪽 모두의 공백을 없앤다. |
LCASE(‘문자열’) or LOWER(‘문자열’) | 소문자로 바꾼다. |
UCASE(‘문자열’) or UPPER(‘문자열’) | 대문자로 바꾼다. |
REVERSE(‘문자열’) | 문자열을 반대로 나열한다. |
LEFT(‘문자열’, 개수) | 문자열 중 왼쪽에서 개수만큼 추출 |
RIGHT(‘문자열’, 개수) | 문자열 중 오른쪽에서 개수만큼 추출 |
-- 문자 관련 함수.
SELECT 'A', ASCII('A'), ASCII(' ') FROM DUAL; -- 공백도 문자이다.
SELECT CONCAT('ssafy',' 화이팅') AS 화이팅 FROM DUAL; -- as 별칭
SELECT CONCAT('ssafy',' 화이팅') AS '화이팅 !!' FROM DUAL; -- as 별칭
SELECT CONCAT(ename,'의 급여는 ', sal, '입니다.') AS 명세 FROM emp;
SELECT '20200331', SUBSTRING('20200331',1,4) AS year
, SUBSTRING('20200331',5,2) AS month
, SUBSTRING('20200331',7,2) AS day
FROM DUAL;
-- trim : 문자 양 끝에 있는 공백은 없애지만 가운데 있는 공백은 없애지 못한다.
SELECT ' 오늘 점심은 무엇일까요? ', LENGTH(' 오늘 점심은 무엇일까요? ')
, LENGTH('오늘 점심은 무엇일까요?')
, TRIM(' 오늘 점심은 무엇일까요? ')
, LENGTH(TRIM(' 오늘 점심은 무엇일까요? '))
FROM DUAL;
날짜 관련 함수
함수 | 기능 |
---|---|
NOW(), SYSDATE(), CURRENT_TIMESTAMP() | 현재 날짜와 시간 출력 |
CURDATE(), CURRENT_DATE() | 현재 날짜 출력 |
CURTIME(), CURRENT_TIME() | 현재 시간 출력 |
DATE_ADD(날짜, 기준값) | 날짜에서 기준값만큼 더한다. |
DATE_SUB(날짜, 기준값) | 날짜에서 기준값만큼 뺀다. |
YEAR(날짜) | 날짜의 연도 출력 |
MONTH(날짜) | 날짜의 월 출력 |
MONTHNAME(날짜) | 날짜의 월을 영어로 출력 |
DAYNAME(날짜) | 날짜의 요일을 영어로 출력 |
DAYOFMONTH(날짜) | 날짜의 월별 일자 출력 |
DAYOFWEEK(날짜) | 날짜의 주별 일자 출력 |
WEEKDAY(날짜) | 날짜의 주별 일자 출력 |
DAYOFYEAR(날짜) | 일년을 기준으로한 날짜까지의 날 수 |
WEEK(날짜) | 일년 중 몇 번째 주 |
FROM_DAYS(날짜) | 00년 00월 00일부터 날 수 만큼 경과한 날의 날짜 출력 |
TO_DAYS(날짜) | 00년 00월 00일부터 날짜까지의 일자 수 출력 |
DATE_FORMAT(날짜,’형식’) | 날짜를 형식에 맞게 출력 |
-- 날짜 관련 함수
SELECT NOW(), SYSDATE() FROM DUAL;
SELECT ename, hiredate, NOW(), NOW()-hiredate, DATEDIFF(NOW(), hiredate)
, YEAR(hiredate), MONTH(hiredate), DAY(hiredate)
FROM emp;
논리 관련 함수
함수 | 기능 |
---|---|
IF(논리식, 참일때 값, 거짓일 때 값) | 논리식이 참이면 참일 때 값을 출력하고 거짓이면 거짓일 때 값을 출력한다. |
IFNULL(값1, 값2) | 값1이 NULL이면 값2로 대치하고 그렇지 않으면 값1을 출력 |
-- 논리 관련 함수
SELECT IF(3>5, 'true','false') FROM DUAL;
SELECT IF(3<5, 'true','false') FROM DUAL;
SELECT ename, IFNULL(comm, 0) + 100 -- comm + 100으로하면 null값은 바뀌지 않는다.
FROM emp;
집계 함수
함수 | 기능 |
---|---|
COUNT(필드명) | NULL 값이 아닌 레코드 수를 구한다. |
SUM(필드명) | 필드명의 합계를 구한다. |
AVG(필드명) | 각각의 그룹 안에서 필드의 평균값을 구한다. |
MAX(필드명) | 최대값을 구한다. |
MIN(필드명) | 최소값을 구한다. |
다중행 함수(그룹 함수)
- 특징 : row의 숫자를 바꾼다.
그룹핑
DML (Data Manipulation Language)
- SELECT
- INSERT
- DELETE
- UPDATE
DDL (Data Definition Language)
- CREATE
- DROP
- ALTER
- TRUNCATE
Leave a comment