DATABASE_MYSQL-FUNCTION
๐ DB ( DataBase )
๐ MYSQL-FUNCTION
MYSQL-Function ๋ด์ฅ ํจ์
MYSQL์์ ์ฌ์ฉํ๋ ์ฌ๋ฌ ๋ด์ฅ ํจ์๋ค์ด ์๋ค.
๊ฐ์ ธ์ค๋ ค๋ ๋ฐ์ดํฐ๋ฅผ JAVA์์ ์กฐ๊ฑด์ ์ฃผ๋ ๊ฒ๋ณด๋ค MYSQL FUNCTION์ ์ฌ์ฉํด์ ์ฃผ๋๊ฒ ๋ ์ ์ฉํ๋ค.
์ซ์ ๊ด๋ จ ํจ์
-
ABS(์ซ์)
์ ๋๊ฐ์ ๋ฐํ
-> 5 0 5
select abs(-5), abs(0), abs(5)
from dual;
-
CEILING(์ซ์)
๊ฐ๋ณด๋ค ํฐ ์ ์ ์ค ๊ฐ์ฅ ์์ ์
ceil, ceiling ๋ ๋ค ์ฌ์ฉ ๊ฐ๋ฅ
-> 13 -12
select ceil(12.2), ceiling(-12.2)
from dual;
-
FLOOR(์ซ์)
๊ฐ๋ณด๋ค ํฐ ์์ ์ค ๊ฐ์ฅ ํฐ ์
- 12 -13
select floor(12.6), floor(-12.6)
from dual;
-
ROUND(์ซ์,์๋ฆฟ์)
์ซ์์ ์๋ฆฟ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ฌ๋ฆผ
- 1526 1526 1526.4 1530
select round(1526.366), round(1526.366, 0), round(1526.366, 1), round(1526.366, -1)
from dual;
-
TRUNCATE(์ซ์,์๋ฆฟ์)
์ซ์์ ์๋ฆฟ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฒ๋ฆผ
- 1526 1526.3 1526.36 1520
select truncate(1526.366, 0), truncate(1526.366, 1), truncate(1526.366, 2), truncate(1526.366, -1)
from dual;
-
POW(X,Y) or POWER(X,Y)
X์ Y์น
pow, power ๋ ๋ค ์ฌ์ฉ ๊ฐ๋ฅ
- 8 8
select pow(2, 3), power(2, 3)
from dual;
-
MOD(๋ถ์, ๋ถ๋ชจ)
๋ถ์๋ฅผ ๋ถ๋ชจ๋ก ๋๋ ๋๋จธ์ง
- 2 2
select mod(8, 3), 8 % 3
from dual;
-
GREATEST(์ซ์1, ์ซ์2, ์ซ์3 ..)
์ฃผ์ด์ง ์์์ ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ฐํ
- 9
select greatest(4, 3, 7, 5, 9)
from dual;
-
LEAST(์ซ์1, ์ซ์2, ์ซ์3 ..)
์ฃผ์ด์ง ์์์ ๊ฐ์ฅ ์์ ์๋ฅผ ๋ฐํ
- 3
select least(4, 3, 7, 5, 9)
from dual;
๋ฌธ์ ๊ด๋ จ ํจ์
-
ASCII(๋ฌธ์)
๋ฌธ์์ ์์คํค ์ฝ๋ ๊ฐ ๋ฆฌํด
- 48 65 97
select ascii('0'), ascii('A'), ascii('a')
from dual;
- 100๋ฒ ์ฌ์์ ์ด๋ฆ Steven King
select concat(employee_id, '๋ฒ ์ฌ์์ ์ด๋ฆ ', first_name, ' ', last_name)
from employees
where employee_id = 100;
-
INSERT(โ๋ฌธ์์ดโ, ์์์์น, ๊ธธ์ด, โ์๋ก์ด ๋ฌธ์์ดโ)
๋ฌธ์์ด์ ์์์์น๋ถํฐ ๊ธธ์ด๋งํผ ์๋ก์ด ๋ฌธ์์ด๋ก ๋์น
- hello js !!
select insert('helloabc!!, 6, 3, 'js ')
from dual;
-
REPLACE(โ๋ฌธ์์ดโ, โ๊ธฐ์กด๋ฌธ์์ดโ, โ๋ฐ๋๋ฌธ์์ดโ)
๋ฌธ์์ด ์ค ๊ธฐ์กด ๋ฌธ์์ด์ ๋ฐ๋ ๋ฌธ์์ด๋ก ๋ณ๊ฒฝ
- hello js !!
select replace('helloabc!!', 'abc', ' js ')
from dual;
-
INSTR(โ๋ฌธ์์ดโ, โ์ฐพ๋ ๋ฌธ์์ดโ)
๋ฌธ์์ด ์ค ์ฐพ๋ ๋ฌธ์์ด์ ์์น ๊ฐ์ ๋ฆฌํด
- 7
select insert('hello js !!, 'js')
from dual;
-
MID(โ๋ฌธ์์ดโ, ์์์์น, ๊ฐ์)
๋ฌธ์์ด ์ค ์์์์น๋ถํฐ ๊ฐ์๋งํผ ๋ฆฌํด
- js !!
select mid('hello js !!, 7, 5)
from dual;
-
SUBSTRING(โ๋ฌธ์์ดโ, ์์์์น, ๊ฐ์)
๋ฌธ์์ด ์ค ์์์์น๋ถํฐ ๊ฐ์๋งํผ ๋ฆฌํด
- js !!
select substring('hello js !!, 7, 5)
from dual;
-
LTRIM(โ๋ฌธ์์ดโ)
๋ฌธ์์ด ์ค ์ผ์ชฝ์ ๊ณต๋ฐฑ์ ์ ๊ฑฐ
- (hello js !! )
select ltrim(' hello js !! ')
from dual;
-
RTRIM(โ๋ฌธ์์ดโ)
๋ฌธ์์ด ์ค ์ค๋ฅธ์ชฝ์ ๊ณต๋ฐฑ์ ์ ๊ฑฐ
- ( hello js !!)
select rtrim(' hello js !! ')
from dual;
- (hello js !!)
select trim(' hello js !! ')
from dual;
-
LCASE(โ๋ฌธ์์ดโ) or LOWER(โ๋ฌธ์์ดโ)
๋ชจ๋ ๋ฌธ์๋ฅผ ์๋ฌธ์๋ก ๋ณ๊ฒฝ
- hello js !!
select lower('HeLLo Js !!'), lcase('HeLLo Js !!')
from dual;
-
UCASE(โ๋ฌธ์์ดโ) or UPPER(โ๋ฌธ์์ดโ)
๋ชจ๋ ๋ฌธ์๋ฅผ ๋๋ฌธ์๋ก ๋ณ๊ฒฝ
- HELLO JS !!
select upper('HeLLo Js !!'), ucase('HeLLo Js !!')
from dual;
- hello
select left('hello js !!', 5)
from dual;
- js !!
select right('hello js !!', 5)
from dual;
-
REVERSE(โ๋ฌธ์์ดโ)
๋ฌธ์์ด์ ๋ฐ๋๋ก ๋์ด
- !! sj olleh
select reverse('hello js !!')
from dual;
๋ ์ง ๊ด๋ จ ํจ์
- 2022-03-16 21:09:17 2022-03-16 21:09:17 2022-03-16 21:09:17
select NOW(), SYSDATE(), CURRENT_TIMESTAMP()
from dual;
- 2022-03-16 2022-03-16
select CURDATE(), CURRENT_DATE()
from dual;
- 21:09:17 21:09:17
select CURTIME() or CURRENT_TIME()
from dual;
- 23:09:17
select DATE_ADD(now(), INTERVAL 2 hour)
from dual;
- 18:09:17
select DATE_SUB(now(), INTERVAL 2 hour)
from dual;
- 2022
select YEAR(now())
from dual;
- 3
select MONTH(now())
from dual;
- March
select MONTHNAME(now())
from dual;
- Wednesday
select DAYNAME(now())
from dual;
- 16
select DAYOFMONTH(now())
from dual;
-
DAYOFWEEK(๋ ์ง)
๋ ์ง์ ์ฃผ๋ณ ์ผ์ ๋ฆฌํด[์ผ์์ผ(1),์์์ผ(2)..ํ ์์ผ(7)]
- 4
select DAYOFWEEK(now())
from dual;
-
WEEKDAY(๋ ์ง)
๋ ์ง์ ์ฃผ๋ณ ์ผ์ ๋ฆฌํด[์์์ผ(0),ํ์์ผ(1)..์ผ์์ผ(6)]
- 2
select WEEKDAY(now())
from dual;
-
DAYOFYEAR(๋ ์ง)
์ผ๋ ์ ๊ธฐ์ค์ผ๋ก ํ ๋ ์ง๊น์ง์ ์ผ ์(365์ผ์ค x์ผ)
- 75
select DAYOFYEAR(now())
from dual;
- 11
select WEEK(now())
from dual;
-
FROM_DAYS(๋ ์)
00๋ 00์ 00์ผ๋ถํฐ ๋ ์ ๋งํผ ๊ฒฝ๊ณผํ ๋ ์ ๋ ์ง ๋ฆฌํด -
TO_DAYS(๋ ์ง)
00๋ 00์ 00์ผ๋ถํฐ ๋ ์ง๊น์ง์ ์ผ์ ์ ๋ฆฌํด -
DATE_FORMAT(๋ ์ง, โํ์โ)
๋ ์ง๋ฅผ ํ์์ ๋ง๊ฒ ๋ฆฌํด
- 2202 March 16 PM 09 09 17
select data_format(now(),'%Y %M %e %p %l %i %S')
from dual;
๋ ์ง ํ์
format | description | format | description | format | description |
---|---|---|---|---|---|
%Y | ๋ , 2020 | %y | ๋ , 20 | ย | ย |
%b | ์, Jan..Dec | %M | ์, January..December | %m | ์, 01,02..12 |
%d | ์ผ, 00, 01, 02 .. 31 | %e | ์ผ, 0, 1, 2 .. 31 | ย | ย |
%a | ์์ผ, Sun .. Sat | %W | ์์ผ, Sunday..Saturday | %w | ์์ผ, 0:์ผ์์ผ .. 6:ํ ์์ผ |
%p | AM or PM | %H | ย | ย | ย |
%H | ์๊ฐ, 01, 02 .. 23 | %h | ์๊ฐ, 01, 02 .. 12 | %l(์ํ๋ฒณ L ์๋ฌธ์) | ์๊ฐ, 01, 02 .. 12 |
%k | ์๊ฐ, 0, 1, 2 .. 23 | %I(์ํ๋ฒณ i ๋๋ฌธ์) | ์๊ฐ, 1,2 .. 12 | %T | ์๊ฐ, 24-hours(hh:mm:ss) |
%i | ๋ถ, 00..59 | %S | ์ด, 00..59 | %s | ์ด, 00..59 |
%j | 1๋ ์ค X์ผ, 001..365 | ย | ย | ย | ย |
๋ ผ๋ฆฌ ๊ด๋ จ ํจ์
-
IF(๋ ผ๋ฆฌ์, ๊ฐ1, ๊ฐ2)
๋ ผ๋ฆฌ์์ด ์ฐธ์ด๋ฉด ๊ฐ1 ๋ฆฌํด, ๊ฑฐ์ง์ด๋ฉด ๊ฐ2 ๋ฆฌํด -
IFNULL(๊ฐ1, ๊ฐ2)
๊ฐ1์ด NULL์ด๋ฉด ๊ฐ2๋ก ๋์น, NULL์ด ์๋๋ฉด ๊ฐ1๋ฆฌํด -
NULLIF(๊ฐ1, ๊ฐ2)
๊ฐ1 = ๊ฐ2๊ฐ true๋ฉด NULL, ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฐ1๋ฆฌํด
- ํฌ๋ค 3 b a
select if(3 > 2, 'ํฌ๋ค', '์๋ค'), nullif(3, 3), nullif(3, 5), ifnull(null, 'b'), ifnull('a', 'b')
from dual;
๊ทธ๋ฃน ํจ์ ( Aggregation Function )
์ง๊ณ ( ๊ทธ๋ฃน, ์งํฉ ) ํจ์๋ ํ๋ ์ด์์ ํ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ์ฐ์ฐํ์ฌ ์ดํฉ, ํ๊ท ๋ฑ์ ํ๋์ ๊ฒฐ๊ณผ๋ก ๋ฐํํ๋ค.
-
SUM(ํ๋๋ช
)
๊ทธ๋ฃน์ ๋์ ํฉ๊ณ๋ฅผ ๋ฐํํ๋ค.
-> ๊ธ์ฌ์ ์ดํฉ์ ๊ฒ์
select sum(salary) ๊ธ์ฌ์ดํฉ
from employees;
-
AVG(ํ๋๋ช
)
๊ทธ๋ฃน์ ํ๊ท ์ ๋ฐํํ๋ค.
NULL ๊ฐ์ ์ ์ธํ๊ณ ํ๊ท ์ ๊ตฌํ๋ค !!
-> ๊ธ์ฌ์ ํ๊ท ( ๋ด๊ธ * ์ปค๋ฏธ์
๋น ) ์ ๊ฒ์ ( ์์ 2์๋ฆฌ๊น์ง )
-> ์ปค๋ฏธ์
๋น๊ฐ NULL ์ธ ๊ฐ์ ๋นผ๊ณ ๊ณ์ฐํจ
select round(avg(salary * commission_pct), 2) ํ๊ท ๊ธ์ฌ
from employees;
-> ์ปค๋ฏธ์
๋น๊ฐ NULL ๊ฐ์ธ ๊ฒ์ 0 ์ผ๋ก ์นญํ๊ณ ํ๊ท ๊ตฌํ๊ธฐ
-> ์ปค๋ฏธ์
๋น๊ฐ NULL ์ธ ๊ฐ์ 0 ์ผ๋ก ํ๊ณ ๊ณ์ฐํจ
select round(avg(salary * (IFNULL(commission_pct), 0)), 2) ํ๊ท ๊ธ์ฌ
from employees;
-
COUNT(ํ๋๋ช
)
๊ทธ๋ฃน์ ์ด ๊ฐ์๋ฅผ ๋ฐํํ๋ค.
NULL ๊ฐ์ ์ ์ธํ๊ณ ์นด์ดํ ํ๋ค !!
-> ์ฌ์์๋ฅผ ๊ฒ์
select count(employee_id) ์ฌ์์
from employees;
-> ๋ถ์์๋ฅผ ๊ฒ์
select count(department_id) ๋ถ์์
from employees;
-> ์ค๋ณต์์ด ๋ถ์์ ๊ฒ์
select count(distinct department_id) ๋ถ์์
from employees;
-
MAX(ํ๋๋ช
) & MIN(ํ๋๋ช
)
๊ทธ๋ฃน์ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ๋ฐํํ๋ค.
-> 80๋ฒ ๋ถ์์์ ๊ทผ๋ฌดํ๋ ์ต๋ ๊ธ์ฌ, ์ต์ ๊ธ์ฌ ๊ฒ์
select max(salary) ์ต๋๊ธ์ฌ, min(salary) ์ต์๊ธ์ฌ
from employees
where department_id = 80;
DATABASE FUNCTION ๋ง๋ฌด๋ฆฌ
DB์์ ์ฌ์ฉํ๋ ํจ์์ ๋ํด ์์๋ณด์๋ค.
๊ฑฐ์ JAVA์์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋น์ทํด์ ์ด๋ ค์์ ์์๋ค.
๋ ์ง ๊ด๋ จ ํจ์๋ NULLIF, IFNULL ๊ฐ์ ๊ฒฝ์ฐ๋ ์ข ํท๊ฐ๋ฆฌ๊ธด ํ๋ค.
ํจ์๋ค ์ค์์๋ ์์ฃผ ์ฌ์ฉ๋๋ ๊ฒ๋ค์ด ์์ผ๋ ์ ๊ธฐ์ตํด์ ์ฌ์ฉํด์ผ ํ ๊ฒ ๊ฐ๋ค.
๊ทธ๋ฆฌ๊ณ ํจ์๋ฅผ JAVA์์ ์กฐ๊ฑด์ ์ฃผ๋ ๊ฒ๋ณด๋ค MYSQL FUNCTION์ ์ฌ์ฉํด์ ์ฃผ๋๊ฒ ๋ ์ ์ฉํ๋ค๊ณ ํ๋ ์ ์์๋๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.