๐ 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 ..

My Tech Blog (MySQL)
์ค๋์ ๋ช
์ธ

๐ 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)`๋ฅผ ๋ง๋ค์ด ๋ณผ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ด์ง ์ฒ๋ฆฌ์์ ํ์ด์ง ๋ฒํธ๋ฅผ ๊ธฐ์ค์ผ..