5 ๋ถ„ ์†Œ์š”

๐Ÿ“š DB ( DataBase )


๐Ÿ“š MYSQL-FUNCTION

MYSQL-Function ๋‚ด์žฅ ํ•จ์ˆ˜

MYSQL์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์—ฌ๋Ÿฌ ๋‚ด์žฅ ํ•จ์ˆ˜๋“ค์ด ์žˆ๋‹ค.
๊ฐ€์ ธ์˜ค๋ ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ JAVA์—์„œ ์กฐ๊ฑด์„ ์ฃผ๋Š” ๊ฒƒ๋ณด๋‹ค MYSQL FUNCTION์„ ์‚ฌ์šฉํ•ด์„œ ์ฃผ๋Š”๊ฒŒ ๋” ์œ ์šฉํ•˜๋‹ค.

์ˆซ์ž ๊ด€๋ จ ํ•จ์ˆ˜

-> 5 0 5

select abs(-5), abs(0), abs(5)
from dual;
-> 13 -12

select ceil(12.2), ceiling(-12.2)
from dual;
- 12 -13

select floor(12.6), floor(-12.6)
from dual;
- 1526 1526 1526.4 1530

select round(1526.366), round(1526.366, 0), round(1526.366, 1), round(1526.366, -1)
from dual;
- 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;
- 8 8

select pow(2, 3), power(2, 3)
from dual;
- 2 2

select mod(8, 3), 8 % 3
from dual;
- 9

select greatest(4, 3, 7, 5, 9)
from dual;
- 3

select least(4, 3, 7, 5, 9)
from dual;

๋ฌธ์ž ๊ด€๋ จ ํ•จ์ˆ˜

- 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;
- hello js !!

select insert('helloabc!!, 6, 3, 'js ')
from dual;
- hello js !!

select replace('helloabc!!', 'abc', ' js ')
from dual;
- 7

select insert('hello js !!, 'js')
from dual;
- js !!

select mid('hello js !!, 7, 5)
from dual;
- js !!

select substring('hello js !!, 7, 5)
from dual;
- (hello js !! ) 

select ltrim(' hello js !! ')
from dual;
- ( hello js !!) 

select rtrim(' hello js !! ')
from dual;
- (hello js !!) 

select trim(' hello js !! ')
from dual;
- hello js !!

select lower('HeLLo Js !!'), lcase('HeLLo Js !!')
from dual;
- 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;
- !! 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;
- 4

select DAYOFWEEK(now())
from dual;
- 2

select WEEKDAY(now())
from dual;
- 75

select DAYOFYEAR(now())
from dual;
- 11

select WEEK(now())
from dual;
- 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 ย  ย  ย  ย 

๋…ผ๋ฆฌ ๊ด€๋ จ ํ•จ์ˆ˜

- ํฌ๋‹ค 3 b a

select if(3 > 2, 'ํฌ๋‹ค', '์ž‘๋‹ค'), nullif(3, 3), nullif(3, 5), ifnull(null, 'b'), ifnull('a', 'b')
from dual;

๊ทธ๋ฃน ํ•จ์ˆ˜ ( Aggregation Function )

์ง‘๊ณ„ ( ๊ทธ๋ฃน, ์ง‘ํ•ฉ ) ํ•จ์ˆ˜๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํ–‰์„ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ์—ฐ์‚ฐํ•˜์—ฌ ์ดํ•ฉ, ํ‰๊ท  ๋“ฑ์„ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

-> ๊ธ‰์—ฌ์˜ ์ดํ•ฉ์„ ๊ฒ€์ƒ‰

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;
-> ์‚ฌ์›์ˆ˜๋ฅผ ๊ฒ€์ƒ‰

select count(employee_id) ์‚ฌ์›์ˆ˜
from employees;

-> ๋ถ€์„œ์ˆ˜๋ฅผ ๊ฒ€์ƒ‰

select count(department_id) ๋ถ€์„œ์ˆ˜
from employees;

-> ์ค‘๋ณต์—†์ด ๋ถ€์„œ์ˆ˜ ๊ฒ€์ƒ‰

select count(distinct department_id) ๋ถ€์„œ์ˆ˜
from employees;
-> 80๋ฒˆ ๋ถ€์„œ์—์„œ ๊ทผ๋ฌดํ•˜๋Š” ์ตœ๋Œ€ ๊ธ‰์—ฌ, ์ตœ์†Œ ๊ธ‰์—ฌ ๊ฒ€์ƒ‰

select max(salary) ์ตœ๋Œ€๊ธ‰์—ฌ, min(salary) ์ตœ์†Œ๊ธ‰์—ฌ
from employees
where department_id = 80;

DATABASE FUNCTION ๋งˆ๋ฌด๋ฆฌ

DB์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.
๊ฑฐ์˜ JAVA์—์„œ ์‚ฌ์šฉํ•˜๋˜ ๊ฒƒ๊ณผ ๋น„์Šทํ•ด์„œ ์–ด๋ ค์›€์€ ์—†์—ˆ๋‹ค.
๋‚ ์งœ ๊ด€๋ จ ํ•จ์ˆ˜๋‚˜ NULLIF, IFNULL ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์ข€ ํ—ท๊ฐˆ๋ฆฌ๊ธด ํ–ˆ๋‹ค.
ํ•จ์ˆ˜๋“ค ์ค‘์—์„œ๋„ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ๋“ค์ด ์žˆ์œผ๋‹ˆ ์ž˜ ๊ธฐ์–ตํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.
๊ทธ๋ฆฌ๊ณ  ํ•จ์ˆ˜๋ฅผ JAVA์—์„œ ์กฐ๊ฑด์„ ์ฃผ๋Š” ๊ฒƒ๋ณด๋‹ค MYSQL FUNCTION์„ ์‚ฌ์šฉํ•ด์„œ ์ฃผ๋Š”๊ฒŒ ๋” ์œ ์šฉํ•˜๋‹ค๊ณ  ํ•˜๋‹ˆ ์ž˜ ์•Œ์•„๋‘๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.