Banner

My Tech Blog (MySQL)

์˜ค๋Š˜์˜ ๋ช…์–ธ
๐Ÿ“‘ 1. ๋ฌธ์ œ์„ค๋ช…โŒ 2. ์‹คํŒจํ•œ ์‹œ๋„์ฝ”๋“œ๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ ์ •๋‹ต ์ฒ˜๋ฆฌ X์ด์œ : CAR_ID ์ค‘๋ณต๋จSELECT A.Car_idFROM Car_rental_company_car A JOIN Car_rental_company_rental_history B ON A.Car_id = B.Car_idWHERE A.Car_type = '์„ธ๋‹จ' AND B.Start_date BETWEEN '2022-10-01' AND '2022-10-31'ORDER BY A.Car_id DESC;โญ 3. ์ •๋‹ต์ฝ”๋“œCAR_ID ์ค‘๋ณต์ด ์—†์–ด์•ผ ํ•˜๋ฉฐ -> DISTINCT๋Œ€์—ฌ ๊ธฐ๋ก์ด ์žˆ๋Š” -> ON A.CAR_ID = B.CAR_IDSELECT DISTINCT(A.Car_id)FROM ..
๐Ÿ“‘ 1. ๋ฌธ์ œ์„ค๋ช…โญ 2. ์ •๋‹ต์ฝ”๋“œ์ถœ๊ณ ์ผ์ด 2022-05-01 ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด '์ถœ๊ณ ์™„๋ฃŒ'๋Šฆ์œผ๋ฉด ์ถœ๊ณ  ๋Œ€๊ธฐ, ์—†์œผ๋ฉด ์ถœ๊ณ  ๋ฏธ์ •์ด๊ณ  ํ•ด๋‹น ์ปฌ๋Ÿผ๋ช…์€ ์ถœ๊ณ ์—ฌ๋ถ€๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์„ค์ •์–ด๋ ค์šด ๋ถ€๋ถ„์€ ์—†๋Š” ์‰ฌ์šด ๋ฌธ์ œ๐ŸฅณSELECT Order_id, Product_id, DATE_FORMAT(Out_date,'%Y-%m-%d') AS Out_date, CASE WHEN Out_date '2022-05-01' THEN '์ถœ๊ณ ๋Œ€๊ธฐ' ELSE '์ถœ๊ณ ๋ฏธ์ •'END AS ์ถœ๊ณ ์—ฌ๋ถ€FROM Food_orderORDER BY Order_id;
๐Ÿ“‘ 1. ๋ฌธ์ œ์„ค๋ช…โญ 2. ์ •๋‹ต์ฝ”๋“œSELECT Animal_id, name, CASE WHEN Sex_upon_intake LIKE '%Neutered%' OR Sex_upon_intake LIKE '%Spayed%' THEN 'O' ELSE 'X' END AS ์ค‘์„ฑํ™”FROM ANIMAL_INSORDER BY ANIMAL_ID; ๐Ÿ˜Š 3. TMIANSI SQL ํ‘œ์ค€์—์„œ๋Š” ALIAS ์— ์ž‘์€๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์ง€๋งŒ ์จ๋„ ์ƒ๊ด€์€ ์—†๋‹ค. (๋‚˜๋Š” ๋”ฐ์˜ดํ‘œ ์ผ์Œ)SELECT Animal_id, name, CASE WHEN Sex_upon_intake LIKE '%Neutered%' ..
๐Ÿ“‘ 1. ๋ฌธ์ œ์„ค๋ช…โŒ ์‹คํŒจํ•œ ์‹œ๋„์ด๋ฆ„์˜ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ถ€๋ถ„์ด  ๋ฌธ์ œ์˜ ํ•ต์‹ฌ 1์ฐจ ์‹œ๋„ ์‹คํŒจWHERE ์ ˆ์—์„œ `LOWER(NAME)` ํ•ด ์ฃผ์—ˆ์œผ๋‚˜ ํ‹€๋ฆผ์ฟผ๋ฆฌ๋Š” ๋Œ์•„๊ฐ€๊ณ  ๊ฒฐ๊ณผ๋Š” ๋‚˜์˜ค์ง€๋งŒ ๊ฒฐ๊ตญ WHERE์ ˆ์—์„œ LOWER()๊ณผ LIKE๋ฅผ ํ•จ๊ป˜ ์“ด ๊ฒƒ์€ ๋ถˆํ•„์š”ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. MySQL์—์„œ LIKE ์—ฐ์‚ฐ์ž๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š๋Š”๋‹ค. SELECT ANIMAL_ID, NAMEFROM ANIMAL_INSWHERE LOWER(ANIMAL_TYPE) = 'dog' AND LOWER(NAME) LIKE '%el%'ORDER BY NAME DESC; 2์ฐจ ์‹œ๋„ ์‹คํŒจ์ด๋ฒˆ์—๋Š” ORDER BY์ ˆ์— LOWER() ํ•จ์ˆ˜๋ฅผ ์จ์„œ ์ •๋ ฌํ–ˆ๋”๋‹ˆ ํ‹€๋ ธ๋‹ค๊ณ  ํ•จ.WHERE ์ ˆ์ด๋ž‘ ์ •๋ ฌ์ด๋ž‘ ๋ณ„๊ฐœ๋‹ˆ๊นŒ ์ •๋ ฌ์—๋Š” LOW..
๐Ÿ“‘ 1. ํŠน์ • ์˜ต์…˜์ด ํฌํ•จ๋œ ์ž๋™์ฐจ ๋ฆฌ์ŠคํŠธ ๊ตฌํ•˜๊ธฐ ๋ฌธ์ œCAR_RENTAL_COMPANY_CAR ํ…Œ์ด๋ธ”์—์„œ '๋„ค๋น„๊ฒŒ์ด์…˜' ์˜ต์…˜์ด ํฌํ•จ๋œ ์ž๋™์ฐจ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ๊ฒฐ๊ณผ๋Š” ์ž๋™์ฐจ ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”. โญ ์ •๋‹ต์ฝ”๋“œSELECT * FROM CAR_RENTAL_COMPANY_CARWHERE OPTIONS LIKE '%๋„ค๋น„๊ฒŒ์ด์…˜%'ORDER BY CAR_ID DESC;๐Ÿ“‘ 2. ์ž๋™์ฐจ ๋Œ€์—ฌ ๊ธฐ๋ก์—์„œ ์žฅ๊ธฐ/๋‹จ๊ธฐ ๋Œ€์—ฌ ๊ตฌ๋ถ„ํ•˜๊ธฐ ๐Ÿ“Œ ํ‹€๋ฆฐ์ฝ”๋“œSELECT HISTORY_ID, CAR_ID, DATE_FORMAT(START_DATE, '%Y-%m-%d'), DATE_FORMAT(END_DATE, '%Y-%m-%d'), CASE WHEN DATEDIFF(END_DATE..
๐Ÿ“‘ 1. ๋ฌธ์ œ์„ค๋ช…๐Ÿ’ก 2. ์ ‘๊ทผ๋ฐฉ์‹์ด ๋ฌธ์ œ ํ•ต์‹ฌ์€ ์กฐ๊ฑด์— ๋”ฐ๋ผ์„œ STATUS ๋ผ๋Š” ์ปฌ๋Ÿผ์— ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค์ž๋ฐ”์—์„œ ์กฐ๊ฑด๋ฌธ์œผ๋กœ IF๋‚˜ CASE๋ฌธ ์“ฐ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ MySQL ์—์„œ๋Š” SELECT ์ ˆ์— CASE ๋ฌธ์„ ์จ ์ค„ ์ˆ˜ ์žˆ๋‹ค.CASE WHEN ์ปฌ๋Ÿผ๋ช… = '์กฐ๊ฑด' THEN '๊ฒฐ๊ณผ๊ฐ’' ํ•ด ์ฃผ๋ฉด ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋„์ถœ๋œ๋‹ค.๊ทธ๋ฆฌ๊ณ  CASE ๋ฌธ์„ ๋๋‚ผ ๋•Œ๋Š” END AS ๋ณ„์นญ์„ ์‚ฌ์šฉํ•œ๋‹ค ๋งŒ์•ฝ์— ๋‚˜์—ดํ•œ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์˜ ๊ธฐ๋ณธ ๊ฐ’์„ ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด WHEN ๋Œ€์‹  ELSE ์ ˆ์— ๊ธฐ๋ณธ๊ฐ’์„ ์„ธํŒ…ํ•ด ์ฃผ๋ฉด ๋œ๋‹ค. โญ 3. ์ •๋‹ต์ฝ”๋“œ๊ณ„์† ํ‹€๋ ค์„œ ์ถœ๋ ฅ์€ ์ž˜ ๋˜๋Š”๋ฐ ์™œ ํ‹€๋ฆฌ๋‚˜ ํ–ˆ๋”๋‹ˆ MySQL ์—์„œ ๊ธฐ๋ณธ๊ฐ’์€ ์˜ค๋ฆ„์ฐจ์ˆœ์ด์—ˆ๋‹ค์ฒ˜์Œ์— ๋‚ด๋ฆผ์ฐจ์ˆœ์ด ๊ธฐ๋ณธ๊ฐ’์ด๋ผ ์ƒ๊ฐํ•˜๊ณ  ์ƒ๋žตํ–ˆ์ŒORDER BY BOARD_ID;๋งŒ ์ผ๋”๋‹ˆ ๊ณ„..
๐Ÿ“‘ 1. ๋ฌธ์ œ์„ค๋ช…๐Ÿ’ก 2. ์ ‘๊ทผ๋ฐฉ์‹WHERE์ ˆ์ด๋ž‘ HAVING ์ ˆ ์“ฐ์ž„์ด ๋„ˆ๋ฌด๋„ˆ๋ฌด ํ—ท๊ฐˆ๋ฆฐ๋‹ค.  ์™œ HAVING์„ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€? ์ด ๋ฌธ์ œ์—์„œ๋Š” ํ‰๊ท  ๋Œ€์—ฌ ๊ธฐ๊ฐ„(AVG)์„ ๊ณ„์‚ฐํ•œ ํ›„ ํ•ด๋‹น ๊ฐ’์ด 7 ์ด์ƒ์ธ ๊ทธ๋ฃน๋งŒ ํ•„ํ„ฐ๋งํ•ด์•ผ ํ•œ๋‹ค.ํ‰๊ท ์„ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด ๋จผ์ € CAR_ID ๋ณ„๋กœ ๊ทธ๋ฃนํ™”๋ฅผ ํ•ด์•ผํ•œ๋‹ค.์ดํ›„์— ์กฐ๊ฑด์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ ˆ์ด ๋ฐ”๋กœ HAVING์ด๋‹ค.์ฆ‰, WHERE ์ ˆ๋กœ๋Š” ๊ทธ๋ฃนํ™” ์ดํ›„์˜ ์ง‘๊ณ„ ๊ฒฐ๊ณผ๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ HAVING์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์–ธ์ œ WHERE์ ˆ์„ ์จ์•ผ ํ•˜๊ณ , ์–ธ์ œ HAVING ์ ˆ์„ ์จ์•ผ ํ•˜๋Š”์ง€ ์ •๋ง ํ—ท๊ฐˆ๋ฆฐ๋‹ค.์ด๊ฑด SQL ์ฟผ๋ฆฌ๋ฌธ ์‹คํ–‰ ์ˆœ์„œ์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค.FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BYHAVING์€ GROUP BY ์ดํ›„ ์‹คํ–‰..
๊ธ€๋ชฉ๋ก๊ณผ ํŽ˜์ด์ง€๋„ค์ด์…˜(Pagination)๊ฒŒ์‹œ๋ฌผ์„ DB์—์„œ ๋ถˆ๋Ÿฌ์™€ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋ ค๋ฉด ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์—…๊ณผ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ๋‘ ๊ฐ€์ง€๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. ๊ฒŒ์‹œ๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด ArrayList๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DB์—์„œ ์ž‘์„ฑ์ž, ์ œ๋ชฉ ๋“ฑ ๊ฒŒ์‹œ๊ธ€์˜ ์ฃผ์š” ์ •๋ณด๋ฅผ ํฌํ•จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. ์ด ๋•Œ ์ค‘์š”ํ•œ ์ ์€ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ์ด๋‹ค. ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ๋Š” ํ•œ ํŽ˜์ด์ง€์— ๋ช‡ ๊ฐœ์˜ ๊ฒŒ์‹œ๊ธ€์„ ๋ณด์—ฌ์ค„์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ณผ์ •์ด๋ฉฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ํ•œ ํŽ˜์ด์ง€์— ์ด 10๊ฐœ์˜ ๊ฒŒ์‹œ๊ธ€์„ ๊ฐ€์ ธ์˜ค๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ `BbsDAO`์— ํŠน์ • ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ(pageNumber)์— ํ•ด๋‹นํ•˜๋Š” ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ โšก `getList(int pageNumber)`๋ฅผ ๋งŒ๋“ค์–ด ๋ณผ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ์—์„œ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ๊ธฐ์ค€์œผ..
์ƒ๋‹จ์œผ๋กœ