์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ๊ฐ์[ํธ์ง]
begin
dbms_output.put_line('hello world');
end;Structured Query Language: SQL
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์์ ์๋ฃ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฉ๋๋ก ์ฌ์ฉ๋๋ ๊ตฌ์กฐ์ ๋ฐ์ดํฐ ์ง์ ์ธ์ด. ์์คํ์, ํน์ ์ํ์ด๋ผ๊ณ ์ฝ๋๋ค.
๋ก๊ณ ๋ SQL์ ์ฌ์ฉํ๋ ํ์ฌ๋ณ๋ก ์์์ ๋ค๋ฅด๊ฒ ํด ํํํ๋ค. ๊ทธ๋ฌ๋ ์ฌ๋ณผ ์์ฒด๋ ์ํต์ ์์ ๋ชจ์์ด ๊ณต์ฉ์ผ๋ก ์ฐ์ธ๋ค.
2. ์์ธ[ํธ์ง]
์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์๋๋ฉด ์ฌ๋ฌ ๊ณณ์์ ์ธ๋ฐ๊ฐ ๋ง๋ค. ๋ค๋ง, NoSQL ๊ณ์ด์์๋ SQL ๋ฌธ์ ์ฌ์ฉํ์ง ์๋๋ค.
๊ทธ๋ฌ๋ DBMS ๋ฒค๋[1]์ ๋ฐ๋ผ ์ฌ์ฉํ๋ SQL์๋ ๋ค์ ์ฐจ์ด๊ฐ ์๋ค. ๊ทธ๋์ ANSI SQL์ด๋ผ๊ณ ํ๋ ํ์ค SQL ๊ตฌ๋ฌธ์ด ์์ผ๋ DBMS ์์ฅ์ ๋ ์ํ๊ณ ์๋ ์ค๋ผํด์ด ์ ์งํค์ง ์์์๊ฑฐ๊ธฐ๋ค๊ฐ ์คํ์์ค DBMS์ธ MySQL๋ ํ์ค ๋ฐ์๋ ์งํค์ง ์๋๋ค. ํ์ค์ ์๊ถ์ฐฝ. ์ต๊ทผ ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์๋ PostgreSQL์ ํ์ค SQL์ ์ ์งํค๊ณ ์๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ RDB(๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค)์ด๋ฉฐ, RDB์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ ๋ชจ์์ธ ํ
์ด๋ธ[2]์ ๊ธฐ์ค์ผ๋ก ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ SQL ์ญ์ ํ
์ด๋ธ์ ์ผ๋์ ๋๊ณ ์ฝ์ผ๋ฉด ์ดํดํ๊ธฐ ์ฝ๋ค.
์๋ ๊ตฌ๋ฌธ ์ค๋ช ๋ฐ ์์ ๋ ๊ณตํต์ ์ผ๋ก ๋๋ฌธ์๋ ํค์๋, ์๋ฌธ์๋ ์ด๋ฆ์ด๋ ๊ฐ ๋ฑ ๋ณ์๋ฅผ ์๋ฏธํ๊ณ , ์ฃผ๋ก ์ฌ์ฉ๋๋ WHERE ์ต์ ์ ์ค๊ดํธ๋ก ํ๊ธฐํ๋ค.[3] SQL์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์ผ๋ฏ๋ก SELECT์ select๋ ๊ฐ์ ๊ฒ์ด๋ค. ๋ฌผ๋ก ๋ฐ์ดํ๋ก ์ธ์ฉ๋ '๊ฐ'์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ค. ๋ฌธ์์ด์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๊ฒ ํ๋ ค๋ฉด ๋ช ๋ น ๋งจ ๋ค์ COLLATE NOCASE๋ฅผ ๋ถ์ธ๋ค. ๋ํ ๋๋ถ๋ถ์ DBMS๋ ์ธ๋ฏธ์ฝ๋ก (;)์ ์ ๋ ฅํ์ง ์์ผ๋ฉด ๋ช ๋ น์ด๋ฅผ ๊ณ์ ์ ๋ ฅํ๊ณ ์๋ค๊ณ ๊ฐ์ฃผํ๋ค. GUI๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ GUIํ๋ก ํธ์๋์์ ์์์ ์ธ๋ฏธ์ฝ๋ก ์ ๋ถ์ฌ ์ฃผ๊ธฐ ๋๋ฌธ์ ์ ๋ชจ๋ฅด๊ณ ๋์ด๊ฐ ์ ์๋๋ฐ ํฐ๋ฏธ๋๋ก ์์ ํ ๊ฒฝ์ฐ์๋ ์ด๊ฒ ๋๋ฌธ์ ์ ธ์ด ๋จนํต์ด ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ฟผ๋ฆฌ๋ฅผ ์ฐ์ตํ ๋ ์ฃผ์ํ ์ ์ด ํ ๊ฐ์ง ์๋๋ฐ SQL ๊ตฌ๋ฌธ์ ํ์์ค๋ฝ๋ค(Greedy). SQL์ ๊ฐ๋ฅํ ๋์ ๋ฒ์์ ๊ฑธ์ฒ ์์ ํ๋ ค๊ณ ํ๋ค. ๋ฐ๋ผ์ WHERE์ ์ด๋ LIMIT ๊ตฌ๋ฌธ์ ์๋ตํ๋ฉด SELECT์ ๊ฒฝ์ฐ ๋๋ ์์ด ์ถ๋ ฅํ๋ ๋ ์ฝ๋์ด์ ๋ณด๊ฒ ๋ ๊ฒ์ด๊ณ UPDATE์ DELETE์ ๊ฒฝ์ฐ ์ฌ๋ณดํ์ฃผ์ ๊ฐ๊น์ด ๊ด์ญ ๋ณ์กฐ(ํ๊ดด)๊ฐ ์ผ์ด๋๋ค. ๋ํ ๋๋ถ๋ถ์ DBMS์์๋ ํธ๋์ญ์ BEGIN์ ๋จผ์ ๊ฑธ๊ณ ์์ ํ์ง ์๋ ํ ์์ ์ ์ทจ์(UNDO)ํ ์ ์๋ค. ๋ค์ ๋งํด BEGIN์ ์ ๋ ฅํ์ง ์๊ณ DELETE from table; ์ ์ ๋ ฅํ ๊ฒฝ์ฐ ROLLBACK ๋ช ๋ น์ ์ ๋ ฅํด๋ ์์ฉ์ด ์๋ค. ๊ฐ์ฅ ์น๋ช ์ ์ธ ์คํ๋ก WHERE์ ์ ๋ ฅ ์ง์ ์ ๋ฐ์ดํ๋ฅผ ๋ซ๋๋ค๋๊ฒ ๋ฐ๋ก ์์ ์ธ๋ฏธ์ฝ๋ก ์ ์๋ชป ์ณ์ ์คํ๋ฅผ ๋ธ ๊ฒฝ์ฐ. ์ด ๊ฒฝ์ฐ ์์ ๋ช ๋ น์ด๋ฅผ ๋ชจ๋ ๋ ์ฝ๋์ ๋ํด ์ํํด์ ํ ์ด๋ธ์ ํ๊ดดํด ๋ฒ๋ฆฐ ๋ค์ ๋ค์ชฝ ๋ช ๋ น์ด๋ฅผ '๋ฌธ๋ฒ ์ค๋ฅ'๋ก ์ถ๋ ฅํ๋ค.
๋ฐ๋ผ์ UPDATE, DELETE๋ฅผ ์คํํด๋ณด๊ธฐ ์ ์๋ ๋ฐ๋์ BEGIN์ ์ ๋ ฅํ์ฌ ํธ๋์ญ์ ์ ์์ํ ๋ค์ ํด๋น ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ , ์คํ ๊ฒฐ๊ณผ๊ฐ ์๋ํ ๋๋ก์ธ์ง๋ฅผ SELECT๋ก ๊ฒ์ฆํ ๋ค์ ์๋ํ ๊ฒฐ๊ณผ๋๋ก ์ฟผ๋ฆฌ๊ฐ ์ํ๋์์์ ํ์ธํ๊ณ ๋์, COMMIT์ ์ ๋ ฅํ์ฌ ํธ๋์ญ์ ์ '์ ์ฉ'ํ๋ ์ต๊ด์ ๋ค์ด๋ ๊ฒ ์ข๋ค. ๋ง์ฝ ๋ญ๊ฐ๊ฐ ์๋ชป๋์์ ๊ฒฝ์ฐ ์ฆ์ ROLLBACK ๋ช ๋ น์ ์ ๋ ฅํ๋ฉด BEGIN์ ์ ๋ ฅํ ๋ค์ ํํ ๋ชจ๋ ์์ ์ด ์ทจ์๋๋ค. GUI์ ๊ฒฝ์ฐ์๋ ์ฌ๋ฌ ์ฟผ๋ฆฌ๋ฅผ ์ ๋ ฅํ์ ๊ฒฝ์ฐ ๋ง์ง๋ง SELECT์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ด ํ์ฌ๋์ด ์๋ค๋ ์ ์ ์๋(๊ทธ๋ ์ง ์์ GUI ํ๋ก ํธ์๋๋ ์๋ค. ์ด ๊ฒฝ์ฐ ๊ทธ๋ฅ OK ํ ์ค ๋ณด์ฌ์ฃผ๊ณ ๋์ด๋ค) ์ฒ์๋ถํฐ BEGIN; ~ ROLLBACK; ๋ธ๋ญ์ ๋ฏธ๋ฆฌ ์ ๋ ฅํด ๋๊ณ ์์ ์ ํ๋ ๊ฒ ์์ ํ๋ค.
์ผ๋จ SQL์ ์ ๋ ฅํ ๋์๋ ์ ๋ ํจ๋ถ๋ก ์ํฐํค๋ฅผ ๋๋ฌ์ ์ ๋๋ค. ์ง์ ํ์ธ์ ํ๋ ๊ฒ ๋์์ด ๋ ์๋ ์๋ค. ํนํ WHERE์ ์๋ค๋ฅผ ๋งค์ฐ ๊ผผ๊ผผํ๊ฒ ์ดํด์ผ ํ๊ณ WHERE์ ์ด ์๋ ์ฟผ๋ฆฌ๋ ๋ฌด์กฐ๊ฑด ํ๋ ธ๋ค๊ณ ๊ฐ์ฃผํ์. SQL์ ๊ธฐ๋ณธ๊ฐ์ด rm -rf /๋ผ๊ณ ์๊ฐํ๋ ๊ฒ ํธํ๋ค. ์์ ๋ ์ฟผ๋ฆฌ๋ฅผ ํจ๋ถ๋ก ๋ฃ์ง ๋ง๋ผ๊ณ ํ๋ก์์ (Procedure)๋ผ๋ ์ฟผ๋ฆฌ ํ ํ๋ฆฟ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ฐธ๊ณ ๋ก SQL๊ณผ PL/SQL์ ๋ค๋ฅธ ๊ฒ์ด๋ค. PL/SQL์ด SQL์ ํฌํจํ๊ณ ์๊ธฐ๋ ํ์ง๋ง SQL์ ์์ ์์ฌ๋ก ์ธ ์ ๋์ ์ค๋ ฅ์ด ๋์ง ์์๋๋ฐ PL/SQL์ ๊ณต๋ถํ๋ฉด ์ ๋๋ค. ๊ธ์ต๊ณ์์๋ PL/SQL์ ๋๋ฆฌ ์ฐ๋๊น ์ํ์ ๊ฐ๋ฐ์๋ก ์ทจ์ ํ๋ ค๋ฉด ๊ผญ ๋ฐฐ์์ผ ํ์ง๋ง ๋ฐฐ์ธ ๋ ๋ฐฐ์ฐ๋๋ผ๋ SQL์ ์์ ์๊ฒ ๋ค๋ฃฐ ์ ์๊ฒ ๋ ๋ค์์ ์ผ์ด๋ค. ์ง๋๋ฅผ ๋นจ๋ฆฌ ๋นผ๊ณ ์ถ์ ์์ฌ์ SQL๋ ๋ชจ๋ฅด๋ ์ฑ๋ก PL/SQL์ ๋์ ํ๋ค๊ฐ ๊ธฐ์กด์ ๊ณต๋ถํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ก ์ฒด๊ณ์ ํผ๋์ ์ผ์ผ์ผ ์คํ๋ ค ์ง๋๊ฐ ๋ค๋ก ํํดํ๋ค.๋ ์ ์ฃผํ์
๋ง
๊ทธ๋ฌ๋ DBMS ๋ฒค๋[1]์ ๋ฐ๋ผ ์ฌ์ฉํ๋ SQL์๋ ๋ค์ ์ฐจ์ด๊ฐ ์๋ค. ๊ทธ๋์ ANSI SQL์ด๋ผ๊ณ ํ๋ ํ์ค SQL ๊ตฌ๋ฌธ์ด ์์ผ๋ DBMS ์์ฅ์ ๋ ์ํ๊ณ ์๋ ์ค๋ผํด์ด ์ ์งํค์ง ์์์
์๋ ๊ตฌ๋ฌธ ์ค๋ช ๋ฐ ์์ ๋ ๊ณตํต์ ์ผ๋ก ๋๋ฌธ์๋ ํค์๋, ์๋ฌธ์๋ ์ด๋ฆ์ด๋ ๊ฐ ๋ฑ ๋ณ์๋ฅผ ์๋ฏธํ๊ณ , ์ฃผ๋ก ์ฌ์ฉ๋๋ WHERE ์ต์ ์ ์ค๊ดํธ๋ก ํ๊ธฐํ๋ค.[3] SQL์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์ผ๋ฏ๋ก SELECT์ select๋ ๊ฐ์ ๊ฒ์ด๋ค. ๋ฌผ๋ก ๋ฐ์ดํ๋ก ์ธ์ฉ๋ '๊ฐ'์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ค. ๋ฌธ์์ด์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๊ฒ ํ๋ ค๋ฉด ๋ช ๋ น ๋งจ ๋ค์ COLLATE NOCASE๋ฅผ ๋ถ์ธ๋ค. ๋ํ ๋๋ถ๋ถ์ DBMS๋ ์ธ๋ฏธ์ฝ๋ก (;)์ ์ ๋ ฅํ์ง ์์ผ๋ฉด ๋ช ๋ น์ด๋ฅผ ๊ณ์ ์ ๋ ฅํ๊ณ ์๋ค๊ณ ๊ฐ์ฃผํ๋ค. GUI๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ GUIํ๋ก ํธ์๋์์ ์์์ ์ธ๋ฏธ์ฝ๋ก ์ ๋ถ์ฌ ์ฃผ๊ธฐ ๋๋ฌธ์ ์ ๋ชจ๋ฅด๊ณ ๋์ด๊ฐ ์ ์๋๋ฐ ํฐ๋ฏธ๋๋ก ์์ ํ ๊ฒฝ์ฐ์๋ ์ด๊ฒ ๋๋ฌธ์ ์ ธ์ด ๋จนํต์ด ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ฟผ๋ฆฌ๋ฅผ ์ฐ์ตํ ๋ ์ฃผ์ํ ์ ์ด ํ ๊ฐ์ง ์๋๋ฐ SQL ๊ตฌ๋ฌธ์ ํ์์ค๋ฝ๋ค(Greedy). SQL์ ๊ฐ๋ฅํ ๋์ ๋ฒ์์ ๊ฑธ์ฒ ์์ ํ๋ ค๊ณ ํ๋ค. ๋ฐ๋ผ์ WHERE์ ์ด๋ LIMIT ๊ตฌ๋ฌธ์ ์๋ตํ๋ฉด SELECT์ ๊ฒฝ์ฐ ๋๋ ์์ด ์ถ๋ ฅํ๋ ๋ ์ฝ๋์ด์ ๋ณด๊ฒ ๋ ๊ฒ์ด๊ณ UPDATE์ DELETE์ ๊ฒฝ์ฐ ์ฌ๋ณดํ์ฃผ์ ๊ฐ๊น์ด ๊ด์ญ ๋ณ์กฐ(ํ๊ดด)๊ฐ ์ผ์ด๋๋ค. ๋ํ ๋๋ถ๋ถ์ DBMS์์๋ ํธ๋์ญ์ BEGIN์ ๋จผ์ ๊ฑธ๊ณ ์์ ํ์ง ์๋ ํ ์์ ์ ์ทจ์(UNDO)ํ ์ ์๋ค. ๋ค์ ๋งํด BEGIN์ ์ ๋ ฅํ์ง ์๊ณ DELETE from table; ์ ์ ๋ ฅํ ๊ฒฝ์ฐ ROLLBACK ๋ช ๋ น์ ์ ๋ ฅํด๋ ์์ฉ์ด ์๋ค. ๊ฐ์ฅ ์น๋ช ์ ์ธ ์คํ๋ก WHERE์ ์ ๋ ฅ ์ง์ ์ ๋ฐ์ดํ๋ฅผ ๋ซ๋๋ค๋๊ฒ ๋ฐ๋ก ์์ ์ธ๋ฏธ์ฝ๋ก ์ ์๋ชป ์ณ์ ์คํ๋ฅผ ๋ธ ๊ฒฝ์ฐ. ์ด ๊ฒฝ์ฐ ์์ ๋ช ๋ น์ด๋ฅผ ๋ชจ๋ ๋ ์ฝ๋์ ๋ํด ์ํํด์ ํ ์ด๋ธ์ ํ๊ดดํด ๋ฒ๋ฆฐ ๋ค์ ๋ค์ชฝ ๋ช ๋ น์ด๋ฅผ '๋ฌธ๋ฒ ์ค๋ฅ'๋ก ์ถ๋ ฅํ๋ค.
๋ฐ๋ผ์ UPDATE, DELETE๋ฅผ ์คํํด๋ณด๊ธฐ ์ ์๋ ๋ฐ๋์ BEGIN์ ์ ๋ ฅํ์ฌ ํธ๋์ญ์ ์ ์์ํ ๋ค์ ํด๋น ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ , ์คํ ๊ฒฐ๊ณผ๊ฐ ์๋ํ ๋๋ก์ธ์ง๋ฅผ SELECT๋ก ๊ฒ์ฆํ ๋ค์ ์๋ํ ๊ฒฐ๊ณผ๋๋ก ์ฟผ๋ฆฌ๊ฐ ์ํ๋์์์ ํ์ธํ๊ณ ๋์, COMMIT์ ์ ๋ ฅํ์ฌ ํธ๋์ญ์ ์ '์ ์ฉ'ํ๋ ์ต๊ด์ ๋ค์ด๋ ๊ฒ ์ข๋ค. ๋ง์ฝ ๋ญ๊ฐ๊ฐ ์๋ชป๋์์ ๊ฒฝ์ฐ ์ฆ์ ROLLBACK ๋ช ๋ น์ ์ ๋ ฅํ๋ฉด BEGIN์ ์ ๋ ฅํ ๋ค์ ํํ ๋ชจ๋ ์์ ์ด ์ทจ์๋๋ค. GUI์ ๊ฒฝ์ฐ์๋ ์ฌ๋ฌ ์ฟผ๋ฆฌ๋ฅผ ์ ๋ ฅํ์ ๊ฒฝ์ฐ ๋ง์ง๋ง SELECT์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ด ํ์ฌ๋์ด ์๋ค๋ ์ ์ ์๋(๊ทธ๋ ์ง ์์ GUI ํ๋ก ํธ์๋๋ ์๋ค. ์ด ๊ฒฝ์ฐ ๊ทธ๋ฅ OK ํ ์ค ๋ณด์ฌ์ฃผ๊ณ ๋์ด๋ค) ์ฒ์๋ถํฐ BEGIN; ~ ROLLBACK; ๋ธ๋ญ์ ๋ฏธ๋ฆฌ ์ ๋ ฅํด ๋๊ณ ์์ ์ ํ๋ ๊ฒ ์์ ํ๋ค.
์ผ๋จ SQL์ ์ ๋ ฅํ ๋์๋ ์ ๋ ํจ๋ถ๋ก ์ํฐํค๋ฅผ ๋๋ฌ์ ์ ๋๋ค. ์ง์ ํ์ธ์ ํ๋ ๊ฒ ๋์์ด ๋ ์๋ ์๋ค. ํนํ WHERE์ ์๋ค๋ฅผ ๋งค์ฐ ๊ผผ๊ผผํ๊ฒ ์ดํด์ผ ํ๊ณ WHERE์ ์ด ์๋ ์ฟผ๋ฆฌ๋ ๋ฌด์กฐ๊ฑด ํ๋ ธ๋ค๊ณ ๊ฐ์ฃผํ์. SQL์ ๊ธฐ๋ณธ๊ฐ์ด rm -rf /๋ผ๊ณ ์๊ฐํ๋ ๊ฒ ํธํ๋ค. ์์ ๋ ์ฟผ๋ฆฌ๋ฅผ ํจ๋ถ๋ก ๋ฃ์ง ๋ง๋ผ๊ณ ํ๋ก์์ (Procedure)๋ผ๋ ์ฟผ๋ฆฌ ํ ํ๋ฆฟ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ฐธ๊ณ ๋ก SQL๊ณผ PL/SQL์ ๋ค๋ฅธ ๊ฒ์ด๋ค. PL/SQL์ด SQL์ ํฌํจํ๊ณ ์๊ธฐ๋ ํ์ง๋ง SQL์ ์์ ์์ฌ๋ก ์ธ ์ ๋์ ์ค๋ ฅ์ด ๋์ง ์์๋๋ฐ PL/SQL์ ๊ณต๋ถํ๋ฉด ์ ๋๋ค. ๊ธ์ต๊ณ์์๋ PL/SQL์ ๋๋ฆฌ ์ฐ๋๊น ์ํ์ ๊ฐ๋ฐ์๋ก ์ทจ์ ํ๋ ค๋ฉด ๊ผญ ๋ฐฐ์์ผ ํ์ง๋ง ๋ฐฐ์ธ ๋ ๋ฐฐ์ฐ๋๋ผ๋ SQL์ ์์ ์๊ฒ ๋ค๋ฃฐ ์ ์๊ฒ ๋ ๋ค์์ ์ผ์ด๋ค. ์ง๋๋ฅผ ๋นจ๋ฆฌ ๋นผ๊ณ ์ถ์ ์์ฌ์ SQL๋ ๋ชจ๋ฅด๋ ์ฑ๋ก PL/SQL์ ๋์ ํ๋ค๊ฐ ๊ธฐ์กด์ ๊ณต๋ถํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ก ์ฒด๊ณ์ ํผ๋์ ์ผ์ผ์ผ ์คํ๋ ค ์ง๋๊ฐ ๋ค๋ก ํํดํ๋ค.
3. ๋ฌธ๋ฒ[ํธ์ง]
4. ์ธ๋ถ ๋งํฌ[ํธ์ง]
- Oracle Live SQL: ํ๋ก๊ทธ๋จ ์ค์น ์์ด ์น๋ธ๋ผ์ฐ์ ์์์ ์ฝ๋๋ฅผ ํ์ตํ๊ณ ํ ์คํธํด ๋ณผ ์ ์๋ ์ฌ์ดํธ.
[1] ๋ํ์ ์ผ๋ก Oracle DB, MySQL, MariaDB, MSS QL ๋ฑ์ด ์๋ค.
[2] ๋จ์ผ ์ฃผ์ ์ ๋ํด ํ๊ณผ ์ด๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ ์งํฉ์ด๋ค. ์ฃผ๋ก ํ์ ๋ฐ์ดํฐ ์์(entity)์ด๋ฉฐ ์ด์ ๋ฐ์ดํฐ ์์๊ฐ ๊ฐ์ง๋ ์์ฑ๊ฐ์ผ๋ก ํํ๋๋ค. ํ๋ ์์
์ํธ ํ๋๋ฅผ ์๊ฐํ๋ฉด ์ดํดํ๊ธฐ ์ฌ์ด๋ฐ ์๋ฅผ ๋ค์ด '๊ณ ๊ฐ'์ด๋ผ๋ ํ
์ด๋ธ์ด ์๋ค๊ณ ๊ฐ์ ํ๋ฉด ๊ณ ๊ฐ ํ๋ช
์ ID, ์ด๋ฆ, ์ฃผ์, ์ ํ๋ฒํธ ๋ฑ์ ๊ฐ์ ๊ฐ์ง๋ค. ๊ฐ๊ฐ์ ๊ณ ๊ฐ์ ํ๋์ ํ์ ์ฐจ์งํ์ฌ ์ฒซ๋ฒ์งธ ์ด์๋ ๊ณ ๊ฐ์ ID๊ฐ, ๋๋ฒ์งธ ์ด์๋ ๊ณ ๊ฐ์ ์ด๋ฆ์ด, ์ธ๋ฒ์งธ ์ด์๋ ๊ณ ๊ฐ์ ์ฃผ์๊ฐ...์ ๊ฐ์ด ์ง์ ๋์ด ์ ์ฅ๋๋ค. ํ
์ด๋ธ์์ ์ด์ ์์๋ ์ค์ํ์ง ์์ผ๋ฉฐ ์
์ถ๋ ฅ์ ์ด์ ์ด๋ฆ์ ์ ํํ๊ฒ ์ง์ ํ์ฌ ์ค๋ค.
[3] ๋ฌผ๋ก ์ต์
์ WHERE ๋ง๊ณ ๋ GROUP BY, COUNT ๋ฑ ๋ชฉ์ ์ ๋ฐ๋ผ ์ฌ๋ฌ๊ฐ์ง ์์ ์ ์์ผ๋ ๊ตฌ๋ฌธ ์ค๋ช
์ ์ํด WHERE์ ์ ์ฌ์ฉํ์ง ์์ ์ ์์ผ๋ฏ๋ก WHERE์ ๋ง ํ๊ธฐํ๋ค.