๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

SQL ์ฟผ๋ฆฌ ์ž‘์„ฑ ์™„์ „ ์ •๋ณต

by infomationtree 2025. 4. 14.
๋ฐ˜์‘ํ˜•

SQL ์ฟผ๋ฆฌ ์ž‘์„ฑ

SQL ์ฟผ๋ฆฌ ์ž‘์„ฑ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ•„์ˆ˜์ ์ธ ๊ธฐ์ˆ ์ด์—์š”. ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ, ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œํ•˜๋Š” ๊ธฐ๋ณธ ์ฟผ๋ฆฌ๋ถ€ํ„ฐ, ๋ณต์žกํ•œ ์กฐ์ธ์„ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊นŒ์ง€ ๋‹ค์–‘ํ•œ ํ™œ์šฉ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•˜์ฃ .

 

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” SQL ์ฟผ๋ฆฌ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ถ€ํ„ฐ ์‹ค๋ฌด์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํ…Œํฌ๋‹‰๊นŒ์ง€ ์ฐจ๊ทผ์ฐจ๊ทผ ์„ค๋ช…ํ• ๊ฒŒ์š”. SQL์— ๋Œ€ํ•œ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹ฌํ™”๊นŒ์ง€ ์™„๋ฒฝํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋‹ˆ ๋๊นŒ์ง€ ์ฝ์–ด๋ณด์„ธ์š”! ๐Ÿš€

 

์ œ๊ฐ€ ์ƒ๊ฐํ–ˆ์„ ๋•Œ SQL์„ ์ž˜ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ๋ณธ๊ธฐ๋ฅผ ํŠผํŠผํžˆ ํ•˜๊ณ , ๋‹ค์–‘ํ•œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์‹ค์ „ ๊ฐ๊ฐ์„ ์ตํžˆ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ด์š”. ์ง€๊ธˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด๋ณผ๊นŒ์š”?

๊ธฐ๋ณธ SELECT ๋ฌธ ์ž‘์„ฑ๋ฒ•

SELECT ๋ฌธ์€ SQL์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์ฟผ๋ฆฌ๋กœ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉํ•ด์š”. ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์š”.

 

๐Ÿ“ ๊ธฐ๋ณธ SELECT ๋ฌธ ๊ตฌ์กฐ ๐Ÿ’ก

๊ตฌ๋ฌธ ์„ค๋ช…
SELECT column1, column2 ์—ด(column)์„ ์„ ํƒํ•˜์—ฌ ์กฐํšŒ
FROM table_name ๋Œ€์ƒ ํ…Œ์ด๋ธ” ์ง€์ •
WHERE ์กฐ๊ฑด ํŠน์ • ์กฐ๊ฑด ํ•„ํ„ฐ๋ง

 

์˜ˆ๋ฅผ ๋“ค์–ด, ์ง์› ํ…Œ์ด๋ธ”์—์„œ ์ด๋ฆ„๊ณผ ๋‚˜์ด๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด์š”:

 

SELECT name, age 
FROM employees 
WHERE age > 30;

 

์ด ์ฟผ๋ฆฌ๋Š” ๋‚˜์ด๊ฐ€ 30์„ธ ์ด์ƒ์ธ ์ง์›์˜ ์ด๋ฆ„๊ณผ ๋‚˜์ด๋ฅผ ์กฐํšŒํ•ด์š”. ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ฃ ! ๐Ÿ”

 

๋ฐ์ดํ„ฐ ์‚ฝ์ž…: INSERT ๋ฌธ ํ™œ์šฉ

INSERT ๋ฌธ์€ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉํ•ด์š”. ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์š”:

 

๐Ÿ“ฅ ๊ธฐ๋ณธ INSERT ๋ฌธ ๊ตฌ์กฐ ๐Ÿ“Œ

๊ตฌ๋ฌธ ์„ค๋ช…
INSERT INTO table_name ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ํ…Œ์ด๋ธ”
(column1, column2, ...) ์ถ”๊ฐ€ํ•  ์—ด ๋ชฉ๋ก
VALUES (value1, value2, ...) ์‚ฝ์ž…ํ•  ๋ฐ์ดํ„ฐ ๊ฐ’

 

์ง์› ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ด์š”:

 

INSERT INTO employees (name, age, department) 
VALUES ('ํ™๊ธธ๋™', 28, '๊ฐœ๋ฐœํŒ€');

 

์ด๋กœ์จ ์ƒˆ๋กœ์šด ์ง์› ์ •๋ณด๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ถ”๊ฐ€๋ผ์š”. ๐Ÿ‘

 

๋ฐ์ดํ„ฐ ์ˆ˜์ •: UPDATE ๋ฌธ ๊ตฌ์กฐ

UPDATE ๋ฌธ์€ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•ด์š”. ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์•„์š”:

 

๐Ÿ”„ ๊ธฐ๋ณธ UPDATE ๋ฌธ ๊ตฌ์กฐ ๐Ÿ› ๏ธ

๊ตฌ๋ฌธ ์„ค๋ช…
UPDATE table_name ์ˆ˜์ •ํ•  ํ…Œ์ด๋ธ”
SET column1 = value1 ๋ณ€๊ฒฝํ•  ์—ด๊ณผ ๊ฐ’
WHERE ์กฐ๊ฑด ์ˆ˜์ • ๋Œ€์ƒ ํ•„ํ„ฐ

 

์˜ˆ๋ฅผ ๋“ค์–ด, ์ง์›์˜ ๋ถ€์„œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•ด์š”:

 

UPDATE employees 
SET department = '๋งˆ์ผ€ํŒ…ํŒ€' 
WHERE name = 'ํ™๊ธธ๋™';

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด๋ฆ„์ด 'ํ™๊ธธ๋™'์ธ ์ง์›์˜ ๋ถ€์„œ๊ฐ€ '๋งˆ์ผ€ํŒ…ํŒ€'์œผ๋กœ ๋ณ€๊ฒฝ๋ผ์š”. ๐Ÿ’ผ

 

๋ฐ์ดํ„ฐ ์‚ญ์ œ: DELETE ๋ฌธ ์‚ฌ์šฉ๋ฒ•

DELETE ๋ฌธ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉํ•ด์š”. ์‚ญ์ œ ์‹œ ์กฐ๊ฑด์„ ๋ช…ํ™•ํžˆ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํ…Œ์ด๋ธ” ์ „์ฒด๊ฐ€ ์‚ญ์ œ๋  ์ˆ˜ ์žˆ์–ด ์ฃผ์˜ํ•ด์•ผ ํ•ด์š”!

 

๐Ÿšซ ๊ธฐ๋ณธ DELETE ๋ฌธ ๊ตฌ์กฐ โŒ

๊ตฌ๋ฌธ ์„ค๋ช…
DELETE FROM table_name ์‚ญ์ œํ•  ํ…Œ์ด๋ธ”
WHERE ์กฐ๊ฑด ์‚ญ์ œ ๋Œ€์ƒ ํ•„ํ„ฐ

 

์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ์ง์› ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•ด์š”:

 

DELETE FROM employees 
WHERE name = 'ํ™๊ธธ๋™';

 

์ด ์ฟผ๋ฆฌ๋Š” ์ด๋ฆ„์ด 'ํ™๊ธธ๋™'์ธ ์ง์›์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•ด์š”. ์‚ญ์ œํ•  ๋•Œ๋Š” ํ•ญ์ƒ ์‹ ์ค‘ํ•˜๊ฒŒ ์กฐ๊ฑด์„ ์„ค์ •ํ•ด์•ผ ํ•ด์š”! ๐Ÿ“

 

๋ฐ์ดํ„ฐ ์ •๋ ฌ๊ณผ ๊ทธ๋ฃนํ™”

SQL์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ฃนํ™”ํ•  ๋•Œ ์ฃผ๋กœ ORDER BY์™€ GROUP BY๋ฅผ ์‚ฌ์šฉํ•ด์š”. ๋‘ ๋ช…๋ น์–ด ๋ชจ๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜์ฃ .

 

๐Ÿ“Š ORDER BY์™€ GROUP BY ์‚ฌ์šฉ๋ฒ• ๐Ÿ’ก

๊ตฌ๋ฌธ ์„ค๋ช…
ORDER BY column ASC|DESC ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ(ASC) ๋˜๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ(DESC) ์ •๋ ฌ
GROUP BY column ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง„ ํ–‰์„ ๊ทธ๋ฃนํ™”

 

์˜ˆ๋ฅผ ๋“ค์–ด, ์ง์› ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜์ด ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ , ๋ถ€์„œ๋ณ„๋กœ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ๊ฒฝ์šฐ:

 

SELECT department, COUNT(*)
FROM employees
GROUP BY department
ORDER BY COUNT(*) DESC;

 

์ด ์ฟผ๋ฆฌ๋Š” ๋ถ€์„œ๋ณ„ ์ง์› ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , ์ง์› ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด์š”. ๊น”๋”ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์ฃ ! ๐Ÿ“ˆ

 

์กฐ์ธ(Join) ํ™œ์šฉ ์ฟผ๋ฆฌ ์ž‘์„ฑ

SQL ์กฐ์ธ์€ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•ด ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉํ•ด์š”. ์‹ค๋ฌด์—์„œ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์กฐ์ธ ๋ฐฉ์‹์€ INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN์ด์—์š”.

 

๐Ÿ”— ์ฃผ์š” JOIN ์œ ํ˜• ๋น„๊ต ๐ŸŒ

JOIN ์œ ํ˜• ์„ค๋ช…
INNER JOIN ๋‘ ํ…Œ์ด๋ธ”์˜ ๊ณตํ†ต ๋ฐ์ดํ„ฐ๋งŒ ์กฐํšŒ
LEFT JOIN ์™ผ์ชฝ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์™€ ์ผ์น˜ํ•˜๋Š” ์˜ค๋ฅธ์ชฝ ๋ฐ์ดํ„ฐ ์กฐํšŒ
RIGHT JOIN ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์™€ ์ผ์น˜ํ•˜๋Š” ์™ผ์ชฝ ๋ฐ์ดํ„ฐ ์กฐํšŒ
FULL JOIN ์–‘์ชฝ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ์กฐํšŒ

 

์˜ˆ๋ฅผ ๋“ค์–ด, ์ง์› ํ…Œ์ด๋ธ”๊ณผ ๋ถ€์„œ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜์—ฌ ์ง์› ์ด๋ฆ„๊ณผ ๋ถ€์„œ๋ฅผ ์กฐํšŒํ•  ๋•Œ:

 

SELECT e.name, d.department_name
FROM employees e
INNER JOIN departments d
ON e.department_id = d.id;

 

์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด ์ง์›๊ณผ ๋ถ€์„œ๊ฐ€ ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”! ๐Ÿ’ผ

 

SQL ์ฟผ๋ฆฌ ๊ด€๋ จ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ (FAQ)

Q1. SQL๊ณผ MySQL์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

 

A1. SQL์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด์ด๊ณ , MySQL์€ SQL์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” DBMS(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ) ์ค‘ ํ•˜๋‚˜์˜ˆ์š”.

 

Q2. WHERE ์ ˆ๊ณผ HAVING ์ ˆ์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

 

A2. WHERE ์ ˆ์€ ํ–‰ ํ•„ํ„ฐ๋ง์— ์‚ฌ์šฉ๋˜๋ฉฐ, HAVING ์ ˆ์€ GROUP BY๋กœ ๊ทธ๋ฃนํ™”ํ•œ ํ›„ ์กฐ๊ฑด์„ ๊ฑธ ๋•Œ ์‚ฌ์šฉํ•ด์š”.

 

Q3. JOIN๊ณผ UNION์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

 

A3. JOIN์€ ๋‘ ํ…Œ์ด๋ธ”์˜ ์—ด์„ ๊ฒฐํ•ฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ–‰์„ ๋งŒ๋“ค๊ณ , UNION์€ ๋‘ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์ณ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋กœ ๋ณด์—ฌ์ค˜์š”.

 

Q4. SQL ์ธ์ ์…˜์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

 

A4. SQL ์ธ์ ์…˜์€ ์™ธ๋ถ€ ์ž…๋ ฅ์„ ํ†ตํ•ด SQL ์ฟผ๋ฆฌ๊ฐ€ ๋ณ€์กฐ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์•…์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ณต๊ฒฉ ๊ธฐ๋ฒ•์ด์—์š”. ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๊ฒ€์ฆ์œผ๋กœ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ์–ด์š”.

 

Q5. PRIMARY KEY์™€ UNIQUE ํ‚ค์˜ ์ฐจ์ด์ ์€?

 

A5. PRIMARY KEY๋Š” ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ๊ณ ์œ ํ•˜๊ณ  NULL ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์œผ๋ฉฐ, UNIQUE ํ‚ค๋„ ๊ณ ์œ ํ•˜์ง€๋งŒ NULL ๊ฐ’์„ ํ—ˆ์šฉํ•ด์š”.

 

Q6. ์„œ๋ธŒ์ฟผ๋ฆฌ์™€ ์กฐ์ธ์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

 

A6. ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ์ฟผ๋ฆฌ ์•ˆ์— ๋˜ ๋‹ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ตฌ์กฐ๊ณ , ์กฐ์ธ์€ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ํ•œ ๋ฒˆ์— ๊ฒฐํ•ฉํ•˜์—ฌ ์กฐํšŒํ•˜๋Š” ๋ฐฉ์‹์ด์—์š”.

 

Q7. ํŠธ๋žœ์žญ์…˜์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

 

A7. ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์˜ ๋…ผ๋ฆฌ์  ๋‹จ์œ„๋กœ, ๋ชจ๋“  ์ž‘์—…์ด ์„ฑ๊ณตํ•˜๊ฑฐ๋‚˜ ๋ชจ๋‘ ์‹คํŒจํ•ด์•ผ ํ•˜๋Š” ์›์ž์„ฑ์„ ๋ณด์žฅํ•ด์š”.

 

Q8. ์ธ๋ฑ์Šค(Index)๋Š” ์™œ ์‚ฌ์šฉํ•˜๋‚˜์š”?

 

A8. ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ๋กœ, ํŠนํžˆ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์—์„œ ํšจ์œจ์ ์ธ ์กฐํšŒ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค˜์š”.

 

SQL ์ฟผ๋ฆฌ ์ž‘์„ฑ๋ฒ•์— ๋Œ€ํ•œ ํ•ต์‹ฌ์„ ๋ชจ๋‘ ์ •๋ฆฌํ–ˆ์–ด์š”! ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋ถ๋งˆํฌํ•ด๋‘์„ธ์š”! ๐Ÿ’พ

๋ฐ˜์‘ํ˜•