๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก๐Ÿ›ข๏ธDB (27)

ruriruriya

[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค MySQL - case,if ์กฐ๊ฑด๋ฌธ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

MySQL์—์„œ CASE ๋ฌธ๊ณผ IF ๋ฌธ์€ ์กฐ๊ฑด๋ถ€ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์šฉํ•  ํ…Œ์ด๋ธ”(books) 1. CASE๋ฌธ ์‚ฌ์šฉ๋ฐฉ๋ฒ• SQL์˜ case ๋ฌธ์€ ๋‹ค๋ฅธ ์–ธ์–ด๋ž‘ ๋น„์Šทํ•˜๊ฒŒ ์“ฐ์ธ๋‹ค. ์•„๋ž˜๋Š” case์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ด๋‹ค. ์˜ˆ์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™๋˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. CASE ์ปฌ๋Ÿผ๋ช… WHEN ๊ฐ’1 THEN ๊ฒฐ๊ณผ WHEN ๊ฐ’2 THEN ๊ฒฐ๊ณผ ... ELSE ๋‚˜๋จธ์ง€ ๊ฒฐ๊ณผ๊ฐ’ END ์˜ˆ์ œ 01 - ์ถœํŒ๋…„๋„๊ฐ€ 2000๋…„ ์ด์ƒ์ธ ์ฑ…๋“ค์€, '์ตœ๊ทผ์ฑ…' ์ด๋ผ๊ณ  ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์€ ์ฑ…๋“ค์€ '์˜ˆ์ „์ฑ…'์ด๋ผ๊ณ  ํ•˜์—ฌ, type ์ด๋ผ๋Š” ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฐ€์ ธ์˜ค์‹œ์˜ค. select * , case when released_year >= 2000 then '์ตœ๊ทผ์ฑ…..

๐Ÿ›ข๏ธDB/MySQL 2023. 12. 1. 14:17
[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค MySQL - ๋‚ ์งœ ๋ฐ์ดํ„ฐ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…(DATE, TIME, DATETIME,TIMESTAMP)

MySQL์—์„œ๋Š” ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ œ๊ณตํ•œ๋‹ค. DATE: ๋‚ ์งœ(๋…„, ์›”, ์ผ)๋งŒ์„ ์ €์žฅํ•œ๋‹ค. ์˜ˆ์‹œ: 'YYYY-MM-DD' (์˜ˆ: '2023-12-01') TIME: ์‹œ๊ฐ„(์‹œ, ๋ถ„, ์ดˆ)๋งŒ์„ ์ €์žฅํ•œ๋‹ค. ์˜ˆ์‹œ: 'HH:MM:SS' (์˜ˆ: '15:30:00') DATETIME: ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ํ•จ๊ป˜ ์ €์žฅํ•œ๋‹ค. ์˜ˆ์‹œ: 'YYYY-MM-DD HH:MM:SS' (์˜ˆ: '2023-12-01 15:30:00') TIMESTAMP: ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์ €์žฅํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฝ์ž…๋˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ๋œ ์‹œ๊ฐ„์„ ๊ธฐ๋กํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. TIMESTAMP๋Š” ํŠน์ • ์‹œ๊ฐ„๋Œ€๋กœ ํ‘œํ˜„๋œ๋‹ค. ์˜ˆ์‹œ: 'YYYY-MM-DD HH:MM:SS' (์˜ˆ: '2023-12-01 15:30:00') 1. ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ณ  ์ปฌ๋Ÿผ ๋ฐ์ดํ„ฐํƒ€์ž… ..

๐Ÿ›ข๏ธDB/MySQL 2023. 12. 1. 14:05
[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค MySQL - Null ๊ฐ’ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•(is null)

IS NULL์€ MySQL์—์„œ NULL ๊ฐ’์ธ์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์กฐ๊ฑด์œผ๋กœ NULL์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์•Œ ์ˆ˜ ์—†๋Š” ๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์‚ฌ์šฉํ•  ํ…Œ์ด๋ธ”(books) is null Null ์ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ• ๋‹ค๋ฅธ ๋ฌธ์ž์—ด์ด๋‚˜ ์ˆซ์ž์—ด๊ณผ ๋‹ค๋ฅด๊ฒŒ = ๋ถ€ํ˜ธ๊ฐ€ ์•„๋‹Œ is ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๋ถ€๋ถ„์ด ๋งŽ์ด ํ˜ผ๋™๋  ์ˆ˜ ์žˆ์–ด์„œ ๋งŽ์ด ํ‹€๋ฆฌ๋Š” ๋ถ€๋ถ„์ด๋‹ˆ ์ž˜ ์•Œ์•„๋‘๋„๋ก ํ•˜์ž. ์žฌ๊ณ ๊ฐ€ null ์ธ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ค์‹œ์˜ค. select * from books where stock_quantity is null; is not null is null์˜ ๋ฐ˜๋Œ€๋กœ null ์ด ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. select * from books where stock_quantity is not null; ifnull() ํ•จ์ˆ˜..

๐Ÿ›ข๏ธDB/MySQL 2023. 11. 30. 14:15
[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค MySQL - ์„œ๋ธŒ์ฟผ๋ฆฌ(Sub Query) ์‚ฌ์šฉ๋ฒ•

์„œ๋ธŒ์ฟผ๋ฆฌ(Sub Query)๋Š” SQL ์ฟผ๋ฆฌ ์•ˆ์— ํฌํ•จ๋œ ๋˜ ๋‹ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค. ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ์™ธ๋ถ€ ์ฟผ๋ฆฌ์˜ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ด์šฉํ•ด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์‚ฌ์šฉํ•  ํ…Œ์ด๋ธ”(books) ์˜ˆ์ œ๋กœ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๊ณผ ๋น„๊ตํ•ด ๋ณด์ž. ์˜ˆ์ œ) pages ๊ฐ€ ๊ฐ€์žฅ ๊ธด ์ฑ…์˜, title ๊ณผ pages ๋ฅผ ๋ณด์—ฌ์ฃผ์„ธ์š”. ๋ฐฉ๋ฒ• 01 - pages๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ฆฌํ•œ ๋‹ค์Œ limit ํ‚ค์›Œ๋“œ๋กœ ์œ„์— 1ํ–‰๋งŒ ๊ฐ€์ ธ์˜จ๋‹ค. select title, pages from books order by pages desc limit 0,1; ๋ฐฉ๋ฒ• 02 - max ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ pages ์˜ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ์€ ๋‹ค์Œ where ํ‚ค์›Œ๋“œ๋กœ ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•ด ํ•ด๋‹น ํ–‰์„ ์ฐพ๋Š”๋‹ค. select max(pages)..

๐Ÿ›ข๏ธDB/MySQL 2023. 11. 30. 14:00
[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค MySQL - GROUP BY, HAVING ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

GROUP BY ๋ฐ HAVING์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ์กฐ๊ฑด์— ๋”ฐ๋ผ ํ•„ํ„ฐ๋งํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ํ‚ค์›Œ๋“œ์ด๋‹ค. ์‚ฌ์šฉํ•  ํ…Œ์ด๋ธ”(books) GROUP BY ์นดํ…Œ๊ณ ๋ฆฌ์ปฌ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ~ ๋ณ„๋กœ ๋ฌถ์–ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠน์ • ์—ด์˜ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ์ดํ›„ ์ง‘๊ณ„ ํ•จ์ˆ˜(COUNT(), SUM(), AVG(), MAX(), MIN() ๋“ฑ)์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ฃน๋ณ„๋กœ ์š”์•ฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. author_lname ๋ณ„๋กœ, ๋ช‡ ๊ถŒ์˜ ์ฑ…์„ ์ผ๋Š”์ง€ ๊ถŒ์ˆ˜๋ฅผ ๋ณด์—ฌ์ฃผ์„ธ์š”. select author_lname, count(*) as book_count from books group by author_lname; ๋…„๋„๋ณ„๋กœ ๊ฐ๊ฐ ๋ช‡ ๊ถŒ์˜ ์ฑ…์ด ์ถœ๊ฐ„๋˜์—ˆ๋Š”์ง€ ๋…„๋„์™€ ์ฑ…์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋ณด์—ฌ์ฃผ์„ธ์š”. select ..

๐Ÿ›ข๏ธDB/MySQL 2023. 11. 30. 13:21
[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค MySQL - ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์— ์œ ์šฉํ•œ like ํ‚ค์›Œ๋“œ

LIKE๋Š” MySQL์—์„œ ๋ฌธ์ž์—ด ํŒจํ„ด์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด์˜ ์ผ๋ถ€ ๋˜๋Š” ํŠน์ • ํŒจํ„ด์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค. LIKE๋Š” WHERE ์ ˆ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉฐ, ํŒจํ„ด ๋งค์นญ์„ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค: %: 0๊ฐœ ์ด์ƒ์˜ ๋ฌธ์ž๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์™€์ผ๋“œ์นด๋“œ. _: ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์™€์ผ๋“œ์นด๋“œ. ์‚ฌ์šฉํ•  ํ…Œ์ด๋ธ”(books) like ํ‚ค์›Œ๋“œ ๋ฌธ์ž์—ด ์•ˆ์—, ์›ํ•˜๋Š” ๋ฌธ์ž์—ด์ด ๋“ค์–ด์žˆ๋Š”์ง€ ๊ฒ€์ƒ‰ ์‹ค์ œ๋กœ๋Š” ์ผ๋ž˜์Šคํ‹ฑ ์„œ์น˜(Elasticsearch) ๋ฅผ ๋” ๋งŽ์ด ์“ด๋‹ค. ๊ทธ๋ž˜๋„ ์“ฐ์ด๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์ดˆ๋กœ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ฑ… ์ œ๋ชฉ์— the๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค์‹œ์˜ค. select * from books where title like '%the%'; -- % ์•ž๋’ค๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์•ž๋’ค ..

๐Ÿ›ข๏ธDB/MySQL 2023. 11. 30. 11:09