MySQL ์ •๋ฆฌ

์ด๊ฑด์šฐยท2021๋…„ 7์›” 19์ผ
0
post-thumbnail

TIL 2021 - 07 - 17-19 ๐Ÿ“– !

์ด๋ฆ„์šฉ๋„์˜ˆ์‹œ
SHOW DATABASES๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋“ค์„ ๋ณด๊ธฐSHOW DATABASES;
USE๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์‚ฌ์šฉUSE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„ ;
SHOW TABLESํ…Œ์ด๋ธ” ๋ณด๊ธฐSHOW TABLES;
SHOW TABLE STATUSํ…Œ์ด๋ธ” ์ƒํƒœ๋ณด๊ธฐSHOW TABLE STATUS;
DESC ํ…Œ์ด๋ธ” ์ด๋ฆ„ํ…Œ์ด๋ธ”์˜ ๊ฐ๊ฐ์˜ ์—ด์˜ ๋Œ€ํ•œ ์ •๋ณด ๋ณด๊ธฐDESC ํ…Œ์ด๋ธ”์ด๋ฆ„ ;
SELECT * FROM๋ฐ์ดํ„ฐ์—์„œ ํ…Œ์ด๋ธ” ์ „์ฒด ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐSELECT * FROM ํ…Œ์ด๋ธ” ์ด๋ฆ„;
SELECT ์„ค์ • FROM๋ฐ์ดํ„ฐ์—์„œ ํ…Œ์ด๋ธ”์˜ ์„ค์ • ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐSELECT name FROM ํ…Œ์ด๋ธ” ์ด๋ฆ„; (name์ด๋ผ๋Š” ์ด๋ฆ„๋งŒ ๋ณด๊ณ ์‹ถ์„ ๊ฒฝ์šฐ์˜ ์˜ˆ)
WHERE ์กฐ๊ฑดํŠน์ • ์กฐ๊ฑด๋งŒ ์ฃผ์–ด์„œ ๋ณด๊ณ ์‹ถ๋‹ค๋ฉด ์“ด๋‹ค์˜ˆ WHERE ์ธ๊ตฌ์ˆ˜ > 800 (์ธ๊ตฌ์ˆ˜๊ฐ€ 800๋ช… ์ด์ƒ์ธ๊ฒฝ์šฐ๋งŒ ๋ณด์—ฌ์ค€๋‹ค) ์ฃผ๋กœ SELECT๋ฌธ ๋’ค์— ์“ฐ์ž„
WHERE ์กฐ๊ฑด ๋‘๊ฐœํŠน์ • ์กฐ๊ฑด๋งŒ ์ฃผ์–ด์„œ ๋ณด๊ณ ์‹ถ๋‹ค๋ฉด ์“ด๋‹ค์˜ˆ WHERE ์ธ๊ตฌ์ˆ˜ > 800 AND ์ธ๊ตฌ์ˆ˜ < 1000 (์ธ๊ตฌ์ˆ˜๊ฐ€ 800๋ช… ์ด์ƒ 1000์ดํ•˜์ธ ๊ฒƒ๋งŒ ๋ณด์—ฌ์คŒ) ์ฃผ๋กœ SELECT๋ฌธ ๋’ค์— ์“ฐ์ž„
WHERE ์กฐ๊ฑด BETWEENํŠน์ • ์กฐ๊ฑด๋งŒ ์ฃผ์–ด์„œ ๋ณด๊ณ ์‹ถ๋‹ค๋ฉด ์“ด๋‹ค์˜ˆ WHERE ์ธ๊ตฌ์ˆ˜ BETWEEN 700 AND 800 (์ธ๊ตฌ์ˆ˜๊ฐ€ 700๋ช… ์—์„œ 800๋ช… ์‚ฌ์ด์˜ ๊ฒฝ์šฐ๋งŒ ๋ณด์—ฌ์ค€๋‹ค) ์ฃผ๋กœ SELECT๋ฌธ ๋’ค์— ์“ฐ์ž„
WHERE ... IN์ด์ƒ์ ์ธ ๊ฐ’์˜ ์กฐ๊ฑด์„ ์ฐพ๊ณ ์‹ถ์„๋•Œ ์‚ฌ์šฉ์˜ˆ WHERE Name IN ('์„œ์šธ', '๋‰ด์š•', '๋„์ฟ„') ๋ผ๋ฉด ์ด๋ฆ„์ด ์„œ์šธ๊ณผ ๋‰ด์š• ๋„์ฟ„ ์ธ๊ฒƒ๋“ค๋งŒ ๋ณด์—ฌ์ค€๋‹ค
WHERE ... LIKE๋ฌธ์ž์—ด์˜ ํŠน์ • ๋‚ด์šฉ ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ์‚ฌ์šฉ ๋ฌธ์ž ๋’ค์— %๊ฐ€ ์žˆ์œผ๋ฉด ๋ฌด์—‡์ด๋“  ํ—ˆ์šฉ ํ•œ๊ธ€์ž์™€ ๋งค์น˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” '_' ์‚ฌ์šฉWHERE Name LIKE '๋Œ€ํ•œ๋ฏผ_' ์ด๋ผ๊ณ  ํ•˜๋ฉด ๋Œ€ํ•œ๋ฏผ์„ ํฌํ•จํ•œ ๋’ค์— ๋’ท๊ธ€์ž ํ•œ๊ธ€์ž๊ฐ€ ๋” ๋ถ™์€๊ฑธ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค '๋Œ€ํ•œ๋ฏผ๊ตญ' '๋Œ€ํ•œ๋ฏผ๋™' '๋Œ€ํ•œ๋ฏผ์ˆ˜' ์ด๋Ÿฐ๊ฒƒ๋“ค์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค
WHERE ... LIKE๋ฌธ์ž์—ด์˜ ํŠน์ • ๋‚ด์šฉ ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ์‚ฌ์šฉ ๋ฌธ์ž ๋’ค์— %๊ฐ€ ์žˆ์œผ๋ฉด ๋ฌด์—‡์ด๋“  ํ—ˆ์šฉ ํ•œ๊ธ€์ž์™€ ๋งค์น˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” '_' ์‚ฌ์šฉWHERE Name LIKE '๋Œ€ํ•œ๋ฏผ%'๋ฅผ ์ž…๋ ฅํ•˜๋ฉด '๋Œ€ํ•œ๋ฏผ๊ตญ ๋งŒ์„ธ' '๋Œ€ํ•œ๋ฏผ๋™ ๋งŒ์„ธ' '๋Œ€ํ•œ๋ฏผ์ˆ˜ ๋ฐ”๋ณด' ์™€๊ฐ™์€ ๋Œ€ํ•œ๋ฏผ ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค
์„œ๋ธŒ์ฟผ๋ฆฌ WHERE ... = (SELECT ... FROM ... WHERE Name = ...)์ฟผ๋ฆฌ๋ฌธ ์•ˆ์— ๋˜ ์ฟผ๋ฆฌ๋ฌธ์ด ๋“ค์–ด์žˆ๋Š”๊ฒƒ , ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‘˜ ์ด์ƒ์ด๋˜๋ฉด ์• ๋ŸฌWHERE CountryCode = (SELECT CountryCode FROM city WHERE Name = '์„œ์šธ') ์„œ์šธ์ด๋ผ๋Š” ๋„์‹œ์˜ ๋‚˜๋ผ์ฝ”๋“œ๋ฅผ ์•Œ๊ณ  ์‹ถ์„๋•Œ
Any์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฒฐ๊ณผ์ค‘ ํ•œ๊ฐ€์ง€๋งŒ ๋งŒ์กฑํ•ด๋„ ๊ฐ€๋Šฅ ํ•œ๊ฒƒ SOME ์€ ANY ์™€ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ = ANY ๊ตฌ๋ฌธ์€ IN๊ณผ ๋™์ผํ•œ ์˜๋ฏธWHERE ์ธ๊ตฌ์ˆ˜ > ANY (SELECT ์ธ๊ตฌ์ˆ˜ FROM ๋„์‹œ WHERE ๋™๋„ค ๋‰ด์š•; ๋™๋„ค๊ฐ€ ๋‰ด์š•์ธ ๋™๋„ค์˜ ์ธ๊ตฌ์ˆ˜ ๋ณด๋‹ค ์ธ๊ตฌ์ˆ˜๊ฐ€ ๋งŽ์€ ๋„์‹œ๋ฅผ ์กฐ๊ฑด ํ•˜๋‚˜๋ผ๋„ ๋งŒ์กฑํ•˜๋ฉด ๋‹ค ์ถœ๋ ฅํ•ด์คŒ)
ALL์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋‘ ๋งŒ์กฑ ์‹œ์ผœ์•ผ ํ•จWHERE ์ธ๊ตฌ์ˆ˜ > ALL (SELECT ์ธ๊ตฌ์ˆ˜ FROM ๋„์‹œ WHERE ๋™๋„ค; ๋‰ด์š• ๋™๋„ค์˜ ๊ฐ€์žฅ ์ธ๊ตฌ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ณณ ๋ณด๋‹ค ์ธ๊ตฌ์ˆ˜๊ฐ€ ๋งŽ์€ ๋™๋„ค๋ฅผ ์ถœ๋ ฅ)
ORDER BY๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ์ˆœ์„œ๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๊ตฌ๋ฌธ ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ DESC๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌSELECT * FROM ๋„์‹œ ORDER BY ์ธ๊ตฌ์ˆ˜; ์ธ๊ตฌ์ˆ˜์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ณด์—ฌ์คŒ
ORDER BY๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ์ˆœ์„œ๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๊ตฌ๋ฌธ ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ DESC๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌSELECT * FROM ๋„์‹œ ORDER BY DESC ์ธ๊ตฌ์ˆ˜; ์ธ๊ตฌ์ˆ˜์˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ณด์—ฌ์คŒ
DISTINCT์ค‘๋ณต๋œ๊ฒƒ์€ 1๊ฐœ์”ฉ๋งŒ ๋ณด์—ฌ์ฃผ๋ฉด์„œ ์ถœ๋ ฅ ํ…Œ์ด๋ธ” ํฌ๊ธฐ๊ฐ€ ํด์ˆ˜๋ก ํšจ์œจ์ SELECT DISTINCT ๋‚˜๋ผ์ฝ”๋“œ FROM ๋„์‹œ ๋‚˜๋ผ์ฝ”๋“œ๊ฐ€ ์ค‘๋ณต๋œ ๋„์‹œ๋“ค์€ 1๊ฐœ๋งŒ ๋ณด์—ฌ์คŒ
LIMIT์ถœ๋ ฅ ๊ฐœ์ˆ˜๋ฅผ ์ œํ•œ ์ƒ์œ„ N๊ฐœ๋งŒ ์ถœ๋ ฅํ•˜๋Š” LIMIT N ์ด ์žˆ์ŒSELECT * FROM ๋„์‹œ ORDER BY ์ธ๊ตฌ์ˆ˜ DESC LIMIT 10 ; ๋„์‹œ์˜ ์ธ๊ตฌ์ˆ˜๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ณด์—ฌ์ฃผ์ง€๋งŒ ์ƒ์œ„ 10๊ฐœ๋งŒ ์ถœ๋ ฅ
GROUP BY๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด์ฃผ๋Š” ์—ญํ™œ AVG์™€ ๊ฐ™์€ ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉ , ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ๊ทธ๋ฃนํ™” , ์ฝ๊ธฐ ์ข‹๊ฒŒ ํ•˜๋Š” ๋ณ„์นญ ์‚ฌ์šฉ๊ฐ€๋Šฅ AS '...'SELECT ๋‚˜๋ผ MAX(์ธ๊ตฌ์ˆ˜) FROM ๋„์‹œ GROUP BY ๋‚˜๋ผ AS '์ œ์ผ ๋งŽ์€ ์ธ๊ตฌ์ˆ˜'; ๋‚˜๋ผ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ธ๊ตฌ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ๋„์‹œ๋ฅผ ๋‚˜๋ผ๋กœ ๋ฌถ์–ด์ค˜ ๋‚˜๋Š” ์ด๊ฑธ ์ œ์ผ ๋งŽ์€ ์ธ๊ตฌ์ˆ˜ ๋ผ๊ณ  ๋ถ€๋ฅผ๊ฑฐ์•ผ
HAVINGWHERE์™€ ๋น„์Šทํ•œ ๊ฐœ๋…์œผ๋กœ ์กฐ๊ฑด ์ œํ•œ HAVING์ ˆ์€ ๋ฐ˜๋“œ์‹œ GROUP BY์ ˆ ๋‹ค์Œ์— ๋‚˜์™€์•ผ ํ•จSELECT ๋‚˜๋ผ MAX(์ธ๊ตฌ์ˆ˜) FROM ๋„์‹œ GROUP BY ๋‚˜๋ผ HAVING MAX(์ธ๊ตฌ์ˆ˜) > 800 ๋‚˜๋ผ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ธ๊ตฌ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ๋„์‹œ๋ฅผ ๋‚˜๋ผ๋กœ ๋ฌถ์–ด์ค˜ ๊ทผ๋ฐ ์ตœ๋Œ€ ์ธ๊ตฌ์ˆ˜๊ฐ€ 800 ์ดˆ๊ณผ์—ฌ์•ผํ•ด
JOIN์—ฌ๋Ÿฌ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ํ•˜๋‚˜๋กœ ์กฐํ•ฉํ•  ๋•Œ ์“ฐ์ž„SELECT * FROM ๋„์‹œ JOIN ๋‚˜๋ผ ON ๋„์‹œ.๋‚˜๋ผ์ฝ”๋“œ = ๋‚˜๋ผ.์ฝ”๋“œ ; ๋„์‹œ์™€ ๋‚˜๋ผ๋ฅผ JOIN ํ• ๊ฑด๋ฐ ๋„์‹œ์˜ ๋‚˜๋ผ์ฝ”๋“œ์™€ ๋‚˜๋ผ์˜์ฝ”๋“œ๊ฐ€ ๊ฐ™์€๊ฒƒ ๋ผ๋ฆฌ JOIN ํ•ด์„œ ์ถœ๋ ฅํ•ด์ค˜ ๋ผ๋Š” ์˜๋ฏธ
CREATE TABLEํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐCREATE TABLE test(์•ˆ์˜ ํ–‰๊ณผ ์—ด)
CREATE INDEX์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑCREATE INDEX ์ธ๋ฑ์Šค ๋ช… ON ํ…Œ์ด๋ธ”๋ช…(ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ๋ช…)
profile
์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž ์ด๊ฑด์šฐ ์ž…๋‹ˆ๋‹ค .

0๊ฐœ์˜ ๋Œ“๊ธ€