[MySQL] ํ•จ์ˆ˜

ํ˜ธ๋นตยท2024๋…„ 7์›” 25์ผ

SQL_์ด๋ก 

๋ชฉ๋ก ๋ณด๊ธฐ
5/5

๐Ÿ“… ๊ณต๋ถ€ ๊ธฐ๊ฐ„ : 07. 25(๋ชฉ)

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

  • concat : ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ
-- [์—ฐ์Šต] employee์™€ departments ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ์กฐํšŒํ•˜์‹œ์˜ค
-- Steve์˜ ๋ถ€์„œ๋Š” Administration์ž…๋‹ˆ๋‹ค.
-- XXX์˜ ๋ถ€์„œ๋Š” XXX์ž…๋‹ˆ๋‹ค.
SELECT concat(e.first_name,'์˜ ๋ถ€์„œ๋Š” ',d.department_name,'์ž…๋‹ˆ๋‹ค.') AS "์†Œ๊ฐœ"
FROM hr.employees e INNER JOIN hr.departments d 
ON e.department_id = d.department_id
ORDER BY first_name;
  • locate : ์œ„์น˜ ์ฐพ๊ธฐ(์ธ๋ฑ์Šค๋Š” 1๋ถ€ํ„ฐ ์‹œ์ž‘, ์ฐพ์ง€ ๋ชปํ•  ๊ฒฝ์šฐ์—๋Š” 0 ๋ฐ˜ํ™˜)
SELECT locate('hate', 'I hate to turn up out of the blue, uninvited');
--3๋ฒˆ์งธ ์ „๋‹ฌ๊ฐ’ : ์ฐพ์„ ์‹œ์ž‘์œ„์น˜๊ฐ’
SELECT locate('you', 'Everybody loves the things you do From the way you talk', 35);
  • insert : ๋ฐ์ดํ„ฐ ์‚ฝ์ž…
-- I miss you
SELECT insert('I love you!', 3, 4, 'miss');
-- I love me
SELECT insert('I love you!', locate('you', 'I love you!'), 3, 'me');
  • left(๊ฐœ์ˆ˜), right(๊ฐœ์ˆ˜) : ๋ฐ์ดํ„ฐ ์ถ”์ถœ
SELECT LEFT('Everybody loves the things you do From the way you talk', 9);
SELECT RIGHT('Everybody loves the things you do From the way you talk', 4);
  • substring(๋ฌธ์ž์—ด, ์œ„์น˜, ๊ฐœ์ˆ˜)
SELECT substring('Everybody loves the things you do From the way you talk', 11, 4);
  • upper, lower : ๋Œ€์†Œ๋ฌธ์ž ๋ณ€ํ™˜
SELECT upper('Everybody loves the things you do From the way you talk');
  • replace(๋ฌธ์ž์—ด, ์ฐพ์„ ๋ฌธ์ž์—ด, ๋ฐ”๊ฟ€ ๋ฌธ์ž์—ด) : ์น˜ํ™˜
SELECT REPLACE('MSSQL','MS','My');
  • length : ๊ธธ์ด
SELECT length('I have a dream!!!');

์ˆ˜ํ•™ ํ•จ์ˆ˜

  • abs : ์ ˆ๋Œ€๊ฐ’
  • floor : ์Œ์˜ ๋ฐฉํ–ฅ์—์„œ ๋งŒ๋‚˜๋Š” ์ฒซ ๋ฒˆ์งธ ์ •์ˆ˜ ๊ฐ’
  • ceil : ์–‘์˜ ๋ฐฉํ–ฅ์—์„œ ๋งŒ๋‚˜๋Š” ์ฒซ ๋ฒˆ์งธ ์ •์ˆ˜ ๊ฐ’
  • truncate : ์ง€์ •๋œ ์†Œ์ˆ˜์  ์ž๋ฆฟ์ˆ˜์—์„œ ๋ฒ„๋ฆผ
  • round : ์ง€์ •๋œ ์†Œ์ˆ˜์  ์ž๋ฆฟ์ˆ˜์—์„œ ๋ฐ˜์˜ฌ๋ฆผ
  • greatest(), least() : ์ „๋‹ฌ๋œ ์ˆซ์ž๋“ค ์ค‘ ์ตœ๋Œ€ ์ตœ์†Œ๊ฐ’
  • pi() : ์›์ฃผ์œจ
  • sqrt(n) : ์ œ๊ณฑ๊ทผ
  • pow(n1, n2) = power(n1, n2) : ์ œ๊ณฑ
  • rand() : 0 ~ 1 ๋ฏธ๋งŒ์˜ ์‹ค์ˆ˜ ๋‚œ์ˆ˜

๋‚ ์งœ ํ•จ์ˆ˜

  • SELECT now(), sysdate();
    : ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„

  • select curdate(), curtime();
    : curdate() : ํ˜„์žฌ ๋‚ ์งœ, curtime() : ํ˜„์žฌ ์‹œ๊ฐ„

  • year(sysdate()), month(sysdate()), day(sysdate())
    : ๋‚ ์งœ๋ฐ์ดํ„ฐ๋ฅผ ๋…„, ์›”, ์ผ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์ถ”์ถœ

  • hour(curtime()), minute(curtime()), second(curtime())
    : ์‹œ๊ฐ„๋ฐ์ดํ„ฐ๋ฅผ ์‹œ, ๋ถ„, ์ดˆ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์ถ”์ถœ

  • datediff(โ€™๋ฏธ๋ž˜ ๋‚ ์งœโ€™, โ€˜๊ณผ๊ฑฐ ๋‚ ์งœโ€™)
    : ๊ฒฝ๊ณผ ์ผ

  • timediff(curtime(), '10:00:00')
    : ๊ฒฝ๊ณผ ์‹œ๊ฐ„

-- [์—ฐ์Šต] ์„ผํ„ฐ์— ์˜จ์ง€ 6์‹œ๊ฐ„ 35๋ถ„์ด ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค.
SELECT concat('์„ผํ„ฐ์— ์˜จ์ง€ ',HOUR(timediff(curtime(), '10:00:00')),'์‹œ๊ฐ„ ',
    				MINUTE(timediff(curtime(), '10:00:00')),'๋ถ„์ด ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค.') AS "์˜ค๋Š˜";
  • dayofweek(sysdate())
    : ์š”์ผ ์ถ”์ถœ(์ผ์š”์ผ์ด 1)

  • monthname(sysdate())
    : ์›” ์ถ”์ถœ

  • dayofyear(sysdate());
    : ํ˜„์žฌ ๋‚ ์งœ๊ฐ€ ํ•ด๋‹น ์—ฐ๋„๋กœ๋ถ€ํ„ฐ ๊ฒฝ๊ณผํ•œ ์ผ ์ˆ˜

๊ธฐํƒ€ ํ•จ์ˆ˜

  • avg
-- ์ง์›์˜ ๊ธ‰์—ฌ๊ฐ€ ํ‰๊ท ๋ณด๋‹ค ๋งŽ์€์ง€ ์•„๋‹Œ์ง€ ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ
SELECT first_name, salary, @salavg AS "ํ‰๊ท ", if(salary > @salavg, "๋งŽ๋‹ค", "์ ๋‹ค")
FROM hr.employees e;
  • ifnull()
-- [์—ฐ์Šต] hr.departments ํ…Œ์ด๋ธ”์—์„œ ๋งค๋‹ˆ์ € ์ด๋ฆ„์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค.
-- ๋งค๋‹ˆ์ € ๋ฒˆํ˜ธ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ "๋งค๋‹ˆ์ € ์—†์Œ"์ด๋ผ๊ณ  ์ถœ๋ ฅ๋˜๋„๋ก ํ•˜์‹œ์˜ค
SELECT d.department_id, d.department_name , ifnull(e.first_name , "๋งค๋‹ˆ์ € ์—†์Œ") AS "Manager Name"
FROM hr.departments d
LEFT OUTER JOIN hr.employees e
ON d.manager_id = e.employee_id;
  • count : ์ปฌ๋Ÿผ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ
-- null ๋ฐ์ดํ„ฐ๋Š” count์—์„œ ์ œ์™ธ
SELECT count(*), count(manager_id)
FROM hr.employees e ;

๐Ÿ’ก Left Outer Join ์“ฐ๋Š” ์ด์œ  : Null ๊ฐ’์„ ๋‚˜์˜ค๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด!
์ถœ๋ ฅ ๊ธฐ์ค€์ธ departments ํ…Œ์ด๋ธ”์ด ์™ผ์ชฝ์— ์œ„์น˜ํ•ด์•ผ ํ•จ

profile
์ธ๋ฅ˜์˜ ์œ„๋Œ€ํ•œ ๋Œ€ํ™”์— ์ฐธ์—ฌํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์–ธ์–ด๋ฅผ ํƒ๊ตฌํ•ฉ๋‹ˆ๋‹ค.

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