Banner

My Tech Blog (SQL)

1. ๊ฒŒ์‹œ๊ธ€  ์ˆ˜์ •ํ•˜๋Š” update ๋ฉ”์„œ๋“œ ๋งŒ๋“ค๊ธฐBbsDAO ํด๋ž˜์Šค ํ•˜๋‹จ์— ๋ฉ”์„œ๋“œ ์ถ”๊ฐ€public int update(int bbsID, String bbsTitle, String bbsContent) { String SQL = "UPDATE BBS SET bbsTitle = ?, bbsContent = ? WHERE bbsID = ?"; PreparedStatement psmt = null; try { psmt = conn.prepareStatement(SQL); psmt.setString(1, bbsTitle); psmt.setString(2, bbsContent); psmt.setInt(3, bbsID); return p..
๐Ÿ“‘ 1. ๋ฌธ์ œ์„ค๋ช…๐Ÿ’ก 2. ์ ‘๊ทผ๋ฐฉ์‹FILE_PATH ์ถœ๋ ฅ ์˜ˆ์‹œ๋ฅผ ๋ณด๊ณ  '/home/grep/src/' + F.BOARD_ID + '/' + F.FILE_ID + F.FILE_NAME + F.FILE_EXT์ด๋ ‡๊ฒŒ ๋ฌธ์ž์—ด์ด ๊ฒฐํ•ฉ๋œ ๊ตฌ์กฐ๋ผ๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. CONCAT์œผ๋กœ ํ•ด๋‹น ๋ฌธ์ž์—ด์„ ๋ชจ๋‘ ๊ฒฐํ•ฉ ํ•ด ์ค€๋‹ค. ์ฒ˜์Œ์—๋Š” ํ—ท๊ฐˆ๋ ค์„œ + ์—ฐ์‚ฐ์ž๋กœ ํ–ˆ๋Š”๋ฐ ,๋กœ ๊ฒฐํ•ฉ์„ ํ•ด ์ค˜์•ผ ํ•œ๋‹ค.  ๋‘ ํ…Œ์ด๋ธ” ์กฐ์ธํ•  ๋•Œ๋Š” BOARD_ID ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ์กฐ์ธ ํ•ด ์ค€๋‹ค. WHERE ์ ˆ์—์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์“ด๋‹ค. ๋จผ์ € USED_GOODS_BOARD๋ฅผ ์กฐํšŒ์ˆ˜ ์ปฌ๋Ÿผ(VIEW) ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ํ•ด ์ฃผ๊ณ  ๊ทธ ์ค‘ ๊ฐ€์žฅ ๋†’์€ ๊ฒƒ๋งŒ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋‹ˆ๊นŒ LIMIT1 ์„ ๊ฑธ์–ด์ค€๋‹ค.  ๋งˆ์ง€๋ง‰์œผ๋กœ FILE_ID๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๋ฉด ๋~! ์‰ฝ๋‹คโญ 3. ์ •๋‹ต์ฝ”๋“œ..
1. ๋ฌธ์ œ ์„ค๋ช…2. ์ ‘๊ทผ๋ฐฉ์‹ECOLI_DATA๋Š” ๋ถ€๋ชจ-์ž์‹๊ฐ„์˜ ๊ณ„์ธต ๊ด€๊ณ„๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ์„ธ๋Œ€๋ณ„๋กœ ์ž์‹์ด ์—†๋Š” ๊ฐœ์ฒด์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋ ค๋ฉด ์žฌ๊ท€ CTE๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋Œ€์žฅ๊ท ์˜ ์„ธ๋Œ€generation)๋ฅผ ๊ณ„์‚ฐํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. WITH RECURSIVE ๋ธ”๋ก์„ ๋จผ์ € ์ง€์ • ํ•ด ์ฃผ๊ณ , ๋ธ”๋ก ๋ฐ”๊นฅ์—์„œ ์„ธ๋Œ€๋ณ„๋กœ ์ž์‹์ด ์—†๋Š” ๊ฐœ์ฒด์ˆ˜๋ฅผ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์งœ ์ฃผ๋ฉด ๋œ๋‹ค. WITH RECURSIVE ๋ธ”๋ก์€ ๋˜ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋‰˜๋Š”๋ฐ, ๋จผ์ €, PARENT_ID IS NULL์ธ ์กฐ๊ฑด์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ด์„œ 1์„ธ๋Œ€(AS GENERATION)๋ฅผ ๊ทœ์ • ํ•ด ์ค€๋‹ค. ๋‘ ๋ฒˆ์งธ๋กœ ํ•  ์ผ์€, ์ด 1์„ธ๋Œ€ ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ +1์„ ํ•ด์„œ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์กฐํšŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ๋ถ€๋ชจ ๊ฐœ์ฒด๋กœ๋ถ€ํ„ฐ ์ž์‹์˜ ์„ธ๋Œ€ ์ˆ˜๋ฅผ ๊ณ„์‚ฐ ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. Generation ..
์–ด๋ ค์›Œ์„œ ๋ฏธ๋ฃจ๋‹ค๊ฐ€ ๋ชป ํ‘ผ ๋ฌธ์ œ๊ฐ€ 2๊ฐœ ์žˆ์—ˆ๋‹ค. Lv4 ๋ฌธ์ œ 1๊ฐœ๋ž‘ Lv5 ๋ฌธ์ œ 1๊ฐœ์ด๋‹ค. ๋‚œ์ด๋„ ์ตœ์ƒ์ธ ๋งŒํผ, ๋ฌธ์ œ ์ฝ๊ธฐ๋„ ์ „์— ํ’€๊ธฐ๊ฐ€ ๋‘๋ ค์šด ๋งˆ์Œ์ด ์žˆ์—ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์™ ์ง€ ์˜ค๋žซ ๋™์•ˆ ๋…ธํŠธ๋ถ ์•ž์— ์•‰์•„์„œ ๋จธ๋ฆฌ ๋งŽ์ด ์“ฐ๊ณ  ๊ณ ๋ฏผํ•ด ๋ด์•ผ ๋  ๊ฒƒ ๊ฐ™์•„์„œ ํ•˜๊ธฐ์‹ซ์—ˆ๋‹ค. MySQL์—์„œ๋Š” START WITH CONNECT BY๊ฐ€ ์•ˆ๋œ๋‹ค๋Š” ๊ฑฐ ์•Œ๊ณ ๋ถ€ํ„ฐ๋Š” ๋˜ ์ƒˆ๋กœ์šด๊ฑฐ ๋ฐฐ์šฐ๊ธฐ ์‹ซ์–ด์„œ ๋ฏธ๋ค˜๋Š”๋ฐ ์˜ค๋Š˜ ์–ผ๋ฅธ ๋๋‚ด๋ฒ„๋ฆฌ๊ณ  ์ž์•ผ์ง€1. ๋ฌธ์ œ์„ค๋ช…2. ์ ‘๊ทผ๋ฐฉ์‹์ฒ˜์Œ์—๋Š” ์–ด๋ ค์›Œ ๋ณด์—ฌ์„œ ๋ฌธ์ œ๋ฅผ ์ฝ๊ณ  ๋ญ˜ ๊ตฌํ•ด์•ผ ํ•˜๋Š”์ง€ ์ƒ๊ฐ์˜ ํ๋ฆ„์„ ํ•œ๊ธ€๋กœ ๋ฐ›์•„ ์ ์–ด ๋ดค๋‹ค. PARENT_ID๊ฐ€ NULL์ด๋ฉด 1์„ธ๋Œ€์ด๋‹ค. PARENT_ID๊ฐ€ NULL์ธ ID๋ฅผ ๋ถ€๋ชจ๋กœ ๊ฐ€์ง€๋Š” ํ–‰์ด 2์„ธ๋Œ€ ์ด๋‹ค. PARENT_ID๊ฐ€ NULL์ธ ID๋ฅผ ๋ถ€๋ชจ๋กœ ๊ฐ€์ง€๋Š” ํ–‰์˜ ID๋ฅผ ๋ถ€๋ชจ๋กœ ๊ฐ€..
1. ๋ฌธ์ œ ์„ค๋ช… 2. ์ ‘๊ทผ ๋ฐฉ๋ฒ•๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ๋“  ์ƒ๊ฐ์€ `์—ฐ๊ด€ ์ปฌ๋Ÿผ์ด ์—†์„ ๋•Œ๋Š” ํ…Œ์ด๋ธ”์„ ์–ด๋–ป๊ฒŒ ์กฐ์ธํ•˜๋Š”๊ฐ€?` -> ๊ทธ๋ž˜์„œ ์นดํ…Œ์‹œ์•ˆ ๊ณฑ์ด ๋– ์˜ฌ๋ž๋‹ค.๋ชจ๋“  ์กฐํ•ฉ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์นดํ…Œ์‹œ์•ˆ ๊ณฑ(Cartesian Product)์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ CROSS JOIN ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.์ผ๋‹จ ์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ์ž‘์„ฑ ํ•˜๊ณ  ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰์‹œ์ผœ ๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ํ…Œ์ด๋ธ”์ด ์˜†์œผ๋กœ ๋ถ™์—ˆ๋‹ค.  ์—ฌ๊ธฐ์„œ ๋‚ ์งœ๋ณ„๋กœ GROUP BY ํ•ด ๋ณด๊ณ  ๋ญ”๊ฐ€ ํ•ด ๋ณด๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์ค‘๊ฐ„์— ๊ธฐ๊ฐ€ ๋ง‰ํžŒ ์ƒ๊ฐ์ด ๋‚ฌ๋‹ค.ํ…Œ์ด๋ธ”์„ ์˜†์ด ์•„๋‹ˆ๋ผ ์•„๋ž˜๋กœ ๋ถ™์ด๋ฉด ๋˜๊ฒ ๋‹ค. ๊ทธ๋Ÿผ UNION ALL์„ ์จ ๋ณด๋Š”๊ฒŒ ์–ด๋–จ๊นŒ?๊ทธ๋ž˜์„œ ์•„๋ž˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ™์ด๋Š”๊ฒŒ ์ข‹๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.๊ทธ๋ฆฌ๊ณ  ์ค‘๋ณต๊ฐ’์„ ์—†์• ๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— UNION์ด ์•„๋‹ˆ๋ผ UNION ALL... ์„ค๋งˆ...!!  SELECT SALES_DATE..
๋‚œ์ด๋„ 3์ด๋ผ ์–ด๋ ค์šธ ์ค„ ์•Œ์•˜๋Š”๋ฐ ๋„ˆ๋ฌด ์‰ฌ์›Œ์„œ ๊ทธ๋ƒฅ ์ฝ”๋“œ๋งŒ ํฌ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์žฅ๊ท ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•˜๊ธฐ 1 ์ •๋‹ต์ฝ”๋“œSELECT ID, SIZEFROM ( SELECT ID, CASE WHEN SIZE_OF_COLONY > 1000 THEN 'HIGH' WHEN SIZE_OF_COLONY ๋Œ€์žฅ๊ท ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•˜๊ธฐ 2 ๋ฌธ์ œ๋Œ€์žฅ๊ท  ๊ฐœ์ฒด์˜ ํฌ๊ธฐ๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ–ˆ์„ ๋•Œ ์ƒ์œ„ 0% ~ 25% ๋ฅผ 'CRITICAL', 26% ~ 50% ๋ฅผ 'HIGH', 51% ~ 75% ๋ฅผ 'MEDIUM', 76% ~ 100% ๋ฅผ 'LOW' ๋ผ๊ณ  ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์žฅ๊ท  ๊ฐœ์ฒด์˜ ID(ID) ์™€ ๋ถ„๋ฅ˜๋œ ์ด๋ฆ„(COLONY_NAME)์„ ์ถœ๋ ฅํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ๊ฐœ์ฒด์˜ ID ์— ๋Œ€ํ•ด ์˜ค๋ฆ„..
1. ๋ฌธ์ œ์„ค๋ช… 2. ์ ‘๊ทผ๋ฐฉ์‹์ด๋ ‡๊ฒŒ ๊นŒ์ง€ ์˜ค๋ž˜ ๋ถ™์žก๊ณ  ์žˆ์„ ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ๋ฐ ์˜ค๋Š˜์€ ํ•˜๊ธฐ ์‹ซ์–ด์„œ ใ…‹ใ…‹ใ…‹...๊ฒŒ์œผ๋ฆ„ ์ข€ ํ”ผ์›Œ๋ดค๋‹ค. ์ฒ˜์Œ์—๋Š” ECOLI_DATA ํ…Œ์ด๋ธ” ๋‚ด์—์„œ PARENT_ID(๋ถ€๋ชจ)๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์˜ ID๊ฐ’์„ ์นด์šดํŠธ ํ•ด ์ฃผ๋ฉด ๋˜๋Š”๊ฑฐ๋‹ค ๋ผ๊ณ  ์ƒ๊ฐ ํ•ด์„œ ํ‹€๋ ธ๋‹ค. ๊ฒฐ๊ณผ์ฐฝ์„ ๋ณด๋‹ˆ ์ž์‹์ด ์žˆ๋Š” ๋ถ€๋ชจ๋“ค๋งŒ ์ถœ๋ ฅ์ด ๋˜๊ณ  ์ž์‹์ด ์—†๋Š” ๋ถ€๋ชจ๋“ค์˜ ID๊ฐ’์€ ์กฐํšŒ๊ฐ€ ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.  ๊ทธ๋ž˜์„œ LEFT JOIN์„ ํ•ด ์ฃผ์–ด์•ผ ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.์ฝ”๋“œ๋ฅผ ์ด๋ ‡๊ฒŒ ๊ณ ์ณค๋Š”๋ฐ ์ด๋ ‡๊ฒŒ ํ–ˆ๋Š”๋ฐ๋„ ๊ฒฐ๊ณผ๋Š” ๊ฐ™๋‹ค.์ด๋ ‡๊ฒŒ ๊ณ ์น˜๋ฉด์„œ ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์ด ID ๊ฐ’์„ ID๋กœ SELECTํ•˜๊ณ , ์ž์‹ ํ…Œ์ด๋ธ”์˜ PARENT_ID๋ฅผ ์นด์šดํŒ… ํ•ด ์ฃผ์—ˆ๋‹ค. ํ‹€๋ฆฐ ์ด์œ ๋Š” WHERE ์ ˆ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค.์ž์‹์ด ์—†๋Š” ๋ถ€๋ชจ๋„ ์นด์šดํŒ…์„ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—WHERE E.PARENT..
[๋ชฉ์ฐจ]1. ๊ฒฝ๊ธฐ๋„์— ์œ„์น˜ํ•œ ์‹ํ’ˆ์ฐฝ๊ณ  ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ2. ์ด๋ฆ„์ด ์—†๋Š” ๋™๋ฌผ์˜ ์•„์ด๋”” / ์ด๋ฆ„์ด ์žˆ๋Š” ๋™๋ฌผ์˜ ์•„์ด๋””3. NULL ์ฒ˜๋ฆฌํ•˜๊ธฐ4. ๋‚˜์ด ์ •๋ณด๊ฐ€ ์—†๋Š” ํšŒ์› ์ˆ˜ ๊ตฌํ•˜๊ธฐ5. ROOT ์•„์ดํ…œ ๊ตฌํ•˜๊ธฐ6. ์žก์€ ๋ฌผ๊ณ ๊ธฐ์˜ ํ‰๊ท  ๊ธธ์ด ๊ตฌํ•˜๊ธฐ7. โญ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ์ˆ˜ ์—†๋Š” ์•„์ดํ…œ ๊ตฌํ•˜๊ธฐ1. ๊ฒฝ๊ธฐ๋„์— ์œ„์น˜ํ•œ ์‹ํ’ˆ์ฐฝ๊ณ  ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐSELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, (IFNULL(FREEZER_YN,'N')) AS FREEZER_YNFROM FOOD_WAREHOUSEWHERE ADDRESS LIKE '๊ฒฝ๊ธฐ๋„%'ORDER BY WAREHOUSE_ID;2. ์ด๋ฆ„์ด ์—†๋Š” ๋™๋ฌผ์˜ ์•„์ด๋”” & ์ด๋ฆ„์ด ์žˆ๋Š” ๋™๋ฌผ์˜ ์•„์ด๋””SELECT ANIMAL_IDFROM ANIMAL_INSWHERE..
์ธ์ ˆ๋ฏธ์˜€๋˜๊ฒƒ
'SQL' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก
์ƒ๋‹จ์œผ๋กœ