안녕하세요. Mysql 함수 입니다.
PHP School 에서 검색을 하다가 Mysql 함수 에 관하여 혼자 보기에 아까워.. 블로그에 게시하게 되었습니다.
(혹.. 제가 기재한 mysql 함수 에 관한 내용의 작성자 분께서 게시를 원치 않으시면 바로 내리도록 하겠습니다.ㅠ)
출처는 http://www.phpschool.com/link/qna_db/142702 이구요. mysql 공부할때에 도움이 많이 될듯 합니다.
Mysql 함수 는 참 여러가지가 많네요..ㅎㅎ 어렵기도 하고 재미있기도 하네요
mysql 함수 는 아래의 더보기 를 클릭해주세요.!
숫자 관련 함수
▶ ABS(숫자) : 절대값 출력.
select abs(123);
▶ CEILING(숫자) : 값보다 큰 정수 중 가장 작은 수.
--양수일 경우는 소숫점 자리에서 무조건 반올림(4.0과 같은 소숫점 자리 0 값은 제외)
--음수일 경우는 소숫점 자리를 무조건 버림
select ceiling(4.0);
select ceiling(4.1);
select ceiling(4.9);
▶ FLOOR(숫자) : 값보다 작은 정수 중 가장 큰 수[실수를 무조건 버림(음수일 경우는 제외)].
--음수일 경우는 [.0/.00/.000/...] 을 제외하고 무조건 소숫점을 버리고 반내림(?)
select floor(4.0);
select floor(4.1);
select floor(4.9);
select floor(-4.6789);
▶ ROUND(숫자,자릿수) : 숫자를 소수점 이하 자릿수에서 반올림.(자릿수는 양수,0,음수를 갖을 수 있다.)
--자릿수를 생략하면 소숫점이 5 이상일 때 반올림/자릿수를 지정하면 지정한 자리수에서 반올림
select round(4.5);
select round(4.55);
select round(-4.5);
select round(4.556);
select round(4.556,0);
select round(4.556,1);
select round(4.556,2);
select round(45.556,-1);
select round(455.556,-2);
▶ TRUNCATE(숫자,자릿수) : 숫자를 소수점 이하 자릿수에서 버림.
==>만일 자릿수를 소숫점 이전으로 정하면 소숫점이하는 버리고 나머지 값은 0 값으로 처리
/ 예) truncate(9999,-3) --> 9000
==>또는 자릿수를 소숫점이하로 정하며, 해당숫자가 자릿수보다 소숫점이 모자랄경우
0 값으로 대치
/ 예) truncate(999,3) --> 999.000
--반드시 자릿수를 명시해주어야 한다
--음수일 경우는 해당자릿수에서 소숫점을 버리면서 무조건 반올림
==>(자릿수 숫자에서 이후 숫자가 0 일 경우는 제외 / 예)-4.0,0/-400,-2/-4.1230,4)
==>음수 역시 자릿수를 소숫점이하로 정하며, 해당숫자가 자릿수보다 소숫점이 모자랄경우 0 값으로 대치
==>또한 자릿수를 소숫점 이전으로 정하면 소숫점이하는 버리고 나머지 값은 역시 0 값으로 처리
▶ POW(X,Y) 또는 POWER(X,Y) : X의 Y승
--소숫점이 있는 경우도 실행, 단 음수는 양수로 승처리
select pow(-2.5,2);
select pow(1.5,2);
▶ MOD (분자, 분모) : 분자를 분모로 나눈 나머지를 구한다.(연산자 %와 같음)
select mod(12,5); ==> 2
select 12%5; ==> 2
▶ GREATEST(숫자1,숫자2,숫자3...) : 주어진 수 중 제일 큰 수 리턴.
select greatest(100,101,90);
▶ LEAST(숫자1,숫자2,숫자3...) : 주어진 수 중 제일 작은 수 리턴.
select least(100,101,90);
▶ INTERVAL(a,b,c,d.....) : a(숫자)의 위치 반환
--두 번째 이후는 오름차순 정렬이 되어야 함
예) INTERVAL(5,2,4,6,8) ==> 2
5는 4와 6사이에 존재, 4~6사이의 위치가 앞에서 2번째
select interval(4,1,2,3,5,6);
문자 관련 함수
▶ ASCII(문자) : 문자의 아스키 코드값 리턴.
SELECT ASCII('문자');
select ascii('A');
▶ CONCAT('문자열1','문자열2','문자열3'...) : 문자열들을 이어준다.
select concat('ASP,','PHP,','SQL',' WEB STUDY');
▶ INSERT('문자열','시작위치','길이','새로운문자열') : 문자열의 시작위치부터 길이만큼
새로운 문자열로 대치
'시작위치' 와 '길이'는 문자열이 아니므로 작은따옴표로 굳이 묶어주지 않아도 된다.
select insert('MySql web study','7','3','offline');
select insert('MySql web study',7,3,'offline');
▶ REPLACE('문자열','기존문자열','바뀔문자열') : 문자열 중 기존문자열을 바뀔 문자열로
바꾼다.
select replace('MySql web study','web','offline');
▶ INSTR('문자열','찾는문자열') : 문자열 중 찾는 문자열의 위치값을 출력
--값이 존재하지 않으면 0값 리턴
select instr('MySql web study','s');
select instr('MySql web study','S');
▶ LEFT('문자열',개수) : 문자열 중 왼쪽에서 개수만큼을 추출.
select left('MySql web study',5);
select left('MySql web study','5');
▶ RIGHT('문자열',개수) : 문자열 중 오른쪽에서 개수만큼을 추출.
select right('MySql web study',5);
select right('MySql web study','5');
▶ MID('문자열',시작위치,개수) : 문자열 중 시작위치부터 개수만큼 출력
select mid('MySql web study',7,3);
select mid('MySql web study','7','3');
▶ SUBSTRING('문자열',시작위치,개수) : 문자열 중 시작위치부터 개수만큼 출력
select substring('Mysql web study',11,5);
select substring('Mysql web study','11','5');
▶ LTRIM('문자열') : 문자열 중 왼쪽의 공백을 없앤다.
select ltrim(' web study');
▶ RTRIM('문자열') : 문자열 중 오른쪽의 공백을 없앤다.
select rtrim('web study ');
▶ TRIM('문자열') : 양쪽 모두의 공백을 없앤다.
select trim(' web study ');
▶ LCASE('문자열') 또는 LOWER('문자열') : 소문자로 바꾼다.
select lcase('MYSQL');
select lower('MySQL');
▶ UCASE('문자열') 또는 UPPER('문자열') : 대문자로 바꾼다.
select ucase('mySql');
select upper('mysql');
▶ REVERSE('문자열') : 문자열을 반대로 나열한다.
예) REVERSE('abcde') ==> edcba
select reverse('lqSyM');
논리 관련 함수, 집계함수
--논리 관련 함수
☞ IF(논리식,참일 때 값,거짓일 때 값)
논리식이 참이면 참일 때 값을 출력하고 논리식이 거짓이면 거짓일 때 출력한다.
☞ IFNULL(값1,값2)
값1이 NULL 이면 값2로 대치하고 그렇지 않으면 값1을 출력
--집계 함수
☞ COUNT(필드명)
NULL 값이 아닌 레코드 수를 구한다.
☞ SUM(필드명)
필드명의 합계를 구한다.
☞ AVG(필드명)
각각의 그룹 안에서 필드명의 평균값을 구한다.
☞ MAX(필드명)
최대값을 구한다.
☞ MIN(필드명)
최소값을 구한다.
날짜 관련 함수
▶ NOW() 또는 SYSDATE() 또는 CURRENT_TIMESTAMP()
현재 날짜와 시간 출력
※ 함수의 상황이 숫자인지 문자열인지에 따라
YYYYMMDDHHMMSS 또는
'YYYY-MM-DD HH:MM:SS' 형식으로 반환한다.
예)
select now();
==> '2001-05-07 09:10:10'
select now() + 0;
==> 20010507091010
▶ CURDATE() 또는 CURRENT_DATE()
현재 날짜 출력
※ 함수의 상황이 숫자인지 문자열인지에 따라
YYYYMMDD 또는
'YYYY-MM-DD 형식으로 반환한다.
예)
select curdate();
==> '2001-05-07'
select curdate() + 0;
==> 20010507
▶ CURTIME() 또는 CURRENT_TIME()
현재 시간 출력
※ 함수의 상황이 숫자인지 문자열인지에 따라
HHMMSS 또는 'HH:MM:SS' 형식으로 반환한다.
예)
select curtime();
==> '09:10:10'
select curtime() + 0;
==> 091010
▶ DATE_ADD(날짜,INTERVAL 기준값)
날짜에서 기준값 만큼 더한다.
※ 기준값 : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
예)
select date_add(now(), interval 2 day);
==> 오늘보다 2일 후의 날짜와 시간 출력.
select date_add(curdate(), interval 2 day);
==> 오늘보다 2일 후의 날짜 출력.
▶ DATE_SUB(날짜,INTERVAL 기준값)
날짜에서 기준값 만큼 뺸다.
※ 기준값 : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
select date_sub(now(),interval 2 day);
==> 오늘보다 2일 전의 날짜와 시간 출력.
select date_sub(curdate(), interval 2 day);
==> 오늘보다 2일 전의 날짜 출력.
▶ YEAR(날짜) : 날짜의 연도 출력.
select year('20000101');
select year(20000101);
select year('2000-01-01');
select year(now());
select year(curdate());
select year(date_add(now(),interval 2 year));
select year(date_sub(curdate(),interval 2 year));
▶ MONTH(날짜) : 날짜의 월 출력.
select month('20001231');
select month(20001231);
select month('2000-12-31');
select month(now());
select month(curdate());
select month(date_add(now(),interval 2 month));
select month(date_sub(curdate(),interval 2 month));
▶ MONTHNAME(날짜) : 날짜의 월을 영어로 출력.
select monthname(20021221);
select monthname('20000721');
select monthname('2000-08-10');
select monthname(now());
select monthname(curdate());
select monthname(date_add(now(),interval 17 month));
select monthname(date_sub(curdate(),interval 11 month));
▶ DAYNAME(날짜) : 날짜의 요일일 영어로 출력.
select dayname(20000121);
select dayname('20010123');
select dayname('2001-06-22');
select dayname(now());
select dayname(curdate());
select dayname(date_add(now(),interval 21 day));
select dayname(date_sub(curdate(),interval 333 day));
▶ DAYOFMONTH(날짜) : 날짜의 월별 일자 출력.
select dayofmonth(20030112);
select dayofmonth('20011231');
select dayofmonth('2001-12-23');
select dayofmonth(now());
select dayofmonth(curdate());
select dayofmonth(date_add(now(),interval 56 day));
select dayofmonth(date_sub(curdate(),interval 33 day));
▶ DAYOFWEEK(날짜) : 날짜의 주별 일자 출력(월요일(0),화요일(1)...일요일(6))
select dayofweek(20011209);
select dayofweek('20001212');
select dayofweek('2003-03-21');
select dayofweek(now());
select dayofweek(curdate());
select dayofweek(date_add(now(),interval 23 day));
select dayofweek(date_sub(curdate(),interval 31 day));
▶ WEEKDAY(날짜) : 날짜의 주별 일자 출력(월요일(0),화요일(1)...일요일(6))
select weekday(20000101);
select weekday('20030223');
select weekday('2002-10-26');
select weekday(now());
select weekday(curdate());
select weekday(date_add(now(),interval 23 day));
select weekday(date_sub(curdate(),interval 33 day));
▶ DAYOFYEAR(날짜) : 일년을 기준으로 한 날짜까지의 날 수.
select dayofyear(20020724);
select dayofyear('20001231');
select dayofyear('2002-01-01');
select dayofyear(now());
select dayofyear(curdate());
select dayofyear(date_add(curdate(),interval 44 year));
select dayofyear(date_sub(now(),interval 25 month));
select dayofyear(date_add(now(),interval 55 day));
select dayofyear(date_sub(curdate(),interval 777 hour));
select dayofyear(date_add(now(),interval 999999 minute));
▶ WEEK(날짜) : 일년 중 몇 번쨰 주.
select week(now());
select week(date_sub(curdate(),interval 12 month));
▶ FROM_DAYS(날 수)
--00년 00월 00일부터 날 수 만큼 경과한 날의 날짜 출력.
※ 날 수는 366 이상을 입력 그 이하는 무조건 '0000-00-00' 으로 출력.
--또한 9999-12-31 [from_days(3652424)] 까지의 날짜가 출력가능 하다고는 하나
정확히 말하면 0000-03-15 [from_days(3652499)] 까지의 날짜가 출력가능함.
--따라서 날 수는 366 이상 3652424[3652499] 이하가 되어야 한다.
select from_days(3652424);
select from_days('3652499');
▶ TO_DAYS(날짜)
--00 년 00 월 00일 부터 날짜까지의 일자 수 출력.
--from_days와 비교해 볼 때 정확한 날짜범위는 3652424 일 수 까지임을 알 수 있다.
select to_days('99991231');
select to_days('0000-03-15');
응용 예제1) 자신이 살아 온 날수
select to_days(now()) - to_days('본인생일자');
select to_days(now()) - to_days('1970-10-10');
응용 예제2) 살아 온 날수를 이용하여 자신의 나이를 만으로 구하기
select (to_days(now())-to_days('1970-10-10'))/365;
select floor((to_days(now())-to_days('19701010'))/365);
▶ DATE_FORMAT(날짜,'형식') : 날짜를 형식에 맞게
DATE타입 | 구분기호 | 설명 | 구분기호 | 설명 |
년도 | %Y | 4자리 연도 | %y | 2자리 년도 |
월 | %M | 긴 월 이름 (January, ...) | %m | 숫자의 월 (01...12) |
%b | 짧은 월 이름(Jan, ...) | %c | 숫자의 월 (1...12) | |
요일 | %W | 긴 요일 이름 (Sunday, ...) | %a | 짧은 요일 이름 (Sun, ...) |
일 | %D | 월 내에서 서수 형식의 일(1th, ...) | %d | 월 내의 일자 (01...31) |
%w | 숫자의 요일 (0=Sunday, ...) | %e | 월 내의 일자 (1...31) | |
%j | 일년 중의 날수 (001...366) | |||
시 | %l | 12시간제의 시 (1...12) | %k | 12시간제의 시 (0...23) |
%h | 12시간제의 시 (01...12) | %H | 12시간제의 시 (00...23) | |
%I | 12시간제의 시 (01...12) | |||
분 | %i | 숫자의 분 (00...59) | ||
초 | %S | 숫자의 초 (00...59) | %s | 숫자의 초 (00...59) |
시간 | %r | 12시간제의 시간 (hh:mm:ss AM 또는 PM) | %T | 24시간제의 시간 (hh:mm:ss) |
주 | %U | 일요일을 기준으로 한 주 (0...52) | %u | 월요일을 기준으로 한 주 (0...52) |
기타 | %% | 문자 '%' | %p | AM 또는 PM |
☞ 예)
select date_format(now(),'%Y:%M:%p');
==> 2001:May:PM
▶ DATABASE() : 현재의 데이터베이스 이름을 출력한다.
▶ PASSWORD('문자열')
: 문자열을 암호화한다.
▶ FORMAT(숫자,소수이하자리수) : 숫자를 #,###,###.## 형식으로 출력
--임의의 소수점자릿수를 생성한다./소숫점을 필요한 만큼 취한다.
--소숫점을 만들어 같은 길이로 한다음 동일하게 프로그램에서 불러와서 소숫점을 버리고
필요한 곳에 출력하는 등에 응용할 수 있다.
select format(123,5);
select format(123.12345600123,9);
select format(123.123,-3);
※ 소숫점이하자리수가 0 이나 음수값은 해당이 안됨
'Database > Mysql' 카테고리의 다른 글
Table 대소문자 구분하지 않도록 설정 (0) | 2016.06.13 |
---|---|
Mysql 튜닝 참고자료 (0) | 2015.12.16 |
mysql binlog 옵션 (0) | 2014.12.08 |
MYSQL 명령어 (0) | 2012.01.17 |