๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

SQL13

[SQL ๋ ˆ๋ฒจ์—…] 7์žฅ: ์„œ๋ธŒ์ฟผ๋ฆฌ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ํํ˜œ 1. ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๋ฌธ์ œ์  ์‹ค์ฒด์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์•„ ๋ฌธ์ œ ๋ฐœ์ƒ - ์—ฐ์‚ฐ ๋น„์šฉ ์ถ”๊ฐ€ ์„œ๋ธŒ์ฟผ๋ฆฌ์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค SELECT ๊ตฌ๋ฌธ ์‹คํ–‰ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•จ ๋‚ด์šฉ์ด ๋ณต์žกํ• ์ˆ˜๋ก ์‹คํ–‰ ๋น„์šฉ ๊ธ‰์ฆ - ๋ฐ์ดํ„ฐ I/O ๋น„์šฉ ๋ฐœ์ƒ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ํด ๊ฒฝ์šฐ ์ €์žฅ์†Œ์˜ ํŒŒ์ผ์— ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜์—ฌ ์˜ค๋ฒ„ํ—ค๋“œ ์ปค์งˆ ์ˆ˜ ์žˆ์Œ - ์ตœ์ ํ™” ๋ถˆ๊ฐ€ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์ฟผ๋ฆฌ๋ฅผ ํ•ด์„ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ •๋ณด(๋ช…์‹œ์ ์ธ ์ œ์•ฝ, ์ธ๋ฑ์Šค ๋“ฑ)๋ฅผ ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ์–ป์„ ์ˆ˜ ์—†์Œ ๊ฒฐ๋ก : ๋‚ด๋ถ€์ ์œผ๋กœ ๋ณต์žกํ•œ ์—ฐ์‚ฐ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๊ฒฐ๊ณผ ํฌ๊ธฐ๊ฐ€ ํฐ ์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉ ์‹œ ์„ฑ๋Šฅ ๋ฆฌ์Šคํฌ ๊ณ ๋ คํ•ด์•ผ ํ•จ 2. ์„œ๋ธŒ์ฟผ๋ฆฌ ์˜์กด์ฆ ๋ฌธ์ œ: ๊ณ ๊ฐ๋ณ„๋กœ ์ตœ์†Œ ์ˆœ๋ฒˆ์„ ๊ฐ€์ง„ ๋ ˆ์ฝ”๋“œ ๊ตฌํ•˜๊ธฐ 1) ์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉ SELECT R1.cust_id, R1.seq, R1.pri.. 2022. 5. 2.
[SQL ๋ ˆ๋ฒจ์—…] 6์žฅ: ๊ฒฐํ•ฉ ๊ธฐ๋Šฅ์  ๊ด€์ ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒฐํ•ฉ์˜ ์ข…๋ฅ˜ ๋“ฑ๊ฐ€ ๊ฒฐํ•ฉ: ๊ฒฐํ•ฉ ์กฐ๊ฑด์œผ๋กœ ๋“ฑํ˜ธ(=)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋น„๋“ฑ๊ฐ€ ๊ฒฐํ•ฉ: ๊ฒฐํ•ฉ ์กฐ๊ฑด์œผ๋กœ ๋ถ€๋“ฑํ˜ธ(>=, < ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ž์—ฐ ๊ฒฐํ•ฉ: ๋‚ด๋ถ€ ๊ฒฐํ•ฉ์ด๋ฉด์„œ ๋“ฑ๊ฐ€ ๊ฒฐํ•ฉ - ์ž์—ฐ ๊ฒฐํ•ฉ ์˜ˆ์‹œ SELECT * FROM Employees NATURAL JOIN Departments; ๋‚ด๋ถ€ ๊ฒฐํ•ฉ+ ๋“ฑ๊ฐ€ ๊ฒฐํ•ฉ ์ฟผ๋ฆฌ์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ ๋„์ถœ SELECT * FROM Employees E INNER JOIN Departments D ON E.dept_id=D.dept_id; USING ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ SELECT * FROM Employees INNER JOIN Departments USING(dept_id); 1. ํฌ๋กœ์Šค ๊ฒฐํ•ฉ SELECT * FROM Employees CROSS JOIN D.. 2022. 4. 25.
[SQL ๋ ˆ๋ฒจ์—…] 5์žฅ: ๋ฐ˜๋ณต๋ฌธ ๋ฐ˜๋ณต๋ฌธ ์˜์กด 1. ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ ๋ฐ˜๋ณต๋ฌธ์— ์ต์ˆ™ํ•œ ๊ฐœ๋ฐœ์ž๋“ค์€ ๋‹ค์Œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ๋ ˆ์ฝ”๋“œ์— ํ•˜๋‚˜์”ฉ ์ ‘๊ทผํ•˜๊ณ  ํ˜ธ์ŠคํŠธ ์–ธ์–ด(์ ˆ์ฐจํ˜• ์–ธ์–ด)์—์„œ ๋ฐ˜๋ณต ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฐ„ํ˜น ์žˆ์Œ ์˜จ๋ผ์ธ ์ฒ˜๋ฆฌ์—์„œ ํ™”๋ฉด์— ๋ช…์„ธ๋ฅผ ์ถœ๋ ฅํ•˜์กฐ๊ฐ€ ๋ ˆ์ฝ”๋“œ ํ•˜๋‚˜์”ฉ ์ ‘๊ทผํ•˜๋Š” SELECT ๊ตฌ๋ฌธ ๋ฐ˜๋ณต ์‚ฌ์šฉ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ์—์„œ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ ˆ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ํ˜ธ์ŠคํŠธ ์–ธ์–ด์—์„œ ์ฒ˜๋ฆฌํ•˜๊ณ  ํ…Œ์ด๋ธ”์— ๊ฐฑ์‹  ๋ฐ˜๋ณต๊ณ„์˜ ๊ณตํฌ 1. ๋ฐ˜๋ณต๋ฌธ์— ์˜์กดํ•œ ์ฝ”๋“œ์˜ ๋‹จ์  - Sales: ๋งค์ถœ ๊ณ„์‚ฐํ•˜๋Š” ํ…Œ์ด๋ธ” - Sales2: ๋งค์ถœ ๋ณ€ํ™”๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” var ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ ํ…Œ์ด๋ธ” - ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ๋น„๊ต ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„: (์ฒ˜๋ฆฌ ํšŸ์ˆ˜) * (ํ•œ ํšŒ์— ๊ฑธ๋ฆฌ๋Š” ์ฒ˜๋ฆฌ ์‹œ๊ฐ„) ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„: SQL ํŒจํ„ด์€ ๋‹ค์–‘ํ•˜์ง€๋งŒ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ค.. 2022. 4. 18.
[SQL ๋ ˆ๋ฒจ์—…] 4์žฅ: ์ง‘์•ฝ๊ณผ ์ž๋ฅด๊ธฐ ์ง‘์•ฝ 1. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ํ•œ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋กœ ์ง‘์•ฝ - GROUP BY๋ฅผ ์‚ฌ์šฉํ•ด ์ง‘์•ฝ - ์ง‘์•ฝ ํ•จ์ˆ˜: ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ํ•œ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋กœ ์ง‘์•ฝํ•˜๋Š” ํ•จ์ˆ˜, COUNT, SUM, AVG, MAX, MIN - ์ง‘์•ฝ ์‹œ SELECT ๊ตฌ์— ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ: ์ƒ์ˆ˜, GROUP BY์—์„œ ์‚ฌ์šฉ๋œ ์ง‘์•ฝ ํ‚ค, ์ง‘์•ฝ ํ•จ์ˆ˜ CASE ์‹๊ณผ GROUP BY ์‘์šฉ ๋น„์ง‘์•ฝ ํ…Œ์ด๋ธ”์„ ์ง‘์•ฝ ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“œ๋Š” SQL ๊ตฌ๋ฌธ SELECT id, MAX(CASE WHEN data_type='A' THEN data_1 ELSE NULL END) AS data_1, MAX(CASE WHEN data_type='A' THEN data_2 ELSE NULL END) AS data_2, MAX(CASE WHEN data_type='B' THEN .. 2022. 4. 18.
[SQL ๋ ˆ๋ฒจ์—…] 3์žฅ: SQL์˜ ์กฐ๊ฑด ๋ถ„๊ธฐ UNION์„ ์‚ฌ์šฉํ•œ ๊ธด ํ‘œํ˜„ UNION์„ ์‚ฌ์šฉํ•œ ์กฐ๊ฑด ๋ถ„๊ธฐ๋Š” ์ƒ๊ฐํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ ์„ฑ๋Šฅ์ ์ธ ์ธก๋ฉด์—์„œ ๋ณด๋ฉด SELECT๋ฌธ์„ ์—ฌ๋Ÿฌ๊ฐœ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ด๋ธ” ์ ‘๊ทผ ํšŸ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ -> I/O๋น„์šฉ ์ฆ๊ฐ€ 1. UNION ์‚ฌ์šฉํ•œ ์กฐ๊ฑด ๋ถ„๊ธฐ ์˜ˆ์ œ SELECT Item_name, year, price_tax_ex AS price FROM Items WHERE year 2001; ๊ฑฐ์˜ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ๋‘๋ฒˆ ์‹คํ–‰ํ•˜์—ฌ ๊ฐ€๋…์„ฑ ์ €ํ•˜ Items ํ…Œ์ด๋ธ”์— 2ํšŒ ์ ‘๊ทผํ•˜์—ฌ ์„ฑ๋Šฅ ์ €ํ•˜ -> ์ •ํ™•ํ•œ ํŒ๋‹จ ์—†์ด UNION ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ž์ œํ•˜์ž 2. SELECT ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•œ ์กฐ๊ฑด ๋ถ„๊ธฐ ์˜ˆ์ œ SELECT item_name, year, CASE WHEN year ํ…Œ์ด๋ธ”์ด ํฌ๊ณ  WHERE ์กฐ๊ฑด์œผ๋กœ ์„ ํƒ๋˜๋Š” ๋ ˆ์ฝ”๋“œ ์ˆ˜๊ฐ€ ์ถฉ๋ถ„ํžˆ ์ž‘๋‹ค๋ฉด UNION์ด ๋” ๋น ๋ฆ„ ์ ˆ์ฐจ ์ง€.. 2022. 4. 11.
[SQL ๋ ˆ๋ฒจ์—…] 2์žฅ: SQL ๊ธฐ์ดˆ SELECT ๊ตฌ๋ฌธ 1. SELECT ๊ตฌ์™€ FROM ๊ตฌ ๊ฒ€์ƒ‰(=์งˆ์˜=์ถ”์ถœ): ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ๋•Œ ํ•ต์‹ฌ์ด ๋˜๋Š” ์ฒ˜๋ฆฌ SELECT ๊ตฌ๋ฌธ: ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” SQL ๊ตฌ๋ฌธ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ SELECT (field1), (field2) FROM (table name); 2. WHERE ๊ตฌ WHERE ๊ตฌ: SELECT ๊ตฌ๋ฌธ ์‚ฌ์šฉํ•˜์—ฌ ๋ ˆ์ฝ”๋“œ ์„ ํƒ ์‹œ ์ถ”๊ฐ€์ ์ธ ์กฐ๊ฑด ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ๋ฌธ - ๋‹ค์–‘ํ•œ ์กฐ๊ฑด ์ง€์ • ์—ฐ์‚ฐ์ž ์˜๋ฏธ = ~์™€ ๊ฐ™์Œ ~์™€ ๊ฐ™์ง€ ์•Š์Œ >=, , Address ํ…Œ์ด๋ธ”์—์„œ address๊ฐ€ tokyo๋‚˜ seoul์ธ ๋ ˆ์ฝ”๋“œ๋งŒ ๊ฒ€์ƒ‰ํ•˜๋Š” ์ฟผ๋ฆฌ - IS NULL ์‚ฌ์šฉํ•ด NULL๊ฐ’์ธ ๋ ˆ์ฝ”๋“œ ๊ฒ€์ƒ‰ SELECT name, phone_nbr FROM Address WHERE phone_nbr IS NULL; ->.. 2022. 4. 10.