Day26 Database

์›ฐ์น˜์Šคยท2022๋…„ 11์›” 28์ผ
0

22/11/28

๐Ÿ“Œ 5-2 ๋‹จ์ผํ–‰ํ•จ์ˆ˜ - ์ˆซ์žํ•จ์ˆ˜, ๋‚ ์งœํ•จ์ˆ˜

๐Ÿ“‚ ์ˆซ์žํ•จ์ˆ˜

ROUND(์ˆซ์ž, ๋ฐ˜์˜ฌ๋ฆผํ•  ์ž๋ฆฌ) : ์ˆซ์ž๋ฅผ ๋ฐ˜์˜ฌ๋ฆผํ•  ์ž๋ฆฌ๊นŒ์ง€ ๋ฐ˜์˜ฌ๋ฆผ์„ ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ๋ฐ˜์˜ฌ๋ฆผํ•  ์ž๋ฆฌ ์ƒ๋žต ์‹œ(=0์ผ ๊ฒฝ์šฐ, ์ƒ๋žต ๊ฐ€๋Šฅ), ์ผ์˜ ์ž๋ฆฌ๋กœ ๋ฐ˜์˜ฌ๋ฆผํ•จ
TRUNCATE(์ˆซ์ž, ๋ฒ„๋ฆผํ•  ์ž๋ฆฌ) : ์ˆซ์ž๋ฅผ ๋ฒ„๋ฆผํ•  ์ž๋ฆฌ๊นŒ์ง€ ๋‚จ๊ธฐ๊ณ  ๋ฒ„๋ฆผ์„ ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜
(๋ฐ˜์˜ฌ๋ฆผ, ๋ฒ„๋ฆผํ•  ์ˆซ์ž)ย ย 1 ย ย 2ย ย ย 3ย ย .ย ย 4ย ย 5ย ย 6
(๋ฐ˜์˜ฌ๋ฆผ, ๋ฒ„๋ฆผํ•  ์ˆซ์ž)ย -2ย ย -1ย ย ย 0ย ย .ย ย 1ย ย 2ย ย 3

select round(45.923,2), round(45.923,0), round(45.923), round(45.923,-1);
select truncate(45.923,2), truncate(45.923,0), truncate(45.923,-1);

CEIL(์ˆซ์ž) : ์ˆซ์ž๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์ตœ์†Œ์˜ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ์ผ์˜ ์ž๋ฆฌ๋กœ ์˜ฌ๋ฆผ์„ ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜
FLOOR(์ˆซ์ž) : ์ˆซ์ž๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ตœ์†Œ์˜ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ์ผ์˜ ์ž๋ฆฌ๊นŒ์ง€ ๋ฒ„๋ฆผ์„ ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜

select ceil(45.923), ceil(52.1);
select floor(45.923), floor(52.1);

MOD(์ˆซ์ž1, ์ˆซ์ž2) : ์ˆซ์ž1์„ ์ˆซ์ž2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜

select mod(157,10), 157 mod 10, 157%10, 157/10;
select last_name, salary, mod(salary, 5000)
from employees
where job_id = 'SA_REP'; 

  • ๊ฐ’์ด ์ง์ˆ˜์ธ์ง€ ํ™€์ˆ˜์ธ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ์šฉ๋„๋กœ๋„ ํ™œ์šฉ๋จ
select employee_id, mod(employee_id, 2)
from employees;

ABS(์ˆซ์ž) : ์ˆซ์ž์˜ ์ ˆ๋Œ€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜

select abs(-5), abs(5), abs(-4.5);

POWER(์ˆซ์ž, ์ œ๊ณฑ๊ฐ’)
POW(์ˆซ์ž, ์ œ๊ณฑ๊ฐ’)
: ์ˆซ์ž์˜ ์ œ๊ณฑ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜

select power(2,3), power(8,3);
select power(4,1), power(4,2), power(4,3), power(4,4), power(4,5);

SIGN(์ˆซ์ž) : ์ˆซ์ž๊ฐ€ ์–‘์ˆ˜์ด๋ฉด 1, ์Œ์ˆ˜์ด๋ฉด โ€“1, 0์ด๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜

select sign(3), sign(-3), sign(4.26), sign(-4.26), sign(0);


๐Ÿ“‚ ๋‚ ์งœํ•จ์ˆ˜

NOW( )
SYSDATE( ) ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย : ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜
CURRENT_TIMESTAMP()ย ย ย ย ย ย ย ย ย ย ย (๋…„/์›”/์ผ/์‹œ/๋ถ„/์ดˆ)

select now();
select sysdate();
select current_timestamp();

CURRENT_DATE( )
CURDATE( )
ย ย ย ย ย ย ย ย ย ย : ํ˜„์žฌ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜ (๋…„/์›”/์ผ)
CURRENT_TIME( )
CURTIME( )
ย ย ย ย ย ย ย ย ย ย : ํ˜„์žฌ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜ (์‹œ/๋ถ„/์ดˆ)

select current_date();
select current_time();

YEAR(๋‚ ์งœ)ย ย ย ย ย ย ย ย ย ย ย ย ย ย : ๋‚ ์งœ/์‹œ๊ฐ„์—์„œ ๋…„๋„๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜
MONTH(๋‚ ์งœ)ย ย ย ย ย ย ย ย ย ย : ๋‚ ์งœ/์‹œ๊ฐ„์—์„œ ์›”์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜
DAY(๋‚ ์งœ)
DAYOFMONTH(๋‚ ์งœ)
: ๋‚ ์งœ/์‹œ๊ฐ„์—์„œ ์ผ์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜
HOUR(์‹œ๊ฐ„)ย ย ย ย ย ย ย ย ย ย ย ย ย : ๋‚ ์งœ/์‹œ๊ฐ„์—์„œ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜
MINUTE(์‹œ๊ฐ„)ย ย ย ย ย ย ย ย ย ย : ๋‚ ์งœ/์‹œ๊ฐ„์—์„œ ๋ถ„์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜
SECOND(์‹œ๊ฐ„)ย ย ย ย ย ย ย ย ย ย : ๋‚ ์งœ/์‹œ๊ฐ„์—์„œ ์ดˆ๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜

select year(now()), month(now()), day(now()),
		hour(now()), minute(now()), second(now());
select last_name, hire_date, year(hire_date), month(hire_date), day(hire_date)
from employees
where department_id = 90;

DATE(๋‚ ์งœ์™€ ์‹œ๊ฐ„) : ๋‚ ์งœ/์‹œ๊ฐ„์—์„œ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜(๋…„/์›”/์ผ)
TIME(๋‚ ์งœ์™€ ์‹œ๊ฐ„) : ๋‚ ์งœ/์‹œ๊ฐ„์—์„œ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜(์‹œ/๋ถ„/์ดˆ)

select date(now()), time(now());

ADDDATE(๋‚ ์งœ, ์ฐจ์ด)
DATE_ADD(๋‚ ์งœ, ์ฐจ์ด) : ๋‚ ์งœ์—์„œ ์ฐจ์ด๋ฅผ ๋”ํ•œ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜
SUBDATE(๋‚ ์งœ, ์ฐจ์ด)
DATE_SUB(๋‚ ์งœ, ์ฐจ์ด) : ๋‚ ์งœ์—์„œ ์ฐจ์ด๋ฅผ ๋บ€ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜

select adddate('2022-01-01', interval 35 day),
		adddate('2022-01-01', interval 2 month),
        date_add('2022-01-01', interval 1 year);
select subdate('2022-01-01', interval 35 day),
		subdate('2022-01-01', interval 2 month),
        date_sub('2022-01-01', interval 1 year);

select last_name, hire_date,
		adddate(hire_date, interval 6 month) as "์ž…์‚ฌ 6๊ฐœ์›” ํ›„",
		subdate(hire_date, interval 7 day) as "์ž…์‚ฌ 7์ผ์ „"
from employees
where department_id=60;

ADDTIME(๋‚ ์งœ์™€ ์‹œ๊ฐ„, ์‹œ๊ฐ„) : ๋‚ ์งœ/์‹œ๊ฐ„์—์„œ ์‹œ๊ฐ„์„ ๋”ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
SUBTIME(๋‚ ์งœ์™€ ์‹œ๊ฐ„, ์‹œ๊ฐ„) : ๋‚ ์งœ/์‹œ๊ฐ„์—์„œ ์‹œ๊ฐ„์„ ๋บ€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

select addtime('2022-01-01 23:59:59','1:1:1'), addtime('15:00:00', '2:10:10');
select subtime('2022-01-01 23:59:59','1:1:1'), subtime('15:00:00', '2:10:10');

DATEDIFF(๋‚ ์งœ1, ๋‚ ์งœ2) : ๋‚ ์งœ1 - ๋‚ ์งœ2๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
TIMEDIFF(์‹œ๊ฐ„1, ์‹œ๊ฐ„2) : ์‹œ๊ฐ„1 โ€“ ์‹œ๊ฐ„2๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

select datediff('2022-12-31',now()), datediff(now(),'2022-12-31');
select timediff('23:23:59', '12:11:10'), timediff('12:11:10','23:23:59');

select last_name, hire_date, datediff(now(), hire_date)as "๊ทผ๋ฌดํ•œ ์ผ์ˆ˜"
from employees;

DAYOFWEEK(๋‚ ์งœ) : ๋‚ ์งœ์˜ ์š”์ผ์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜ (1-์ผ, 2-์›”, 3-ํ™”, 4-์ˆ˜, 5-๋ชฉ, 6-๊ธˆ, 7-ํ† )
MONTHNAME(๋‚ ์งœ) : ๋‚ ์งœ์˜ ์›”์˜ ์˜๋ฌธ ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜
DAYOFYEAR(๋‚ ์งœ) : ๋‚ ์งœ๊ฐ€ 1๋…„ ์ค‘ ๋ช‡ ๋ฒˆ์งธ ๋‚ ์งœ์ธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜

select dayofweek(now( )), monthname(now( )), dayofyear(now( ));

select employee_id, last_name, hire_date, monthname(hire_date)
from employees;

LAST_DAY(๋‚ ์งœ)
: ๋‚ ์งœ๊ฐ€ ์†ํ•œ ์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, ์ฃผ๋กœ ๊ทธ ๋‹ฌ์ด ๋ฉฐ์น ๊นŒ์ง€ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•จ

select last_day('2022-04-03');
select employee_id, last_name, hire_date, last_day(hire_date)
from employees;

QUARTER(๋‚ ์งœ) : ๋‚ ์งœ๊ฐ€ 4๋ถ„๊ธฐ ์ค‘์—์„œ ๋ช‡ ๋ถ„๊ธฐ์ธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

select quarter('2022-01-31'),quarter('2022-02-05'),quarter('2022-03-15'),
	   quarter('2022-04-02'),quarter('2022-05-10'),quarter('2022-06-25'),
       quarter('2022-07-10'),quarter('2022-08-09'),quarter('2022-09-16'),
       quarter('2022-10-14'),quarter('2022-11-11'),quarter('2022-12-25');


โœ๏ธ <์—ฐ์Šต๋ฌธ์ œ>

  1. employees ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ์ „ ์‚ฌ์›์˜ employee_id, last_name, salary๋ฅผ ์ถœ๋ ฅํ•˜๊ณ 
    ๋งˆ์ง€๋ง‰ ์ปฌ๋Ÿผ์—๋Š” 15.5% ์ธ์ƒ๋œ ๊ธ‰์—ฌ(์ผ์˜ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ)๋ฅผ New salary๋ผ๋Š” ์ œ๋ชฉ์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ๊ตฌ๋ฌธ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

  2. employees ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ์‚ฌ์›๋“ค์˜ employee_id, last_name, salary, 15.5% ์ธ์ƒ๋œ ๊ธ‰์—ฌ(New Salary), ์ƒˆ ๊ธ‰์—ฌ์—์„œ ์ด์ „ ๊ธ‰์—ฌ๋ฅผ ๋บ€ ๊ฐ’(Increase)์„ ์ถœ๋ ฅํ•˜๋Š” ๊ตฌ๋ฌธ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
    (๋‹จ, 4๋ฒˆ์งธ, 5๋ฒˆ์งธ ์ปฌ๋Ÿผ์€ ์ผ์˜ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ์ •์ˆ˜๋กœ ํ‘œํ˜„ํ•˜์‹œ์˜ค.)

  3. employees ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ 2์›”์— ์ž…์‚ฌํ•œ ์‚ฌ์›๋“ค์˜ employee_id, last_name, job_id, hire_date, department_id๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

  4. employees ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ 1990๋…„๋ถ€ํ„ฐ 1995๋…„์— ์ž…์‚ฌํ•œ ์‚ฌ์›๋“ค์˜ employee_id, last_name, hire_date, salary, department_id๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

  5. employess ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ์˜ค๋Š˜ ๋‚ ์งœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ทผ๋ฌดํ•œ ์ฃผ์ˆ˜๊ฐ€ 1200์ฃผ ๋ฏธ๋งŒ์ธ ์‚ฌ์›๋“ค์˜ last_name, hire_date, ๊ทผ๋ฌดํ•œ ์ผ์ˆ˜, ๊ทผ๋ฌดํ•œ ์ฃผ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ตฌ๋ฌธ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

  6. employees ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ์ „ ์‚ฌ์›๋“ค์˜ employee_id, last_name, hire_date, ์ž…์‚ฌํ•œ ๋‚ ์งœ์— ํ•ด๋‹น๋˜๋Š” ๋ถ„๊ธฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ตฌ๋ฌธ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
    ํŠนํžˆ ์ž…์‚ฌํ•œ ๋‚ ์งœ์— ํ•ด๋‹น๋˜๋Š” ๋ถ„๊ธฐ๋ฅผ ์ถœ๋ ฅํ•ด์•ผํ•˜๋Š” 4๋ฒˆ์งธ ์ปฌ๋Ÿผ์€ ์˜ˆ๋ฅผ ๋“ค์–ด ์ž…์‚ฌ์ผ์ด 2000-05-05์ธ ๊ฒฝ์šฐ 2๋ถ„๊ธฐ๋ผ๊ณ  ์ถœ๋ ฅ๋  ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑํ•˜์‹œ์˜ค.

0๊ฐœ์˜ ๋Œ“๊ธ€