-- 유저 확인
select user();
-- 데이터베이스 확인
select database();
-- 데이터베이스 변경 : use 데이터베이스 이름;
use autoever;
Function이란 입력 데이터를 이용해서 연산을 수행한 후 출력 값을 만들어내는 개체이다. 입력데이터를 Argument(Parameter, 매개변수, 인수, 인자 등)라 하고, 출력 데이터를 Return Value 라고 한다.
프로그래밍언어의 함수는 리턴 값이 없는 경우도 있지만 데이터베이스 함수는 반드시 리턴을 하고 원본을 변경하지 않는다.
함수는 데이터를 수정하거나 연산을 수행해서 지원하는 일을 한다. 데이터베이스 함수는 데이터베이스 자체를 수정할 수 없다.
scala Function : 데이터 단위로 연산을 수행하는 함수
grouping Function : 여러개의 데이터를 묶어서 연산을 수행하는 함수
system Function : NULL 관련 처리나 타입 변환 등을 수행하는 함수
ROUND(컬럼이름이나 표현식, 반올림할 자릿수)
양수를 기재하면 그 소수점 자리에서 반올림을 하고, 음수를 기재하면 1의 자리부터 위로 올라간다.
select sal, round(sal, -2)
from emp;

int(data + 0.5) : int가 소수점을 버림
select sal, round(sal, -2), FLOOR(sal/100 + 0.5) * 100
from emp;

MOD(컬럼이름이나 표현식, 나눌수)
뒤의 수로 나누어서 나머지를 리턴해준다
select *
from emp
where mod(empno,2) = 1;

숫자를 문자로 변환
비트크기, 글자길이, 메모리크기(Byte)
select ename, BIT_LENGTH(ENAME), CHAR_LENGTH(ENAME), LENGTH(ENAME)
from EMP;

한글을 사용할 때는 한글 1글자가 몇 바이트를 차지하는지 알아볼 필요가 있다.
한글 1개 = 3byte
select name, BIT_LENGTH(NAME), CHAR_LENGTH(NAME), LENGTH(NAME)
from tstaff;

길이만큼 왼쪽이나 오른쪽에서 추출
대문자, 소문자
select *
from EMP
where lower(ENAME) = 'scott';
오라클은 기본적으로 대소문자를 구분하지만 MySQL이나 MariaDB는 기본적으로 대소문자 구분을 하지 않는다.(설정 파일에 lower_case_table의 값을 1로 설정하면 테이블 이름을 모두 소문자로 변경해서 사용한다)

공백제거
substring(컬럼이름이나 연산식, 시작위치, 가져올 개수)
부분문자열 리턴

-- substirng 이용
select ename, hiredate
from emp
where substring(hiredate,6,2)='02';
-- like 이용
select ename, hiredate
from emp
where hiredate like '_____02%';

데이터베이스는 날짜를 숫자와 문자 모두로 표현이 가능한데 산술 연산도 가능
CURRENT_DATE(), CURDATE() -> 현재 날짜
CURRENT_TIME(), CURTIME() -> 현재 시간
NOW(), LOCALTIME(), LOCALTIMESTAMP()
CURRENT_TIMESTAMP() -> 현재 날짜 및 시간
YEAR(날짜), MONTH(날짜), DAY(날짜), HOUR(시간), MINUTE(시간), SECOND(시 간), MICROSECOND(시간)
select ename, hiredate
from emp
where month(hiredate) = 2 ;
MariaDB, MySQL 은 일반적인 날짜 형식의 문자열도 날짜로 인식한다.
직접 변환하고자 하는 경우 : STR_TO_DATE(날짜 문자열, 서식문자열)
날짜 + INTERVAL 숫자 기간(DAY 등)
select CURRENT_DATE() + INTERVAL 2 DAY;

DATEDIFF(날짜 데이터, 날짜 데이터)
TIMEDIFF(날짜 또는 시간 데이터, 날짜 또는 시간 데이터)
select datediff(CURRENT_DATE(), STR_TO_DATE('1987-05-05','%Y-%m-%d'));

USER(), DATABASE()FOUND_ROWS()ROW_COUNT()VERSION()SLEEP(초)DATETIME: 'YYYY-MM-DD HH:MM:SS'DATE: 'YYYY-MM-DD'TIME: 'HH:MM:SS'CHAR: StringSIGNED: Integer(64bit), 부호 사용 가능UNSIGNED: Integer(64bit), 부호 사용 불가BINARY: binary StringSELECT CAST(숫자 AS CHAR(길이))
SELECT CAST(1 AS CHAR(10)) AS testChar
SELECT CAST('1' AS SINGNED) AS testInt
IFNULL(데이터1,데이터2) : 데이터 1이 NULL이면 데이터2 반환
NULL + 100은 연산불가하기 때문에 NULL을 0으로 간주하고 싶을 때
IFNULL(NULL, 0) + 100 사용한다
SELECT COMM, IFNULL(COMM,0)+100
FROM emp;

NULLIF(데이터1,데이터2) : 데이터1과 데이터2가 같으면 NULL을 리턴, 아니면 데이터1을 리턴
COALESCE(데이터 나열) : 데이터 중 NULL이 아닌 첫번째 데이터 리턴
IF(연산식, 참일 때 내용, 거짓일 때 내용)
CASE 데이터
WHEN 값 THEN 데이터가 값일 때 내용
..
ELSE 일치하는 값이 없을 때 내용
END