Banner

My Tech Blog (MySQL)

์˜ค๋Š˜์˜ ๋ช…์–ธ
" ์–ธ์ œ๋‚˜ ๋ถˆ๊ฐ€๋Šฅํ•ด ๋ณด์ด๋˜ ์ผ๋„ ์ด๋ฃจ์–ด์ง€๊ธฐ ์ „๊นŒ์ง€๋Š” ๊ทธ๋ ‡๋‹ค. "
- ๋„ฌ์Šจ ๋งŒ๋ธ๋ผ (๋‚จ์•„ํ”„๋ฆฌ์นด ๊ณตํ™”๊ตญ์˜ ์ •์น˜๊ฐ€, ์ธ๊ถŒ ์šด๋™๊ฐ€)
๐Ÿ  ๊ฐ€์žฅ ํฐ ๋ฌผ๊ณ ๊ธฐ 10๋งˆ๋ฆฌ ๊ตฌํ•˜๊ธฐ  ๊ฐ€์žฅ ํฐ ๋ฌผ๊ณ ๊ธฐ 10๋งˆ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๋ผ๊ณ  ํ–ˆ์œผ๋‹ˆ๊นŒ, ROWNUM์„์จ์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ROWNUM์€ Oracle์—๋งŒ ์žˆ๋Š” ๋ฌธ๋ฒ•์ด๊ณ , MySQL์—์„œ๋Š” LIMIT ํ‚ค์›Œ๋“œ๋กœ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ฃผ์˜ํ•  ์ , ROWNUM / LIMIT ์€ ์„œ๋ธŒ์ฟผ๋ฆฌ(subquery)์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์•ˆ ์“ฐ๋ฉด WHERE์ ˆ์ด SELECT์ ˆ๋ณด๋‹ค ๋จผ์ € ์ˆ˜ํ–‰๋˜์–ด ์›ํ•˜๋Š” ๊ฐ’์ด ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค.  ๊ธธ์ด๊ฐ€ ํฐ ์ˆœ์œผ๋กœ 10๊ฐœ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š”๋ฐ, ๊ธธ์ด์™€ ์ƒ๊ด€ ์—†์ด ๋žœ๋คํ•œ ๊ฐ’ 10๊ฐœ๊ฐ€ ์„ ํƒ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์€ SQL๋ฌธ์˜ ์‹คํ–‰์ˆœ์„œ ๋•Œ๋ฌธ์ด๋‹ค. SQL์˜ ์‹คํ–‰ ์ˆœ์„œFROM - WHERE(ROWNUM ์‹คํ–‰) - GROUP BY - HAVING - SELECT - ORDER BY LENGTH๋ฅผ ํฐ ๊ฐ’๋ถ€ํ„ฐ ์ •..
์‰ฌ์šด ๋ฌธ์ œ๋Š” ํ•œ ๋ฒˆ์— ๋‘ ์„ธ๊ฐœ์”ฉ ํฌ์ŠคํŒ… ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ์ด ๋ฌธ์ œ๋Š” ์ƒ๊ฐ ํ•ด ๋ณผ ์—ฌ์ง€๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜๋งŒ ์˜ฌ๋ฆฐ๋‹ค.๋…ผ๋ž€์˜ ์—ฌ์ง€๊ฐ€ ์žˆ๊ณ  ๋งŽ์€ ์˜๋ฌธ์ด ์ œ๊ธฐ๋˜๋Š” ๋ฌธ์ œ์ธ๋ฐ ๊ฐ™์€ ๊ณ ๋ฏผ์„ ํ•˜์‹  ๋ถ„๋“ค๊ป˜ ์ด ๋ฌธ์ œ์™€ ๊ด€๋ จํ•ด์„œ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•ด๋ณด๊ณ  ์กฐ์‚ฌํ•œ ๋‚ด์šฉ์„ ๊ณต์œ ๋ฅผ ํ•ด๋ณด๊ณ ์žํ•œ๋‹ค. ๋‚ด๊ฐ€ ๊ถ๊ธˆํ–ˆ๋˜ ์ ์€ ์•„๋ž˜ ๋‘ ๊ฐ€์ง€์˜€๋‹ค. - "LENGTH ์— NULL ๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ์กฐ๊ฑด์€ ์™œ ํ•„์š”ํ•œ ๊ฒƒ์ธ๊ฐ€์š”?- ์™œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค 2๋งŒ ์‹คํŒจ๊ฐ€ ๋œจ๋Š” ๊ฒƒ์ธ๊ฐ€์š”? ๋‚ด์ง€ 10cm ์ดํ•˜์ธ๋ฐ ์™œ ์ •๋‹ต์ฝ”๋“œ์—์„œ๋Š” ` ์ด ํฌ์ŠคํŒ…์— ๋Œ€ํ•ด์„œ๋Š” ์œ„ ์งˆ๋ฌธ๋“ค์— ๋Œ€ํ•ด ๋ช…์พŒํ•œ ํ•ด๋‹ต์„ ํ•  ๊ฒƒ์ด๋‹ค์ฒซ๋ฒˆ์งธ ์งˆ๋ฌธ์€ ๋ฌธ์ œ๋ฅผ ์ž์„ธํžˆ ์ฝ๊ณ  ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๊ณ  ๋‘๋ฒˆ์งธ ์งˆ๋ฌธ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์„ค๋ช…์„ ์ฐธ๊ณ ํ–ˆ๋‹ค. ๐Ÿ  ์ž”์ฑ™์ด ์žก์€ ์ˆ˜ ๊ตฌํ•˜๊ธฐ LENGTH ์ปฌ๋Ÿผ์— NULL๊ฐ’์ด..
๐Ÿ“‘ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ ์กฐํšŒํ•˜๊ธฐ10์ดˆ์ปท ๋ฌธ์ œSELECT *FROM ANIMAL_INSORDER BY ANIMAL_ID; ๐Ÿฆ ์กฐ๊ฑด์— ๋งž๋Š” ํšŒ์›์ˆ˜ ๊ตฌํ•˜๊ธฐSELECT COUNT(*)FROM USER_INFOWHERE YEAR(JOINED) = '2021' AND AGE BETWEEN 20 AND 29;๐Ÿ’ป Python ๊ฐœ๋ฐœ์ž ์ฐพ๊ธฐ ๋ณดํ†ต ์Œฉ์ดˆ๋ณด๋“ค์ด ํ‘ธ๋Š” ๋ฐฉ๋ฒ•SELECT ID, EMAIL, FIRST_NAME, LAST_NAMEFROM DEVELOPER_INFOSWHERE SKILL_1 = 'Python' OR SKILL_2 = 'Python' OR SKILL_3 = 'Python'ORDER BY ID; ํ•œ ๋ฒˆ ์ƒ๊ฐ ํ•ด ๋ณด๊ณ  ํ’€๋ฉด ์ด๋ ‡๊ฒŒ ใ…Žใ…Žใ…ŽSELECT ID, EMAIL, FIRST_NAME, L..
๐Ÿ“š์กฐ๊ฑด์— ๋งž๋Š” ๋„์„œ ๋ฆฌ์ŠคํŠธ ์ถœ๋ ฅํ•˜๊ธฐ ์•„๋ž˜๋Š” ์ •๋‹ต์ฒ˜๋ฆฌ ๋˜๋Š” ๋ชจ๋‘ ๋™์ผํ•œ ์ฝ”๋“œ์ด๋‹ค BETWEEN ์—ฐ์‚ฐ์ž๋กœ ํ’€๊ธฐSELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATEFROM BOOKWHERE PUBLISHED_DATE BETWEEN '20210101' AND '20211231' AND CATEGORY LIKE '์ธ๋ฌธ'ORDER BY PUBLISHED_DATE; โญโญโญYEAR() ํ•จ์ˆ˜๋กœ ํ’€๊ธฐ (์ œ์ผ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ)SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATEFROM BOOKWHERE YEAR(PUBLISHED_DATE) = 2021 ..
๐Ÿฆ ์ธ๊ธฐ ์žˆ๋Š” ์•„์ด์Šคํฌ๋ฆผ ๋„ˆ๋ฌด ์‰ฌ์›Œ์„œ ์„ค๋ช…ํ•  ๊ฒƒ๋„ ์—†๋‹ค...SELECT FLAVORFROM FIRST_HALFORDER BY TOTAL_ORDER DESC, SHIPMENT_ID; ๐Ÿญ ๊ฐ•์›๋„์— ์œ„์น˜ํ•œ ์ƒ์‚ฐ๊ณต์žฅ ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐSELECT FACTORY_ID, FACTORY_NAME, ADDRESSFROM FOOD_FACTORYWHERE ADDRESS LIKE '๊ฐ•์›๋„%'ORDER BY FACTORY_ID;๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ‘ง๐Ÿปโ€๐Ÿ‘ง๐Ÿป 12์„ธ ์ดํ•˜์ธ ์—ฌ์ž ํ™˜์ž ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO,'NONE') AS TLNOFROM PATIENTWHERE AGE  * SELECT์ ˆ์— ํ•จ์ˆ˜ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ปฌ๋Ÿผ๋ช…์ด ํ•จ์ˆ˜๋ช…์œผ๋กœ ๋‚˜์˜ค๋ฏ€๋กœ ALIAS ๋ถ™์—ฌ์ฃผ๋Š”๊ฑฐ..
1. ๋ฌธ์ œ์„ค๋ช…๋‹ค์Œ์€ ์ค‘๊ณ ๊ฑฐ๋ž˜ ๊ฒŒ์‹œํŒ ์ •๋ณด๋ฅผ ๋‹ด์€ USED_GOODS_BOARD ํ…Œ์ด๋ธ”๊ณผ ์ค‘๊ณ ๊ฑฐ๋ž˜ ๊ฒŒ์‹œํŒ ์ฒจ๋ถ€ํŒŒ์ผ ์ •๋ณด๋ฅผ ๋‹ด์€ USED_GOODS_REPLY ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. USED_GOODS_BOARD ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS์€ ๊ฒŒ์‹œ๊ธ€ ID, ์ž‘์„ฑ์ž ID, ๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ, ๊ฒŒ์‹œ๊ธ€ ๋‚ด์šฉ, ๊ฐ€๊ฒฉ, ์ž‘์„ฑ์ผ, ๊ฑฐ๋ž˜์ƒํƒœ, ์กฐํšŒ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.  USED_GOODS_REPLY ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ REPLY_ID, BOARD_ID, WRITER_ID, CONTENTS, CREATED_DATE๋Š” ๊ฐ๊ฐ ๋Œ“๊ธ€ ID, ๊ฒŒ์‹œ๊ธ€ ID, ์ž‘์„ฑ์ž ID, ๋Œ“๊ธ€ ๋‚ด์šฉ, ์ž‘์„ฑ์ผ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.  2. ๋ฌธ์ œํ’€์ด ..
โค๏ธ ๋ฌธ์ œ์„ค๋ช…ANIMAL_INS ํ…Œ์ด๋ธ”์€ ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ANIMAL_INS ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋Š” ๊ฐ๊ฐ ๋™๋ฌผ์˜ ์•„์ด๋””, ์ƒ๋ฌผ ์ข…, ๋ณดํ˜ธ ์‹œ์ž‘์ผ, ๋ณดํ˜ธ ์‹œ์ž‘ ์‹œ ์ƒํƒœ, ์ด๋ฆ„, ์„ฑ๋ณ„ ๋ฐ ์ค‘์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.  ๐Ÿ’› ๋ฌธ์ œ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ ์ค‘ ์ Š์€ ๋™๋ฌผ1์˜ ์•„์ด๋””์™€ ์ด๋ฆ„์„ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ์•„์ด๋”” ์ˆœ์œผ๋กœ ์กฐํšŒํ•ด์ฃผ์„ธ์š”. INTAKE_CONDITION์ด Aged๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ๋ฅผ ๋œปํ•จ  ๐Ÿ’š ์ถœ๋ ฅ ์˜ˆ์‹œSQL์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.โ€‹๐Ÿ’œ ํ’€์ด- ํ•œ๋ฒˆ์— ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋˜ ๋ฌธ์ œ
โค๏ธ ๋ฌธ์ œ์„ค๋ช…ANIMAL_INS ํ…Œ์ด๋ธ”์€ ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ANIMAL_INS ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋Š” ๊ฐ๊ฐ ๋™๋ฌผ์˜ ์•„์ด๋””, ์ƒ๋ฌผ ์ข…, ๋ณดํ˜ธ ์‹œ์ž‘์ผ, ๋ณดํ˜ธ ์‹œ์ž‘ ์‹œ ์ƒํƒœ, ์ด๋ฆ„, ์„ฑ๋ณ„ ๋ฐ ์ค‘์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.  ๐Ÿ’› ๋ฌธ์ œ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ ์ค‘ ์•„ํ”ˆ ๋™๋ฌผ์˜ ์•„์ด๋””์™€ ์ด๋ฆ„์„ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ์•„์ด๋”” ์ˆœ์œผ๋กœ ์กฐํšŒํ•ด์ฃผ์„ธ์š”.๋ณธ ๋ฌธ์ œ๋Š” Kaggle์˜ "Austin Animal Center Shelter Intakes and Outcomes"์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์˜€์œผ๋ฉฐ ODbL์˜ ์ ์šฉ์„ ๋ฐ›์Šต๋‹ˆ..
์ƒ๋‹จ์œผ๋กœ