SQL์ ์ฐ๋ฆฌ์ ์ ๋ถ์ ๋๋ค
์ด๋ฏธ ์ง์ํ์ จ๊ฒ ์ง๋ง SQL ์๋ฒ์ ๋ํ ๋ชจ๋ ๋ช ๋ น์ SQL ์ฟผ๋ฆฌ๋ฅผ ํตํด ์ ๊ณต๋ ์ ์์ต๋๋ค. ๋ชจ๋ ๊ฒ.
์ด ํ์ ๊ณต์์ ์ผ๋ก 4๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋๋ฉ๋๋ค.
-
๋ฐ์ดํฐ ์ ์ ๋ฌธ (๋ฐ์ดํฐ ์ ์ ์ธ์ด, DDL ):
- CREATE๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด(๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฒด, ํ ์ด๋ธ, ๋ทฐ, ์ฌ์ฉ์ ๋ฑ)๋ฅผ ์์ฑํฉ๋๋ค.
- ALTER๋ ๊ฐ์ฒด๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
- DROP์ ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
-
๋ฐ์ดํฐ ์กฐ์ ์ฐ์ฐ์ (Data Manipulation Language, DML ):
- SELECT๋ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ํํฉ๋๋ค.
- INSERT๋ ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- ์ ๋ฐ์ดํธ๋ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
- DELETE๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
-
๋ฐ์ดํฐ ์ก์ธ์ค ์ ์ ์ฐ์ฐ์ (๋ฐ์ดํฐ ์ ์ด ์ธ์ด, DCL ):
- GRANT๋ ๊ฐ์ฒด์ ๋ํด ํน์ ์์ ์ ์ํํ ์ ์๋ ์ฌ์ฉ์(๊ทธ๋ฃน) ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
- REVOKE๋ ์ด์ ์ ๋ฐ๊ธ๋ ๊ถํ์ ์ทจ์ํฉ๋๋ค.
- DENY๋ ํ๊ฐ๋ณด๋ค ์ฐ์ ํ๋ ๊ธ์ง๋ฅผ ์ค์ ํฉ๋๋ค.
-
TCL ( ํธ๋์ญ์ ์ ์ด ์ธ์ด) ๋ฌธ :
- COMMIT์ ํธ๋์ญ์ ์ ์ ์ฉํฉ๋๋ค.
- ROLLBACK์ ํ์ฌ ํธ๋์ญ์ ์ ์ปจํ ์คํธ์์ ์ด๋ฃจ์ด์ง ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋กค๋ฐฑํฉ๋๋ค.
- SAVEPOINT๋ ํธ๋์ญ์ ์ ๋ ์์ ์น์ ์ผ๋ก ๋๋๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฒ์ ๋ ์์ค์์๋ ๋ค์ํ SELECT ๋ฌธ๋ง ์ฐ๊ตฌํ์ต๋๋ค. ์์ผ๋ก ์ผ๋ง๋ ๋ง์ ํฅ๋ฏธ๋ก์ด ์ผ๋ค์ด ์ฐ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์์ง ์์ํด ๋ณด์ญ์์ค.
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์ ์ฃผ๋ก Java ํ๋ก๊ทธ๋๋จธ์ ๋ํด ์ค๋นํ๊ณ ์์ผ๋ฏ๋ก ์ง์ฅ์์ ํ์คํ ์ ํ๊ฒ ๋ ์๋๋ฆฌ์ค๋ฅผ ์ฐ๊ตฌํ ๊ฒ์ ๋๋ค.
ํ๋ก์ ํธ์ ์์คํ ๊ด๋ฆฌ์๊ฐ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ ๊ฐ๋ฅ์ฑ์ด ๋์ง๋ง ๋ฐ์ดํฐ์์ ์ง์ ์ฌ๋ฌ ๋ฒ ์ ํํด์ผ ํฉ๋๋ค.
๋์ฑ์ด ๋๋ก๋ ์ฝ๋๊ฐ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ์ง ์๊ฑฐ๋ ์๋ชป๋ ๋ฐฉ์์ผ๋ก ์์ฑํ๋ฏ๋ก ์ข ์ข ํ์ ๋ค๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค์ด๊ฐ ์ค์ ๋ก ๋ฌด์์ด ์ ์ฅ๋์ด ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
์ด์ ๊ฐ์์์ ๋ค๋ค๋ ๋ด์ฉ์ ๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์คํค๋ง ์์ฑ
DBMS์์ ์ ์คํค๋ง๋ฅผ ์์ฑํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์คํํด์ผ ํฉ๋๋ค.
CREATE SCHEMA Name;
์ด๊ฒ์ด ๊ฐ์ฅ ์ฌ์ด ์ต์ ์ ๋๋ค. ๋ํ ์ ์คํค๋ง๋ฅผ ์์ฑํ ๋ ๋ฐ์ดํฐ ์ธ์ฝ๋ฉ ํ์ ๋ฐ ๊ธฐํ ๋งค๊ฐ ๋ณ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
์คํค๋ง๋ฅผ ์ญ์ ํ๊ณ ์ถ์ง๋ง ์กด์ฌ ์ฌ๋ถ๊ฐ ํ์คํ์ง ์์ ๊ฒฝ์ฐ ๋ค์ ๋ช ๋ น์ ์คํํด์ผ ํฉ๋๋ค.
DROP SCHEMA IF EXIST Name;
๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐฑ์ ์ด ์๋ ํ์ผ์์ ์ด๋ฌํ ๋ช ๋ น์ ์์ฃผ ๋ณผ ์ ์์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ๊ฐ์ ธ์ต๋๋ค.
ํ์ฌ ๊ตฌ์ฑํ ์ ํ
DBMS์ ๋ง์ ์คํค๋ง๊ฐ ์๋ ๊ฒฝ์ฐ ์๋ก ๋ค๋ฅธ ์คํค๋ง์ ๋์ผํ ํ ์ด๋ธ์ด ์๋ ๊ฒฝ์ฐ๊ฐ ์ฝ๊ฒ ๋ฐ์ํ ์ ์์ต๋๋ค. ํผ๋์ ํผํ๊ธฐ ์ํด ๋ค์ ๋ ๊ฐ์ง ์์ ์ ์ํํ ์ ์์ต๋๋ค.
- ํญ์ ํ ์ด๋ธ ์ด๋ฆ ์์ ์คํค๋ง ์ด๋ฆ์ ์ ๋ ฅํ์ญ์์ค.
- ๊ธฐ๋ณธ ์คํค๋ง ์ง์
ํ ์คํธ ์คํค๋ง ์ ์๋ ์ฌ์ฉ์ ํ ์ด๋ธ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค . ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
SELECT * FROM test.user;
์ด๋ ํ๋์ ์ฟผ๋ฆฌ์์ ์๋ก ๋ค๋ฅธ ์คํค๋ง์ ์ฌ๋ฌ โโํ ์ด๋ธ์ ์กฐ์ธ(JOIN)ํด์ผ ํ๋ ๊ฒฝ์ฐ ํ์ ๋ถ๊ฐ๊ฒฐํฉ๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , Java ์ธ์ด์์ ์ฐ๋ฆฌ๋ ์ข ์ข ์ ์ฌํ ์์ ์ ์ํํฉ๋๋ค. ์ฝ๋์์ ๋ค๋ฅธ ํจํค์ง์ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ํด๋์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ ํด๋์ค ์ด๋ฆ ์์ ํจํค์ง ์ด๋ฆ์ ์ถ๊ฐํฉ๋๋ค.
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ ์คํค๋ง๋ฅผ ์ง์ ํ๋ ๊ฒ์ ๋๋ค . ์ฟผ๋ฆฌ์์ ํ ์ด๋ธ ์ด๋ฆ์ ์ง์ ํ์ง๋ง ์คํค๋ง๋ ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ ์คํค๋ง๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด USE ๋ฌธ์ ์ฌ์ฉํ์ญ์์ค .
USE name - schemes;
USE ๋ฌธ์ ์ฌ์ฉํ์ฌ ์ด์ ์ฟผ๋ฆฌ๋ฅผ ๋ค์ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค.
USE test;
SELECT * FROM user;
๋ณด๊ธฐ ๋ง๋ค๊ธฐ
์ค์ ๋ฐ์ดํฐ๊ฐ ์๋ ํ ์ด๋ธ ์ธ์๋ SQL์ ์ฌ์ฉํ๋ฉด ์ค์ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฐ์ ํ ์ด๋ธ๊ณผ ๊ฐ์ ๊ฒ์ ์ ์ฅํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฐ์ ํ ์ด๋ธ์ VIEW๋ผ๊ณ ํฉ๋๋ค.
์ด๋ฌํ ํ ์ด๋ธ์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์ผ๋ฉฐ ์ก์ธ์คํ ๋๋ง๋ค ์ค์ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ์ด๋ฌํ VIEW์ ๋ด์ฉ์ SQL ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ๋ฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ชจ๋ SELECT ์ฟผ๋ฆฌ์์ VIEW๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
CREATE VIEW Name AS
SELECT-request;
CREATE VIEW public_employee AS
SELECT id, name FROM employee
์์ ์์์ ํ ์ด๋ธ(VIEW) public_employee์๋ ์ง์ ID์ ์ด๋ฆ๋ง ํฌํจ๋๋ฉฐ ๊ธ์ฌ์ ๋ํ ์ ๋ณด๋ ํฌํจ๋์ง ์์ต๋๋ค. ์ค์ ํ ์ด๋ธ๊ณผ ๊ฐ์ ๊ณณ์์ ์ด๋ฌํ ๋ทฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ทฐ๊ฐ ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ง ์ฅ์ ์ด ์์ต๋๋ค.
์ ๋ณด์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ์ฐํ๊ฒ ์ ์ดํฉ๋๋ค . ํน์ ์ฌ์ฉ์์๊ฒ VIEW์ ๋ํ ์ก์ธ์ค ๊ถํ๋ง ๋ถ์ฌํ ์ ์์ง๋ง ํ ์ด๋ธ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ View์์๋ ํ ์ด๋ธ์์ ๊ณต๊ฐ๋ ์ ๋ณด๋ง ๊ฐ์ ธ์ต๋๋ค. ๋ํ ํฅํ ์ค์ํ ์ ๋ณด๊ฐ ํฌํจ๋ ์๋ก์ด ์ด์ด ํ ์ด๋ธ์ ์ถ๊ฐ๋๋๋ผ๋ ์ค์๋ก View์ ๋ค์ด๊ฐ์ง ์์ต๋๋ค.
๋ฐ์ดํฐ ๋น์ ๊ทํ . ์ ์ฅ์ ํธ์๋ฅผ ์ํด ๋ฐ์ดํฐ๋ ์ข ์ข ์๋ฐฑ, ์์ฒ ๊ฐ์ ํ ์ด๋ธ๋ก ๋๋์ง๋ง ์ผ๋ฐ์ธ์ด ์ด๋ฌํ ๋ฐ์ดํฐ๋ก ์์ ํ๋ ๊ฒ์ ๊ทธ๋ฆฌ ํธ๋ฆฌํ์ง ์์ต๋๋ค. ๋๋ฌด ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. View๋ฅผ ์ฌ์ฉํ๋ฉด ์์ญ ๊ฐ์ ์๋ก ๋ค๋ฅธ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๋จ์ผ ํ ์ด๋ธ์ ํ์ํ๋ ๊ฐ์ ํ ์ด๋ธ์ ์์ฑํ ์ ์์ต๋๋ค.
๋คํ์ฑ๊ณผ ์บก์ํ . ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๋์์ ๊ทํ์ ๋ณด๊ธฐ๋ก ์์ ํ๋ ํ๋ก๊ทธ๋จ ์ฌ์ฉ์๋ ๋ณ๊ฒฝ๋ ์ฌํญ์ด ์๋ค๊ณ ์ถ์ธกํ์ง ์์ต๋๋ค. ๋ํ View์ ์ก์ธ์คํ ์ ์๋ ํ๋ก๊ทธ๋จ์ ์ฝ๋๋ฅผ ๋ค์ ์์ฑํ ํ์๊ฐ ์์ต๋๋ค. VIEW์ ๊ด๋ จ๋ SQL ์คํฌ๋ฆฝํธ๋ฅผ ์์ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ฝ๊ธฐ ์ ์ฉ . View๋ SELECT ์ฟผ๋ฆฌ๋ก๋ง ์ค์ ํ ์ ์์ผ๋ฏ๋ก View๋ก ์์ ํด๋ ์ค์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ด๊ฒ์ ์ฟผ๋ฆฌ ์บ์ฑ์ ์ ํธํ๋ ๋ ๋ค๋ฅธ ์ฅ์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ค์์ ๋ ์์ธํ ์ค๋ช ํฉ๋๋ค.