ํ‹ฐ์Šคํ† ๋ฆฌ

ํ–‰ํŒฝ ๐Ÿ’ป ์•„์นด์ด๋ธŒ
๊ฒ€์ƒ‰ํ•˜๊ธฐ

๋ธ”๋กœ๊ทธ ํ™ˆ

ํ–‰ํŒฝ ๐Ÿ’ป ์•„์นด์ด๋ธŒ

heleownae.tistory.com/m

๋ฐ์ดํ„ฐ ๋ถ„์„๊ฐ€ ๋„์ „๊ธฐ

๊ตฌ๋…์ž
0
๋ฐฉ๋ช…๋ก ๋ฐฉ๋ฌธํ•˜๊ธฐ

์ฃผ์š” ๊ธ€ ๋ชฉ๋ก

  • solvesql ๋ฐฐ์†ก ์˜ˆ์ •์ผ ์˜ˆ์ธก ์„ฑ๊ณต๊ณผ ์‹คํŒจ - ๋ฌธ์ œ ํ’€์ด ๋ฐฐ์†ก ์˜ˆ์ •์ผ ์˜ˆ์ธก ์„ฑ๊ณต๊ณผ ์‹คํŒจ -- ์ตœ์ข…SELECT strftime('%Y-%m-%d', order_purchase_timestamp) as "purchase_date", SUM(CASE WHEN order_estimated_delivery_date >= order_delivered_customer_date THEN 1 ELSE 0 END) as "success", SUM(CASE WHEN order_estimated_delivery_date    # ์ ‘๊ทผ ๋ฐฉ์‹ 1. success์™€ fail ์ผ€์ด์Šค๋ฅผ ๊ฐœ๋ณ„ ์ปฌ๋Ÿผ์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ๊ฒ ๋‹ค.2. SUM (ํ˜น์€ COUNT๋„ ์ƒ๊ด€์—†์Œ) ์ง‘๊ณ„ ํ›„ ์ผ์ž๋ณ„ ๊ทธ๋ฃนํ™”ํ•ด์•ผ๊ฒ ๋‹ค.3. ๊ธฐํƒ€ ์กฐ๊ฑด๋“ค ์ถฉ์กฑ e.g., 17๋…„ 1์›” ๋ฐ์ดํ„ฐ๋งŒ, ๋‚ ์งœ ์˜ค๋ฆ„์ฐจ์ˆœ   # ๋ฐฐ์šด์  1. SQLite.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 0 2024. 5. 22.
  • SQL ์„œ๋ธŒ์ฟผ๋ฆฌ์™€ CTE 1๏ธโƒฃ ์„œ๋ธŒ์ฟผ๋ฆฌ (Subquery) SQL ๊ตฌ๋ฌธ ๋‚ด์— ํฌํ•จ๋œ ์ฟผ๋ฆฌ, (๋ฉ”์ธ)์ฟผ๋ฆฌ ์† ์ฟผ๋ฆฌ โœ… ๋ชฉ์  ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง ๋ณต์žกํ•œ ์ง‘๊ณ„ JOIN โœ… ์œ„์น˜ SELECT ๋ฌธ FROM ์ ˆ WHERE ์ ˆ HAVING ์ ˆ ORDER BY ์ ˆ โœ… ์œ ํ˜• ๋ฉ”์ธ ์ฟผ๋ฆฌ์™€์˜ ์—ฐ๊ด€์„ฑ - ๋น„์ƒ๊ด€ ์„œ๋ธŒ์ฟผ๋ฆฌ ์•„๋ฌด๊ฒƒ๋„ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ณ , ์—ฐ๊ณ„๋˜์ง€ ์•Š๊ณ , ๋‹จ๋…์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ ๋ฉ”์ธ ํ…Œ์ด๋ธ”๊ณผ ์กฐ์ธ ์กฐ๊ฑด์ด ๊ฑธ๋ฆฌ์ง€ ์•Š๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ ์—ฐ์‚ฐ์ž(=, , , =) + [ all / any / in ] ์‚ฌ์šฉํ•œ ์กฐ๊ฑด ๋ถ€์—ฌ ๊ฐ€๋Šฅ -- ๋น„์ƒ๊ด€ ์„œ๋ธŒ์ฟผ๋ฆฌ -- (์˜ˆ์‹œ) ์ธ๋„(India)์— ์—†๋Š” ๋ชจ๋“  ๋„์‹œ๋ฅผ ๋ฐ˜ํ™˜ SELECT city_id, city_name FROM city WHERE country_id (SELECT country_id FROM country WHER.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 1 2024. 1. 10.
  • SQL ๋ทฐ (Views) 1๏ธโƒฃ ๋ทฐ (View) DB์—์„œ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ํŒŒ์ƒ๋œ ๊ฐ€์ƒ ํ…Œ์ด๋ธ” ํ…Œ์ด๋ธ”๊ณผ ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์Œ ex. ํ…Œ์ด๋ธ”์„ ๋น„๊ณต๊ฐœ๋กœ ์œ ์ง€ํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ๋ทฐ ์ง‘ํ•ฉ์„ ํ†ตํ•ด์„œ๋งŒ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก DB ์„ค๊ณ„ 2๏ธโƒฃ ํŠน์ง• ๊ฐ€์ƒ ํ…Œ์ด๋ธ” ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์Œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋ทฐ๋ฅผ ํ†ตํ•ด ์ •์˜ํ•œ ์ฟผ๋ฆฌ๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋ฐ์ดํ„ฐ ๋ณด์•ˆ ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋ฐ์ดํ„ฐ๋งŒ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœ ๊ฐ€๋Šฅ ๋ฐ์ดํ„ฐ ์ง‘๊ณ„ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์ „ ์ง‘๊ณ„ํ•˜์—ฌ DB์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์—ฌ์คŒ์œผ๋กœ์„œ ์„ค๊ณ„์˜ ์œ ์—ฐ์„ฑ ํ–ฅ์ƒ ๋‹จ์ˆœํ™” ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ๋ทฐ๋กœ ์ •์˜ํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ฆ 3๏ธโƒฃ ๊ตฌ์กฐ -- ๋ทฐ ๊ตฌ์กฐ CREATE VIEW view_name AS SELECT col1, col2, … FROM table; -- ๋ทฐ ์˜ˆ์‹œ CREATE VIEW EmailVie.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 0 2024. 1. 10.
  • 240102 TUE ๋Œ€์—ฌ ํšŸ์ˆ˜๊ฐ€ ๋งŽ์€ ์ž๋™์ฐจ๋“ค์˜ ์›”๋ณ„ ๋Œ€์—ฌ ํšŸ์ˆ˜ ๊ตฌํ•˜๊ธฐ ๋Œ€์—ฌ ํšŸ์ˆ˜๊ฐ€ ๋งŽ์€ ์ž๋™์ฐจ๋“ค์˜ ์›”๋ณ„ ๋Œ€์—ฌ ํšŸ์ˆ˜ ๊ตฌํ•˜๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr #์ตœ์ข… SELECT MONTH(START_DATE), CAR_ID, COUNT(CAR_ID) RECORDS FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE CAR_ID IN ( SELECT CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE YEAR(START_DATE)=2022 AND MONTH(START_DATE) IN (8, 9, 10) GROUP BY CAR_ID HAVING C.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 0 2024. 1. 2.
  • DML ๋ช…๋ น์–ด ์ •๋ฆฌ 1๏ธโƒฃ INSERT ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ/์‚ฝ์ž…ํ•˜๋Š” ๋ช…๋ น์–ด โœ… ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ• ์ปฌ๋Ÿผ ๋ฆฌ์ŠคํŠธ ๋ช…์‹œํ•˜๊ธฐ ์–ด๋–ค ์ปฌ๋Ÿผ์— ๊ฐ’์„ ๋„ฃ์„์ง€ ๋ช…์‹œ ์ปฌ๋Ÿผ ์ˆœ์„œ์— ๋งž๊ฒŒ ์ž‘์„ฑ ์ปฌ๋Ÿผ ๋ฆฌ์ŠคํŠธ ๋ช…์‹œํ•˜์ง€ ์•Š๊ธฐ ๋ชจ๋“  ์ปฌ๋Ÿผ์— ๊ฐ’์„ ๋„ฃ์„ ๊ฒƒ์ด๋ผ๋Š” ์˜๋ฏธ ํ…Œ์ด๋ธ”์—์„œ ์ •์˜๋œ ์ปฌ๋Ÿผ ๊ฐœ์ˆ˜์— ๋งž์ถฐ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ’์„ ์ž…๋ ฅ โœ… ๊ตฌ์กฐ -- โ‘  ์ปฌ๋Ÿผ ๋ฆฌ์ŠคํŠธ ๋ช…์‹œ INSERT INTO table1 (col1, col2, …) VALUES (val1, val2, …) -- โ‘  ์˜ˆ์‹œ INSERT INTO player (name, height, weight) VALUES ('KIM', 170, 65) -- โ‘ก ์ปฌ๋Ÿผ ๋ฆฌ์ŠคํŠธ ๋ช…์‹œ X INSERT INTO table1 VALUES (val1, val2, …) -- โ‘ก ์˜ˆ์‹œ INSERT INTO player VALUES (.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 0 2024. 1. 2.
  • SQL ์–ธ์–ด ๋ถ„๋ฅ˜ - DDL, DML, DCL, TCL 1๏ธโƒฃ DDL (Data Definition Language) : ๋ฐ์ดํ„ฐ ์ •์˜ ์–ธ์–ด ๊ด€๊ณ„ํ˜• DB์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ์–ธ์–ด CREATE : ํ…Œ์ด๋ธ” ์ƒ์„ฑ ALTER, RENAME : ๋ณ€๊ฒฝ DROP : ์‚ญ์ œ 2๏ธโƒฃ DML (Data Manipulation Language) : ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์–ธ์–ด ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ์–ธ์–ด INSERT : ๋ฐ์ดํ„ฐ ์‚ฝ์ž… SELECT : ์กฐํšŒ UPDATE : ์ˆ˜์ • DELETE : ์‚ญ์ œ 3๏ธโƒฃ DCL (Data Control Language) : ๋ฐ์ดํ„ฐ ์ œ์–ด ์–ธ์–ด DB ์ ‘๊ทผ, ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ์‚ฌ์šฉ ๊ถŒํ•œ์„ ๊ด€๋ฆฌ(๋ถ€์—ฌ/๋ฐ•ํƒˆ)ํ•˜๋Š” ์–ธ์–ด GRANT : ๋ถ€์—ฌ REVOKE : ํšŒ์ˆ˜ 4๏ธโƒฃ TCL (Transaction Control Language) : ํŠธ๋žœ์žญ์…˜ ์ œ์–ด ์–ธ์–ด DML์—์„œ ์กฐ์ž‘๋œ ๊ฒฐ๊ณผ.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 0 2024. 1. 1.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ์™€ ์„ฑ๋Šฅ 1๏ธโƒฃ ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ฅธ ์„ฑ๋Šฅ ๋ฌธ์ œ, ์„ฑ๋Šฅ ํ–ฅ์ƒ๋ฒ• ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ง‘์•ฝ → ์„ค๊ณ„๊ฐ€ ์ž˜ ๋œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์ด๋ผ๋„ ์„ฑ๋Šฅ ์ €ํ•˜ ๋ถˆ๊ฐ€ํ”ผ → ํ…Œ์ด๋ธ” ๋‹จ์œ„ ๋ถ„ํ• ์„ ํ†ตํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ โœ… ์„ฑ๋Šฅ ์ €ํ•˜ DB์˜ ๋ธ”๋ก์— ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋จ → ๋ฐ์ดํ„ฐ ์กฐํšŒ ๊ณผ์ •์—์„œ ๋ธ”๋ก ์ž…/์ถœ๋ ฅ ํšŸ์ˆ˜ ์ฆ๊ฐ€ ๋กœ์šฐ ์ฒด์ด๋‹(Row Chaining) : ํ–‰ ๋ฐ์ดํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด 2๊ฐœ ์ด์ƒ์˜ ๋ธ”๋ก์— ๊ฑธ์ณ ํ•˜๋‚˜์˜ ํ–‰์ด ์ €์žฅ๋œ ํ˜•ํƒœ ๋กœ์šฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜(Row Migration) : ๋ฐ์ดํ„ฐ ๋ธ”๋ก์—์„œ ๋ฐœ์ƒํ•œ ์ˆ˜์ •์ด ๋‹ค๋ฅธ ๋ธ”๋ก์˜ ๋นˆ ๊ณต๊ฐ„์— ์ž˜๋ชป ์ €์žฅ ์ฒ˜๋ฆฌ๋œ ๋ฐฉ์‹ โœ… ๋ถ„ํ•  ๋ฐฉ์‹ ์ˆ˜ํ‰ ๋ถ„ํ•  : ํ–‰(๋กœ์šฐ) โžก๏ธ ๋‹จ์œ„๋กœ ์š”์†Œ ๋ถ„ํ•  ์ˆ˜์ง ๋ถ„ํ•  : ์—ด(์ปฌ๋Ÿผ)โฌ‡๏ธ ๋‹จ์œ„๋กœ ์š”์†Œ ๋ถ„ํ•  โœ… ๋ถ„ํ•  ์ ˆ์ฐจ DB ๋ชจ๋ธ๋ง DB ํ…Œ์ด๋ธ”์˜ ์šฉ๋Ÿ‰ ์‚ฐ์ • ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ํŒจํ„ด ๋ถ„์„ ๋ฐ.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 1 2024. 1. 1.
  • GROUP BY์™€ ์ง‘๊ณ„ํ•จ์ˆ˜์˜ ์กฐ๊ฑด๋ฌธ์„ ์ด์šฉํ•œ ํ”ผ๋ด‡ํŒ…(Pivoting) 0๏ธโƒฃ ๋“ค์–ด๊ฐ€๋ฉฐ MySQL์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ GROUP BY์™€ ์ง‘๊ณ„ํ•จ์ˆ˜์˜ CASE WHEN์„ ์ด์šฉํ•œ ํ”ผ๋ด‡ํŒ…(Pivoting)์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฑธ ๋ฐฐ์› ๋‹ค. ํ”ผ๋ด‡ํŒ…์˜ 'ํ”ผ๋ด‡(Pivot)'์€ ์—‘์…€์˜ 'ํ”ผ๋ด‡ ํ…Œ์ด๋ธ”(Pivot Table)'์˜ ๊ทธ ํ”ผ๋ด‡์ด ๋งž๋‹ค. ์—‘์…€์ด๋‚˜ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณธ ์‚ฌ๋žŒ ์ค‘ ํ”ผ๋ด‡ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•ด๋ณด์ง€ ์•Š์€ ์‚ฌ๋žŒ์€ ๋“œ๋ฌผ ๊ฒƒ ๊ฐ™๋‹ค. ๋‚˜ ์—ญ์‹œ ํšŒ์‚ฌ๋ฅผ ๋‹ค๋‹ ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์•ฝํ•˜๊ฑฐ๋‚˜ ๋ณด๊ณ ์„œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ”ผ๋ด‡ ํ…Œ์ด๋ธ” ๊ธฐ๋Šฅ์„ ์ฆ๊ฒจ ์ผ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋‹จ ํ•œ ๋ฒˆ๋„ 'ํ”ผ๋ด‡'์ด ๋ฌด์Šจ ๋œป์ธ์ง€ ๊ถ๊ธˆํ•ดํ•œ ์ ์ด ์—†๋‹ค๋Š” ๊ฑธ ๊นจ๋‹ฌ์•˜๋‹ค. ๊ทธ๋ž˜์„œ ์ฐพ์•„๋ดค๋‹ค. ํ”ผ๋ด‡์€ ๋ฌด์Šจ ๋œป์ผ๊นŒ? 1๏ธโƒฃ ํ”ผ๋ด‡(Pivot)์ด๋ž€? 'pivot'์˜ ์‚ฌ์ „์  ์ •์˜๋Š” ๋‹ค์Œ๊ณผ๊ฐ™๋‹ค. ์š”์ปจ๋Œ€ '์ถ•' ํ˜น์€ '์ถ•์„ ์ค‘์‹ฌ์œผ๋กœ ํšŒ์ „ํ•˜๋‹ค'๋Š” ๋œป์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํ”ผ๋ด‡ ํ…Œ์ด๋ธ”์˜.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 1 2023. 12. 30.
  • MySQL Datetime vs Timestamp 1. Date, Datetime, Time, Timestamp ํƒ€์ž… ๊ตฌ์กฐ ๋ฒ”์œ„ ์˜ˆ์‹œ Date YYYY-MM-DD 1000-01-01 9999-12-31 2023-12-29 Datetime YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 9999-12-34 23:59:59 2023-12-29 12:28:47 Time HH:MM:SS -838:59:59 838:59:59 12:28:47 Timestamp YYYY-MM-MM HH:MM:SS 1970-01-01 00:00:01 2038-01-19 03:14:07 UTC 2023-12-29 12:28:47 2. Datetime vs Timestamp Datetime Timestamp ํƒ€์ž… ๋ฌธ์žํ˜• ์ˆซ์žํ˜• ์šฉ๋Ÿ‰ 8byte 4byte ์ž…๋ ฅ ๊ฐ’ .. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 0 2023. 12. 29.
  • ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๊ณผ ์ •๊ทœํ™”, ๋ฐ˜์ •๊ทœํ™” 1๏ธโƒฃ ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋ชฉ์ ์œผ๋กœ ํ•˜๋Š” ์ž‘์—… โœ… ์™œ ์„ฑ๋Šฅ์„ ์‹ ๊ฒฝ ์จ์•ผ ํ•˜๋Š”๊ฐ€? DB๋Š” ๋งค์šฐ ๋งŽ์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋น ๋ฅด๊ฒŒ, ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ์ด ๋น„ํšจ์œจ์ ์ด๋ฉด DB ์ „์ฒด์˜ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ๋น„ํšจ์œจ์ ์œผ๋กœ ์„ค๊ณ„๋œ ํ…Œ์ด๋ธ”, ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ์ฐธ์กฐ๊ฐ€ ํ•„์š”ํ•œ ํ…Œ์ด๋ธ” ๋“ฑ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์ €ํ•ดํ•˜๋Š” ์š”์†Œ๋Š” ๋‹ค์–‘ํ•˜๋‹ค. โœ… ์–ธ์ œ ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ํ”„๋กœ์ ํŠธ ํ”Œ๋กœ์šฐ : [๋ถ„์„/์„ค๊ณ„] โœ”๏ธ - [๊ตฌํ˜„] - [ํ…Œ์ŠคํŠธ] - [์šด์˜] ํ›„๋ฐ˜์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋น„์šฉ์ด ์ฆ๊ฐ€ โœ… ๊ณ ๋ ค ์‚ฌํ•ญ ์ •ํ™•ํ•œ ์ •๊ทœํ™” DB ์šฉ๋Ÿ‰ ์‚ฐ์ • DB์—์„œ ๋ฐœ์ƒ๋˜๋Š” ํŠธ๋žœ์žญ์…˜์˜ ์œ ํ˜• ํŒŒ์•… CRUD ๋งคํŠธ๋ฆญ, ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ ํŒŒ์•… DB ์šฉ๋Ÿ‰๊ณผ ํŠธ๋žœ์žญ์…˜ ์œ ํ˜•์— ๋”ฐ๋ผ, ๋ฐ˜์ •๊ทœํ™” ์ˆ˜ํ–‰ ์ด๋ ฅ ๋ชจ๋ธ, PK/FK, ์Šˆํผ ํƒ€์ž…/์„œ๋ธŒ ํƒ€์ž… ์กฐ์ • ์„ฑ๋Šฅ ๊ด€์ ์˜.. ๊ณต๊ฐ์ˆ˜ 1 ๋Œ“๊ธ€์ˆ˜ 0 2023. 12. 29.
  • JOIN์˜ ์œ ํ˜• - INNER, (LEFT/RIGHT/FULL) OUTER, CROSS, SELF 1. INNER JOIN ๊ต์ง‘ํ•ฉ ๊ฐœ๋…. SELECT * FROM table1 a INNER JOIN table2 b ON a.column=b.column 2. OUTER JOIN ์—ฌ์ง‘ํ•ฉ, ํ•ฉ์ง‘ํ•ฉ ๊ฐœ๋…. ํŠนํžˆ '์—ฌ์ง‘ํ•ฉ'์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•  ๊ฒƒ์ธ์ง€ ์ฐพ์•„๋ดค์—ˆ๋Š”๋ฐ, WHERE์ ˆ์— NULL์— ๋Œ€ํ•œ ์กฐ๊ฑด์„ ๊ฑธ๋ฉด ๋œ๋‹ค. (โ˜…) โ‘  LEFT / RIGHT JOIN ๋ฌธ๋ฒ•, ๊ธฐ๋Šฅ ์ƒ์˜ ํฐ ์ฐจ์ด๋Š” ์—†๋‹ค. JOIN์€ ์ˆœ์„œ๋ณด๋‹ค๋Š” PK์™€ ์ง‘ํ•ฉ ๋ ˆ๋ฒจ์ด ์ค‘์š”ํ•˜๋‹ค. โ‘ก FULL JOIN ํ•ฉ์ง‘ํ•ฉ ๊ฐœ๋…. 3. CROSS JOIN ์ƒํ˜ธ ์กฐ์ธ. ์กฐ์ธ ์ปฌ๋Ÿผ ์—†์ด, ๋‘ ํ…Œ์ด๋ธ” ๊ฐ„ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์—ฐ๊ฒฐ์„ ๊ฒฐํ•ฉํ•˜๋Š” ์กฐ์ธ ๋ฐฉ์‹. ์ „์ฒด ํ–‰ ๊ฐœ์ˆ˜๋Š” ๋‘ ํ…Œ์ด๋ธ”์˜ ๊ฐ ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ณฑํ•œ ๊ฐ’์ด๋‹ค. (=์นดํ…Œ์‹œ์•ˆ ๊ณฑ Cartesian Product) SELECT a.*,.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 0 2023. 12. 28.
  • ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์˜ 4 ์š”์†Œ - ์—”ํ„ฐํ‹ฐ, ์†์„ฑ, ๊ด€๊ณ„, ์‹๋ณ„์ž 1๏ธโƒฃ ์—”ํ„ฐํ‹ฐ(Entity) ๊ฐœ์ฒด(๋…๋ฆฝ์ฒด) ์ •๋ณด์˜ ์„ธ๊ณ„์—์„œ ์˜๋ฏธ ์žˆ๋Š” ํ•˜๋‚˜์˜ ์ •๋ณด ๋‹จ์œ„ ํŠน์ง• ์—…๋ฌด์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ์ •๋ณด ์‹๋ณ„ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ : ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹๋ณ„์ž์— ์˜ํ•ด ํ•œ ๊ฐœ์”ฉ๋งŒ ์กด์žฌ ์ธ์Šคํ„ด์Šค(Instance)์˜ ์ง‘ํ•ฉ : 2๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค๋กœ ๊ตฌ์„ฑ๋จ ์—…๋ฌด ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ํ™œ์šฉ๋จ ์†์„ฑ(Attribute)์„ ํฌํ•จํ•จ ๊ด€๊ณ„(Relationship)์˜ ์กด์žฌ ๋ถ„๋ฅ˜โ‘  ์œ /๋ฌดํ˜•์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ ์œ ํ˜• ์—”ํ„ฐํ‹ฐ ๋ฌผ๋ฆฌ์  ํ˜•ํƒœ๊ฐ€ ์กด์žฌํ•จ ์•ˆ์ •์ , ์ง€์†์ ์ด์–ด์•ผ ํ•จ ex. ์ƒํ’ˆ, ๊ฐ•์‚ฌ ๊ฐœ๋… ์—”ํ„ฐํ‹ฐ ๊ฐœ๋…์  ์ •๋ณด๋กœ ๊ตฌ๋ถ„๋จ ex. ํ•™๊ณผ, ์ฝ”์Šค๋‹ฅ ์ข…๋ชฉ ์‚ฌ๊ฑด ์—”ํ„ฐํ‹ฐ ํŠน์ • ์ด๋ฒคํŠธ์— ์ข…์†๋จ ex. ์ด๋ฒคํŠธ ์‘๋ชจ, ์ฃผ๋ฌธ ๋ถ„๋ฅ˜โ‘ก ๋ฐœ์ƒ ์‹œ์ ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ ๊ธฐ๋ณธ/ํ‚ค ์—”ํ„ฐํ‹ฐ (Basic Entity) ๊ด€๊ณ„๊ฐ€ ์•„๋‹Œ ๋…๋ฆฝ์ ์ธ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅ = ๊ณ ์œ  ์ฃผ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ง e.. ๊ณต๊ฐ์ˆ˜ 1 ๋Œ“๊ธ€์ˆ˜ 1 2023. 12. 28.
  • JOIN ์‹œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ ๋ ˆ๋ฒจ (์ง‘ํ•ฉ ์ˆ˜์ค€) + ์ถ”๊ฐ€ 231228 โ‘  M* ์ง‘ํ•ฉ hr.emp ํ…Œ์ด๋ธ”์˜ deptno ์ปฌ๋Ÿผ์—๋Š” 10, 20, 30 ๋“ฑ ๊ฐœ๋ณ„๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋‹ค. *๊ฐœ๋ณ„๊ฐ’์ด ์ค‘๋ณต ๊ฑด ์žˆ๋‹ค๋Š” ์˜๋ฏธ โ‘ก 1* ์ง‘ํ•ฉ hr.dept ํ…Œ์ด๋ธ”์˜ deptno ์ปฌ๋Ÿผ : 10, 20, 30, 40 ๋“ฑ ๊ณ ์œ ์˜ ๊ฐ’์ด ์žˆ๋‹ค. *๊ณ ์œ ํ•œ ๊ฐ’(unique)์˜ ์˜๋ฏธ โ‘ข ์ง‘ํ•ฉ ์ˆ˜์ค€์ด ๋‹ค๋ฅธ ๊ฐ ์ปฌ๋Ÿผ(deptno)์„ ๊ธฐ์ค€์œผ๋กœ JOINํ•˜๋ฉด, deptno์˜ ์ง‘ํ•ฉ ์ˆ˜์ค€๋Š” ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? 1:M ์กฐ์ธ ์‹œ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์€ M์ง‘ํ•ฉ์˜ ๋ ˆ๋ฒจ์„ ๋”ฐ๋ฅธ๋‹ค. SELECT * FROM hr.dept a JOIN hr.emp b ON a.deptno=b.deptno ์ฐธ๊ณ  ์ž๋ฃŒ "์ง‘ํ•ฉ์˜ ๋ ˆ๋ฒจ"์˜ ์˜๋ฏธ - ์ธํ”„๋Ÿฐ ์•ˆ๋…•ํ•˜์„ธ์š”์œ ์ตํ•˜๊ณ  ํ›Œ๋ฅญํ•œ ๊ฐ•์˜ ๋•๋ถ„์— ์ฟผ๋ฆฌ ์ดํ•ด๊ฐ€ ์ผ์ทจ์›”์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.๊ฐ•์‚ฌ๋‹˜๊ป˜์„œ ๊ฑฐ๋“ญ ๊ฐ•์กฐํ•˜์‹œ๊ณ  ์ค‘์š”ํ•˜.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 0 2023. 12. 27.
  • ๋ชจ๋ธ๋ง์˜ ์ดํ•ด 1๏ธโƒฃ ๋ชจ๋ธ๋ง์˜ ์ดํ•ด ๐Ÿ“Š ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง RDBMS๊ฐ€ ์ง€์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ, ํ˜•์‹ ๋ชจ๋ธ๋ง์˜ ๋ชฉ์  ์—…๋ฌด์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ '์ •์˜'ํ•˜๊ณ  'ํ‘œํ˜„'ํ•˜์—ฌ ์—…๋ฌด๋ฅผ ๋ถ„์„ *๊ฐœ๋ฐœ๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹˜ ๋ถ„์„ ๋ชจ๋ธ์„ ํ†ตํ•ด ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑ, ๊ด€๋ฆฌ ๋ชจ๋ธ๋ง์ด ์ค‘์š”ํ•œ ์ด์œ  ๋ชจ๋ธ ๊ตฌ์กฐ(์ •๋ณด)๋งŒ ๋ณด๊ณ ๋„ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Œ ์„ฑ๋Šฅ์  ์ธก๋ฉด์„ ๊ณ ๋ คํ•˜์—ฌ SQL๋ฌธ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ ๋ชจ๋ธ๋ง์˜ ํŠน์ง• ์ถ”์ƒํ™” : ํ˜„์‹ค์„ธ๊ณ„๋ฅผ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•˜๋Š” ์•ฝ์†๋œ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฒƒ ๋‹จ์ˆœํ™” : ๋ณต์žกํ•œ ํ˜„์‹ค์„ธ๊ณ„๋ฅผ ์ œํ•œ๋œ ํ‘œ๊ธฐ๋ฒ•์ด๋‚˜ ์–ธ์–ด๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ ๋ช…ํ™•ํ™” : ์• ๋งค๋ชจํ˜ธํ•จ์„ ์ œ๊ฑฐํ•˜๊ณ  ํ˜„์ƒ์„ ์ •ํ™•ํ•˜๊ฒŒ ๊ธฐ์ˆ ํ•˜๋Š” ๊ฒƒ ๋ชจ๋ธ๋ง์˜ ๋‹จ๊ณ„ ๊ฐœ๋…์  ๋ชจ๋ธ๋ง ํ˜„์‹ค์„ธ๊ณ„ → ๊ฐœ๋…์  ๊ตฌ์กฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ฐพ๊ณ , ๋ถ„์„ํ•˜๋Š” ๊ณผ์ • ์ถ”์ƒํ™” ์ˆ˜์ค€ ๊ฐ€์žฅ ↑, ์—…๋ฌด.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 0 2023. 12. 27.
  • 231227 WED ์šฐ์œ ์™€ ์š”๊ฑฐํŠธ๊ฐ€ ๋‹ด๊ธด ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์šฐ์œ ์™€ ์š”๊ฑฐํŠธ๊ฐ€ ๋‹ด๊ธด ์žฅ๋ฐ”๊ตฌ๋‹ˆ #์ตœ์ข… SELECT CART_ID FROM CART_PRODUCTS WHERE NAME IN ('Milk', 'Yogurt') GROUP BY 1 HAVING COUNT(DISTINCT NAME) > 1 ORDER BY 1 ๊ฐ„๋‹จํ•ด ๋ณด์ด๋Š” ๋ฌธ์ œ์ง€๋งŒ ์ƒ๋‹นํžˆ ํ—ท๊ฐˆ๋ ธ๋‹ค. #์ ‘๊ทผ ๋ฐฉ์‹ Milk ํ˜น์€ Yogurt๊ฐ€ ๋‹ด๊ธด ๋ฐ์ดํ„ฐ๋งŒ ํ•„ํ„ฐ๋งํ•œ ํ›„, COUNT(cart_id)๊ฐ€ 2 ์ด์ƒ์ธ ๊ฒƒ๋งŒ ๋ฝ‘์•„๋‚ด๋ฉด ๋˜์ง€ ์•Š์„๊นŒ? #1๋‹จ๊ณ„ #1๋‹จ๊ณ„ SELECT CART_ID, NAME FROM CART_PRODUCTS WHERE NAME IN ('Milk', 'Yogurt') ์ตœ์ข… ์ฝ”๋“œ์—๋Š” ๋นผ์•ผ ํ•˜์ง€๋งŒ, ์•„๋ฌด๋ž˜๋„ NAME ์— ์กฐ๊ฑด์ด ๊ฑธ๋ฆฌ๋‹ค ๋ณด๋‹ˆ ํ•„ํ„ฐ๋งํ•œ ํ›„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ข€ ์‚ดํŽด๋ณด๊ธฐ ์œ„ํ•ด ์šฐ์„  NAME๋„ ๊ฐ™์ด.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 0 2023. 12. 27.
  • 231226 TUE ์ฝ”๋“œ์นดํƒ€ ๋ฆฌ๋ทฐ 1. ๊ฐ€๊ฒฉ๋Œ€ ๋ณ„ ์ƒํ’ˆ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ -- ์ •๋‹ต SELECT IF(price=29, "์žฅ๊ธฐ ๋Œ€์—ฌ", "๋‹จ๊ธฐ ๋Œ€์—ฌ") RENT_TYPE FROM car_rental_company_rental_history WHERE start_date LIKE '2022-09-%' ORDER BY history_id DESC -- ์˜ค๋‹ต SELECT history_id, car_id, date_format(start_date, '%Y-%m-%d') start_date, date_format(end_date, '%Y-%m-%d') end_date, IF(datediff(end_date, start_date)>=30, "์žฅ๊ธฐ ๋Œ€์—ฌ", "๋‹จ๊ธฐ ๋Œ€์—ฌ") RENT_TYPE FROM car_rental_company_rental_hist.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 1 2023. 12. 26.
  • ๋ฐ์ดํ„ฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, DBMS ์š”์•ฝ ๋ฐ์ดํ„ฐ : ํšจ์œจ์ ์œผ๋กœ ์ €์žฅ/๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์˜ ์ •๋ณด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค : ์กฐ์งํ™”๋œ ๋ฐ์ดํ„ฐ์˜ ๋ชจ์Œ DBMS : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database)๋ฅผ ๊ด€๋ฆฌ(Management)ํ•˜๋Š” ์‹œ์Šคํ…œ(System) Oracle, MySQL, MariaDB, MongoDB, PostgreSQL etc ๊ฐ DBMS๋งˆ๋‹ค ์‚ฌ์šฉํ•˜๋Š” SQL ๋ฌธ๋ฒ•์ด ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฆ„ SQLD๋Š” ORACLE(+ SQL Server)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถœ์ œํ•จ ๋А๋‚€์  ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ Oracle, MySQL์— ๋”ฐ๋ผ ์ฟผ๋ฆฌ๊ฐ€ ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅธ ๊ฑธ ๋ณด๊ณ  ์˜ˆ์ƒ์€ ํ–ˆ์ง€๋งŒ, ์—ญ์‹œ๋‚˜ ๋ฌธ๋ฒ•์ด ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฑธ ์•Œ์•˜๋‹ค. ์—ฌํƒœ๊นŒ์ง€ MySQL ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฌธ๋ฒ• ๊ณต๋ถ€๋ฅผ ํ–ˆ๋Š”๋ฐ, Oracle๊ณผ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ด์ ธ์„œ ๊ตฌ๊ธ€๋งํ•ด ๋ณด์•˜๋‹ค. DB - Oracle & MySql ์ฟผ๋ฆฌ๋ฌธ ์ฐจ์ด ์ •๋ฆฌ ๋“ค.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 1 2023. 12. 26.
  • 231224 SUN ์ง‘๊ณ„ํ•จ์ˆ˜ 1. ์ž๋™์ฐจ ๋Œ€์—ฌ ๊ธฐ๋ก์—์„œ ๋Œ€์—ฌ์ค‘ / ๋Œ€์—ฌ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ๊ตฌ๋ถ„ํ•˜๊ธฐ -- ์ •๋‹ต SELECT car_id, MAX(CASE WHEN '2022-10-16' BETWEEN start_date AND end_date THEN "๋Œ€์—ฌ์ค‘" ELSE "๋Œ€์—ฌ ๊ฐ€๋Šฅ" END) AVAILABILITY FROM car_rental_company_rental_history GROUP BY 1 ORDER BY 1 DESC -- ์˜ค๋‹ต SELECT car_id, MAX(IF('2022-10-16' BETWEEN start_date AND end_date, "๋Œ€์—ฌ์ค‘", "๋Œ€์—ฌ๊ฐ€๋Šฅ")) AVAILABILITY FROM car_rental_company_rental_history GROUP BY 1 ORDER BY 1 DESC (1) MA.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 0 2023. 12. 24.
  • 231223 SAT GROUP BY, HAVING (vs WHERE) SELECT user_id, product_id, sales_date FROM online_sale WHERE sales_date >2022 GROUP BY user_id, product_id HAVING COUNT(product_id>=2) ORDER BY 1 asc , 2 descโ€‹ ์œ„ ์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ํ•ด์„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 2ํ–‰ : online_sale ํ…Œ์ด๋ธ”์—์„œ 3ํ–‰ : sales_date ๊ฐ€ 2022๋…„ ์ด์ƒ์ธ ๋ฐ์ดํ„ฐ๋ฅผ 4ํ–‰ : user_id ์™€ product_id ๋กœ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  5ํ–‰ : ๊ทธ ๊ฒฐ๊ณผ์—์„œ product_id ๊ฐ€ 2 ์ด์ƒ์ธ ๊ฒƒ๋งŒ ๋ฝ‘์•„ 6ํ–‰ : user_id ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ, ๋งŒ์•ฝ user_id๊ฐ€ ๊ฐ™๋‹ค๋ฉด product_ id ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค. 1ํ–‰ : user_id, produc.. ๊ณต๊ฐ์ˆ˜ 0 ๋Œ“๊ธ€์ˆ˜ 1 2023. 12. 23.
    ๋ฌธ์˜์•ˆ๋‚ด
    • ํ‹ฐ์Šคํ† ๋ฆฌ
    • ๋กœ๊ทธ์ธ
    • ๊ณ ๊ฐ์„ผํ„ฐ

    ํ‹ฐ์Šคํ† ๋ฆฌ๋Š” ์นด์นด์˜ค์—์„œ ์‚ฌ๋ž‘์„ ๋‹ด์•„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    ยฉ Kakao Corp.