Database 개념2

MySQL DataType

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