์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
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] ์ ๋์ฝ๋์์๋ ์ด ๋ฌธ์๋ฅผ ์ํ ๋จ๋
์ฝ๋๊ฐ ํ ๋น๋ผ ์์ง ์์์ ์ ์ด ์๋ ์๋ฌธ์ i(U+0069) ๋ค์์ COMBINING VERTICAL LINE ABOVE(U+030D)๋ฅผ ์
๋ ฅํ์ฌ ๋ํ๋ด์ผ ํ๋ค. ์ด๊ฒ ์ ์์ ์ธ ๊ตฌํ ๋ฐฉ๋ฒ์ด์ง๋ง ์ผ๋ถ ํฐํธ์์๋ ๋น์ ์์ ์ผ๋ก ๋ ๋๋ง๋ ์ ์๋ค. ์๋ฌธ์ i๋ j์ ๋ฌธ์ ์์ ๋ถ์ด๋ ๋ณด์กฐ ๋ถํธ๊ฐ ๊ฒฐํฉํ ๊ฒฝ์ฐ i๋ j์ ์ ์ ์ง์ฐ๋ ๊ฒ ์ ์์ธ๋ฐ ์ผ๋ถ ํฐํธ๋ ์ด ์์น์ ์งํค์ง ์๋๋ค. ์ด๋ฐ ํฐํธ๋ ๋ค์ ๊ธ์๋ฅผ ์ฌ์ฉํ ๊ฒ.
[2] ์ ๋์ฝ๋์์ ์๋ฌธ์ i์ ์ ์ ์ง์ด ๊ธ์ ฤฑ(U+0131) ๋ค์์ COMBINING VERTICAL LINE ABOVE(U+030D)๋ฅผ ์
๋ ฅํ ๋ฌธ์. ์ฌ์ค ์ด๊ฑด ์ ์๋๋ก ์
๋ ฅํ ๊ฒ ์๋๋ค. ํ์ง๋ง ์ผ๋ถ ํฐํธ์์๋ ์ ๋์ฝ๋์ ์ ์๋๋ก i(U+0069)์ ๋ณด์กฐ ๋ถํธ๋ฅผ ๊ฒฐํฉํ๋ฉด ๋น์ ์์ ์ผ๋ก ๋ ๋๋ง๋ ์ ์๋ค. ์๋ฌธ์ i๋ j์ ๋ฌธ์ ์์ ๋ถ์ด๋ ๋ณด์กฐ ๋ถํธ๊ฐ ๊ฒฐํฉํ ๊ฒฝ์ฐ i๋ j์ ์ ์ ์ง์ฐ๋ ๊ฒ ์ ์์ธ๋ฐ ์ผ๋ถ ํฐํธ๋ ์ด ์์น์ ์งํค์ง ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ฐ ํฐํธ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ i ๋์ ฤฑ๋ฅผ ์ฌ์ฉ์๋ค. ์ฐธ๊ณ ๋ก ์๋ ฤฑ๋ผ๋ ๋ฌธ์๋ ํฐํค์ด ๋ฌธ์ ๋ฑ์์ ์ฌ์ฉ๋๋ ๊ธ์์ด๋ค.
[ห] ์๋๋ ์ ๋์ฝ๋์์ ๊ดํธ ๋ฐ๊นฅ์ ์๋ ๋ฌธ์๋ค์ฒ๋ผ ๋ณธ๋ ๊ธ์ ๋ค์ ๊ฒฐํฉ์ฉ ๋ฌธ์์ธ COMBINING DOT ABOVE RIGHT(U+0358)๋ฅผ ์ฝ์
ํ๋ ์์ผ๋ก ์
๋ ฅํด์ผ ํ๋ค. ํ์ง๋ง ํฐํธ์ ๋ฐ๋ผ์๋ ์ด๋ฐ ์กฐํฉ์ผ๋ก ์
๋ ฅ๋ ๋ฌธ์๊ฐ ์ ๋๋ก ๋ ๋๋ง๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๊ทธ๋์ ์ด ๋ฌธ์์์๋ ์ด๋ฐ ํฐํธ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ, ์ ๋ฌธ์ ๋ค์์ ์ ์ด ๋ฌธ์์ธ WORD JOINER(U+2060)์ ๊ฐ๋ณ ๋ฌธ์๋ก ์ฒ๋ฆฌ๋๋ DOT ABOVE(U+02D9)์ ์ฝ์
ํ์ฌ ํ๊ธฐํ ๋์ฒด ํ๊ธฐ๋ฅผ ๊ดํธ ์์ ๋ฃ์๋ค.
[6์ฑ] ์ค๋๋ ๋ฏผ๋จ์ด์ ๋ง์ ํ์ ๋ฐฉ์ธ์์ ์ฌ๋ผ์ง 6์ฑ(์์)์ ํ๊ธฐํ๊ธฐ ์ํด ห(caron)์ ๋ง๋ถ์ด๊ธฐ๋ ํ๋ค.
[eโ ห] ๋๋ง ์ด๋ํ ํธ์ฅ ๋ฐฉ์ธ(ๅๆผณ่
)์ /ษ/ ์์๋ฅผ ๋ํ๋ด๊ธฐ ์ํ ํ์ฅ ๋ฌธ์๋ค์ด๋ค. E/e ์ฐ์ธก ์๋จ์ ์ ์ ๋ถ์ฌ์ ์ด ์์๋ฅผ ๋ํ๋ด๊ธฐ๋ ํ๊ณ , ๊ตญ์ ์์ฑ๊ธฐํธ(IPA)์์ ๋น๋ ค์จ ษ(์ฌ๊ธฐ์ ๋์๋๋ ๋๋ฌธ์๋ก๋ ์ด ๊ธฐํธ๋ฅผ ๋๋ฌธ์ ํฌ๊ธฐ๋ก ํ๋ํด์ ์ด ฦ์ ์ฌ์ฉํ๋ค)๋ก ์ด ์์๋ฅผ ๋ํ๋ด๊ธฐ๋ ํ๋ค. ์ฐธ๊ณ ๋ก IPA์ ษ๋ ๊ทธ๋ฆฌ์ค ๋ฌธ์ ์๋ฌธ์ ฮต(์ก์ค๋ก )์์ ๋น๋ ค ์จ ๋ฌธ์์ด๋ค.
[ษตห] 1873๋
์นด์คํ
์ด์ค ๋๊ธ๋ฌ์ค(Carstairs Douglas)์ ๊ฐ์ ๋ฐฑํ์์ ์๋ ํ๊ธฐ. ํ์ฌ์ oอ ์ ํด๋น๋๋ค. O/o ๊ฐ์ด๋ฐ์ ๊ฐ๋ก์ ์ ๋ง๋ถ์ด๊ณ ์ฐ์ธก ์๋จ์ ์ ์ ๋ถ์ธ ๊ธ์์ด๋ค. ์ถ์ฒ๋ ๋ณธ ๋ฌธ์ ํ๊ธฐ ๋ณ์ฒ ๋จ๋ฝ์ ํ์ ๋ถ์ ์ฃผ์์ ์ฐธ๊ณ ํ ๊ฒ.