mysql 6

[MySQL] Case๋ฌธ | ๋ฌธ๋ฒ•๊ณผ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ ์‚ดํŽด๋ณด๊ธฐ

๐Ÿ“Œ Case๋ฌธ ์—ฌ๋Ÿฌ ์กฐ๊ฑด์„ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ '๋‹ค์ค‘ ๋ถ„๊ธฐ' ๋ฌธ๋ฒ•์ด๋‹ค ์Šคํ† ์–ด๋“œ ํ”„๋กœ์‹œ์ €์—์„œ SQL ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋ฌธ์—์„œ ํ™œ์šฉ SELECT ๋ฌธ์—์„œ CASE๋ฌธ์œผ๋กœ ๊ฐ’ ํ˜ธ์ถœ CASE WHEN ์กฐ๊ฑด1 THEN SET ๋ณ€์ˆ˜๊ฐ’ WHEN ์กฐ๊ฑด1 THEN SET ๋ณ€์ˆ˜๊ฐ’ WHEN ์กฐ๊ฑด1 THEN SET ๋ณ€์ˆ˜๊ฐ’ ELSE SET ๋ณ€์ˆ˜๊ฐ’ END CASE; โœ๏ธ SELECT๋ฌธ์—์„œ CASE๋ฌธ ํ™œ์šฉํ•ด์„œ ํšŒ์›๋“ฑ๊ธ‰ ๋ถ„๋ฅ˜ํ•˜๊ธฐ SELECT M.mem_id, M.mem_name, SUM(price*amount) "์ด๊ตฌ๋งค์•ก", CASE WHEN (SUM(price*amount) >= 1500) THEN '์ตœ์šฐ์ˆ˜๊ณ ๊ฐ' WHEN (SUM(price*amount) >= 1000) THEN '์šฐ์ˆ˜๊ณ ๊ฐ' WHEN (SUM(price*amount) >= ..

Tools/- SQL 2024.04.07

[SQL] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์˜ˆ์ œ | ๊ทธ๋ฃน๋ณ„ ์ตœ๋Œ€๊ฐ’ ๋ ˆ์ฝ”๋“œ ์ถœ๋ ฅ, ๊ทธ๋ฃน๋ณ„ ๋ ˆ์ฝ”๋“œ count | ์„œ๋ธŒ์ฟผ๋ฆฌ์™€ ์กฐ์ธ์˜ ์ฐจ์ด

โœ๏ธ ๋ฌผ๊ณ ๊ธฐ ์ข…๋ฅ˜ ๋ณ„ ๋Œ€์–ด ์ฐพ๊ธฐ : fish_type ๋ณ„๋กœ ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ ๊ฐ€์ง€๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฒ€์ƒ‰ 1) ์„œ๋ธŒ์ฟผ๋ฆฌ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ SELECT ID, (SELECT FISH_NAME FROM FISH_NAME_INFO WHERE FISH_TYPE = a.FISH_TYPE) AS FISH_NAME, -- ๋‘๋ฒˆ์งธ ํ…Œ์ด๋ธ” ์„œ๋ธŒ์ฟผ๋ฆฌ LENGTH FROM FISH_INFO a WHERE LENGTH IN (SELECT MAX(LENGTH) FROM FISH_INFO GROUP BY FISH_TYPE) -- self ํ…Œ์ด๋ธ” ์„œ๋ธŒ์ฟผ๋ฆฌ ORDER BY ID where ์ ˆ์—์„œ fish_type ๋ณ„๋กœ max(length)์„ ์„œ๋ธŒ์ฟผ๋ฆฌ๋กœ ์ถ”์ถœํ•˜์—ฌ ์—ฐ์‚ฐ์ž in์œผ๋กœ ์ตœ๋Œ€๊ฐ’์„ ์ถฉ์กฑํ•˜๋Š” length์„ ๊ฒ€์ƒ‰ํ•˜๋„๋ก ํ•˜์˜€๋‹ค. 2) ์กฐ์ธ๋งŒ ์‚ฌ์šฉํ•˜..

Tools/- SQL 2024.03.15

[SQL] ์—ฐ์‚ฐ์ž | IN, & (AND ๋น„ํŠธ ์—ฐ์‚ฐ์ž) | ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์˜ˆ์ œ

๐Ÿ“Œ IN ์—ฐ์‚ฐ์ž ์—ฌ๋Ÿฌ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ,OR ์กฐ๊ฑด์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ค„ ํ•„์š”์—†์ด,IN ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜์˜ ๊ด„ํ˜ธ ์•ˆ์— ์กฐ๊ฑด์„ ๋‹ค ๋„ฃ์–ด์„œ ๋น„๊ต๊ฐ€๋Šฅํ•˜๋‹ค.   โœ๏ธ  ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค SQL ๋ฌธ์ œ๋กœ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด์žSELECT ID, EMAIL, FIRST_NAME, LAST_NAMEFROM DEVELOPER_INFOSWHERE SKILL_1 = 'Python' OR SKILL_2 = 'Python' OR SKILL_3 = 'Python' -- OR ์—ฌ๋Ÿฌ ๊ฐœORDER BY ID SELECT ID, EMAIL, FIRST_NAME, LAST_NAMEFROM DEVELOPER_INFOSWHERE 'Python' IN (SKILL_1, SKILL_2, SKILL_3)ORDER BY ID ์ฒซ๋ฒˆ์งธ๋Š”..

Tools/- SQL 2024.03.12

[MySQL] 7์žฅ ์Šคํ† ์–ด๋“œ ํ•จ์ˆ˜ | ์ปค์„œ | ํŠธ๋ฆฌ๊ฑฐ

์Šคํ† ์–ด๋“œ ํ•จ์ˆ˜ MySQL์—์„œ ์ œ๊ณตํ•˜๋Š” ํ•จ์ˆ˜ ์™ธ์— ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜ ์ž…๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฐ˜ํ™˜๊ฐ’์„ ๋”ฐ๋กœ ์„ค์ •ํ•œ๋‹ค ์Šคํ† ์–ด๋“œ ํ•จ์ˆ˜ ๋ฌธ๋ฒ• DELIMITER $$ CREATE FUNCTION ํ•จ์ˆ˜_์ด๋ฆ„ ( ๋งค๊ฐœ๋ณ€์ˆ˜ ) RETURNS ๋ฐ˜ํ™˜ํ˜•์‹ BEGIN ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฝ”๋”ฉ RETURN ๋ฐ˜ํ™˜๊ฐ’; END $$ DELIMITER ; SELECT ํ•จ์ˆ˜_์ด๋ฆ„(); ์˜ˆ์ œ 1) ๊ณฑํ•˜๊ธฐ SET GLOBAL log_bin_trust_function_creators = 1; -- ์Šคํ† ์–ด๋“œ ํ•จ์ˆ˜ ์ƒ์„ฑ ๊ถŒํ•œ ํ—ˆ์šฉ (ํ•œ ๋ฒˆ๋งŒ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค) USE market_db; DROP FUNCTION IF EXISTS sumFunc; DELIMITER $$ CREATE FUNCTION sumFunc(number1 INT, number2 INT)..

Tools/- SQL 2024.03.10

[MySQL] 7์žฅ ์Šคํ† ์–ด๋“œ ํ”„๋กœ์‹œ์ € | ๋งค๊ฐœ๋ณ€์ˆ˜, ๋™์  SQL ํ™œ์šฉ ์˜ˆ์ œ

์Šคํ† ์–ด๋“œ ํ”„๋กœ์‹œ์ € : SQL์— ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด์„œ ์ผ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ๋น„์Šทํ•œ ํšจ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์Šคํ† ์–ด๋“œ ํ”„๋กœ์‹œ์ € ๋ฌธ๋ฒ• DELIMITER $$ CREATE PROCEDURE ์ด๋ฆ„ ( IN ๋˜๋Š” OUT ๋งค๊ฐœ๋ณ€์ˆ˜ ) BEGIN ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฝ”๋“œ ์ž‘์„ฑ END $$ DELIMITER ; ์˜ˆ์ œ 1) ํ…Œ์ด๋ธ” ์ „์ฒด ์„ ํƒ USE market_db; DROP PROCEDURE IF EXISTS user_proc; DELIMITER $$ CREATE PROCEDURE user_proc() BEGIN SELECT * FROM member; -- ์Šคํ† ์–ด๋“œ ํ”„๋กœ์‹œ์ € ๋‚ด์šฉ END $$ DELIMITER ; CALL user_proc() ; -- ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ ์˜ˆ์ œ 2) ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•œ ์กฐ๊ฑด๋ถ€ ๊ฒ€์ƒ‰ DROP PR..

Tools/- SQL 2024.03.09

[MySQL] 6์žฅ ์ธ๋ฑ์Šค | ์ธ๋ฑ์Šค ๊ฐœ๋…, ์ธ๋ฑ์Šค ๋‚ด๋ถ€ ์ž‘๋™, ์ธ๋ฑ์Šค ์‹ค์ œ ์‚ฌ์šฉ

์ธ๋ฑ์Šค ๊ฐœ๋… ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ ์ธ๋ฑ์Šค๊ฐ€ ์—†๋‹ค๋ฉด MySQL์€ ์ „์ฒด ํ…Œ์ด๋ธ” ๊ฒ€์ƒ‰ ( Full Table Scan) ์„ ์‹คํ–‰ํ•  ๊ฒƒ => ์‹œ๊ฐ„ ์ธก๋ฉด์—์„œ ๋น„ํšจ์œจ์  ์ธ๋ฑ์Šค์˜ ์ข…๋ฅ˜ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค : ์˜์–ด์‚ฌ์ „, ํ•˜๋‚˜๋งŒ ๊ฐ€๋Šฅ, ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ ์ •๋ ฌ ๋ณด์กฐ ์ธ๋ฑ์Šค : ์—ฌ๋Ÿฌ๊ฐœ ์„ค์ • ๊ฐ€๋Šฅ, ์ •๋ ฌ ์ƒ๊ด€ X USE market_db; CREATE TABLE table1 ( col1 INT PRIMARY KEY, col2 INT, col3 INT ); SHOW INDEX FROM table1; CREATE TABLE table2 ( col1 INT PRIMARY KEY, col2 INT UNIQUE, col3 INT UNIQUE); SHOW INDEX FROM table2; DROP TABLE IF EX..

Tools/- SQL 2024.03.08