๐ ๋ชฉ์ฐจ
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 ์ฟผ๋ฆฌ ์์ฑ๋ฒ์ ๋ํ ํต์ฌ์ ๋ชจ๋ ์ ๋ฆฌํ์ด์! ํ์ํ ๋๋ง๋ค ์ฐพ์๋ณผ ์ ์๋๋ก ๋ถ๋งํฌํด๋์ธ์! ๐พ