๐ 2-3-4. DCL
๊ณผ๋ชฉ2. SQL ๊ธฐ๋ณธ๊ณผ ํ์ฉ
์ 3์ฅ ๊ด๋ฆฌ ๊ตฌ๋ฌธ
์ 4์ DCL
1. DCL ๊ฐ์
์ง๊ธ๊น์ง ์ดํด๋ณธ SQL ๋ฌธ์ฅ์ ๋ถ๋ฅํ๋ฉด ํ ์ด๋ธ ์์ฑ๊ณผ ์กฐ์์ ๊ด๋ จ๋ ๋ช ๋ น์ด(DDL)์, ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๊ธฐ ์ํ ๋ช ๋ น์ด(DML), ๊ทธ๋ฆฌ๊ณ TRANSACTION์ ์ ์ดํ๊ธฐ ์ํ ๋ช ๋ น์ด(TCL)์ด๋ค. ์ถ๊ฐ๋ก, ์ด๋ฐ ๋ช ๋ น์ด๋ค ์ด์ธ์๋ ์ ์ ๋ฅผ ์์ฑํ๊ณ ๊ถํ์ ์ ์ดํ ์ ์๋ DCL(DATA CONTROL LANGUAGE) ๋ช ๋ น์ด๊ฐ ์๋ค.
2. ์ ์ ์ ๊ถํ
๋ค๋ฅธ ๋ถ์ ๊ฐ์ ๋๋ ๋ค๋ฅธ ํ์ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์คํํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๊ฐ๋ ๋ฐ์ํ๋ค. ๋ฌผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์คํํ๋ ๊ฒ ์์ฒด๊ฐ ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค. ์ฆ ์ด์ ์์คํ ์์ ์ฌ์ฉํ๋ ์ ์ ๋ฅผ ์คํํ๋ฉด ๋ฐ์ดํฐ์ ์์ค ์ฐ๋ ค๊ฐ ๋๋ฌด ์ปค์ง๊ฒ ๋๋ ๊ฒ์ด๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์ ์๋ก์ด ์ ์ ๋ฅผ ์์ฑํ๊ณ , ์์ฑํ ์ ์ ์๊ฒ ๊ณต์ ํ ํ ์ด๋ธ์ด๋ ๊ธฐํ ์ค๋ธ์ ํธ์ ๋ํ ์ ๊ทผ ๊ถํ๋ง์ ๋ถ์ฌํ๋ค๋ฉด ๋ฌธ์ ๋ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ์์ ์น์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ์๋น์ค๋ฅผ ์ด์ฉํ๋ ค๋ฉด ๋จผ์ ํ์ ๊ฐ์ ์ ํด์ผ ํ๋ค. ์ ์ ์์ด๋, ํจ์ค์๋, ๊ธฐํ ๊ฐ์ธ์ ๋ณด๋ฅผ ์ ๋ ฅํ๊ณ ์ฝ๊ด์ ๋์ํ๋ฉด ํ์ ๊ฐ์ ์ด ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ ์์ด๋์ ํจ์ค์๋๋ก ๋ก๊ทธ์ธํ๋ฉด ์น์ฌ์ดํธ์ ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์๊ฒ ๋๋ค. ๊ทธ๋ฌ๋ ์ํ๋ ์ ๋ฃ ๊ฒ์๊ณผ ๊ฐ์ ํน์ ์ปจํ ์ธ ๋ฅผ ์ด์ฉํ๋ ค๋ฉด '๊ถํ์ด ์๋ค'๋ผ๋ ๋ฉ์์ง๋ฅผ ๋ณผ ์ ์๋ค. ์ฌ๊ธฐ์ ์ ์ ์์ด๋์ ํจ์ค์๋๋ฅผ ์ ์ ๋ผ ํ ์ ์๊ณ , ์ ๋ฃ ์๋น์ค์ ๋ํ ๊ฒฐ์ฌ ์ฌ๋ถ๋ฅผ ๊ถํ์ด๋ผ ํ ์ ์๋ค. ๋๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ ๋ณดํธ์ ๋ณด์์ ์ํด์ ์ ์ ์ ๊ถํ์ ๊ด๋ฆฌํ๊ณ ์๋๋ฐ, ์๋ฅผ ๋ค์ด Oracle์ ์ค์นํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ์ ์ ๋ค์ธ SYS, SYSTEM, SCOTT ์ ์ ์ ๋ํด์ [ํ โ ก-2-8]์ ํตํด์ ๊ฐ๋จํ๊ฒ ์์๋ณธ๋ค.

Oracle๊ณผ SQL Server์ ์ฌ์ฉ์์ ๋ํ ์ํคํ ์ฒ๋ ๋ค๋ฅธ ๋ฉด์ด ๋ง๋ค. Oracle์ ์ ์ ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์์ ํ๋ ํํ์ด๋ค. ์ฆ ์์ด๋์ ๋น๋ฐ๋ฒํธ ๋ฐฉ์์ผ๋ก ์ธ์คํด์ค์ ์ ์์ ํ๊ณ ๊ทธ์ ํด๋นํ๋ ์คํค๋ง์ ์ค๋ธ์ ํธ ์์ฑ ๋ฑ์ ๊ถํ์ ๋ถ์ฌ๋ฐ๊ฒ ๋๋ค. SQL Server๋ ์ธ์คํด์ค์ ์ ์ํ๊ธฐ ์ํด ๋ก๊ทธ์ธ์ด๋ผ๋ ๊ฒ์ ์์ฑํ๊ฒ ๋๋ฉฐ, ์ธ์คํด์ค ๋ด์ ์กด์ฌํ๋ ๋ค์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ์ฌ ์์ ํ๊ธฐ ์ํด ์ ์ ๋ฅผ ์์ฑํ ํ ๋ก๊ทธ์ธ๊ณผ ์ ์ ๋ฅผ ๋งคํํด ์ฃผ์ด์ผ ํ๋ค. ๋ ๋์๊ฐ ํน์ ์ ์ ๋ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ํน์ ์คํค๋ง์ ๋ํด ๊ถํ์ ๋ถ์ฌ๋ฐ์ ์ ์๋ค. SQL Server ๋ก๊ทธ์ธ์ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ๊ฐ๋ฅํ๋ค. ์ฒซ ๋ฒ์งธ, Windows ์ธ์ฆ ๋ฐฉ์์ผ๋ก Windows์ ๋ก๊ทธ์ธํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ SQL Server์ ์ ์ํ๋ ๋ฐฉ์์ด๋ค. Microsoft Windows ์ฌ์ฉ์ ๊ณ์ ์ ํตํด ์ฐ๊ฒฐ๋๋ฉด SQL Server๋ ์ด์ ์ฒด์ ์ Windows ๋ณด์ ์ฃผ์ฒด ํ ํฐ์ ์ฌ์ฉํ์ฌ ๊ณ์ ์ด๋ฆ๊ณผ ์ํธ๊ฐ ์ ํจํ์ง ํ์ธํ๋ค. ์ฆ Windows์์ ์ฌ์ฉ์ ID๋ฅผ ํ์ธํ๋ค. SQL Server๋ ์ํธ๋ฅผ ์์ฒญํ์ง ์์ผ๋ฉฐ ID์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํํ์ง ์๋๋ค. Windows ์ธ์ฆ์ ๊ธฐ๋ณธ ์ธ์ฆ ๋ชจ๋์ด๋ฉฐ SQL Server ์ธ์ฆ๋ณด๋ค ํจ์ฌ ๋ ์์ ํ๋ค. Windows ์ธ์ฆ์ Kerberos ๋ณด์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ๊ณ , ์ํธ ์ ์ฑ ์ ์ ์ฉํ์ฌ ๊ฐ๋ ฅํ ์ํธ์ ๋ํด ์ ํฉํ ๋ณต์ก์ฑ ์์ค์ ์ ์งํ๋๋ก ํ๋ฉฐ, ๊ณ์ ์ ๊ธ ๋ฐ ์ํธ ๋ง๋ฃ๋ฅผ ์ง์ํ๋ค. SQL Server๊ฐ Windows์์ ์ ๊ณตํ๋ ์๊ฒฉ ์ฆ๋ช ์ ์ ๋ขฐํ๋ฏ๋ก Windows ์ธ์ฆ์ ์ฌ์ฉํ ์ฐ๊ฒฐ์ ํธ๋ฌ์คํธ๋ ์ฐ๊ฒฐ์ด๋ผ๊ณ ๋ ํ๋ค. ๋ ๋ฒ์งธ, ํผํฉ ๋ชจ๋(Windows ์ธ์ฆ ๋๋ SQL ์ธ์ฆ) ๋ฐฉ์์ผ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก Windows ์ธ์ฆ์ผ๋ก๋ SQL Server์ ์ ์ ๊ฐ๋ฅํ๋ฉฐ, Oracle์ ์ธ์ฆ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ์ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ก SQL Server์ ์ ์ํ๋ ๋ฐฉ์์ด๋ค. SQL ์ธ์ฆ์ ์ฌ์ฉํ ๋๋ ๊ฐ๋ ฅํ ์ํธ(์ซ์+๋ฌธ์+ํน์๋ฌธ์ ๋ฑ์ ํผํฉํ์ฌ ์ฌ์ฉ)๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ์๋ฅผ ๋ค์ด, ์๋ [๊ทธ๋ฆผ โ ก-1-16]์ ๋ณด๋ฉด SCOTT์ด๋ผ๋ LOGIN ์ด๋ฆ์ผ๋ก ์ธ์คํด์ค INST1์ ์ ์์ ํ์ฌ ๋ฏธ๋ฆฌ ๋งคํ๋์ด ์๋ SCOTT์ด๋ผ๋ ์ ์ ๋ฅผ ํตํด PRODUCT๋ผ๋ ์คํค๋ง์ ์ํด ์๋ ITEM์ด๋ผ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ก์ธ์คํ๊ณ ์๋ค.

๊ฐ. ์ ์ ์์ฑ๊ณผ ์์คํ
๊ถํ ๋ถ์ฌ
์ ์ ๋ฅผ ์์ฑํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ๋ค. ํ์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ๋ค๊ณ ํด์ ํ ์ด๋ธ, ๋ทฐ, ์ธ๋ฑ์ค ๋ฑ๊ณผ ๊ฐ์ ์ค๋ธ์ ํธ(OBJECT)๋ฅผ ์์ฑํ ์๋ ์๋ค. ์ฌ์ฉ์๊ฐ ์คํํ๋ ๋ชจ๋ DDL ๋ฌธ์ฅ(CREATE, ALTER, DROP, RENAME ๋ฑ)์ ๊ทธ์ ํด๋นํ๋ ์ ์ ํ ๊ถํ์ด ์์ด์ผ๋ง ๋ฌธ์ฅ์ ์คํํ ์ ์๋ค. ์ด๋ฌํ ๊ถํ์ ์์คํ ๊ถํ์ด๋ผ๊ณ ํ๋ฉฐ ์ฝ 100๊ฐ ์ด์์ ์ข ๋ฅ๊ฐ ์๋ค. ์ผ๋ฐ์ ์ผ๋ก ์์คํ ๊ถํ์ ์ผ์ผ์ด ์ ์ ์๊ฒ ๋ถ์ฌ๋์ง ์๋๋ค. 100๊ฐ ์ด์์ ์์คํ ๊ถํ์ ์ผ์ผ์ด ์ฌ์ฉ์์๊ฒ ์ค์ ํ๋ ๊ฒ์ ๋๋ฌด ๋ณต์กํ๊ณ , ํนํ ์ ์ ๋ก๋ถํฐ ๊ถํ์ ๊ด๋ฆฌํ๊ธฐ๊ฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ ๋กค(ROLE)์ ์ด์ฉํ์ฌ ๊ฐํธํ๊ณ ์ฝ๊ฒ ๊ถํ์ ๋ถ์ฌํ๊ฒ ๋๋ค. ๋กค์ ๋ํ ์์ธํ ์ค๋ช ์ ์ฐจํ์ ํ๋๋ก ํ๊ณ ๋จผ์ ์ ์ ๋ฅผ ์์ฑํ๊ณ ๊ถํ์ ๋ถ์ฌํ๋ค. ์๋ก์ด ์ ์ ๋ฅผ ์์ฑํ๋ ค๋ฉด ์ผ๋จ ์ ์ ์์ฑ ๊ถํ(CREATE USER)์ด ์์ด์ผ ํ๋ค.
[์์ ] SCOTT ์ ์ ๋ก ์ ์ํ ๋ค์ PJS ์ ์ (ํจ์ค์๋: KOREA7)๋ฅผ ์์ฑํด ๋ณธ๋ค.
[์์ ] Oracle
CONN SCOTT/TIGER ์ฐ๊ฒฐ๋์๋ค.
* 1ํ์ ์ค๋ฅ: ERROR: ๊ถํ์ด ๋ถ์ถฉ๋ถํ๋ค
ํ์ฌ SCOTT ์ ์ ๋ ์ ์ ๋ฅผ ์์ฑํ ๊ถํ์ ๋ถ์ฌ๋ฐ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๊ถํ์ด ๋ถ์ถฉ๋ถํ๋ค๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. Oracle์ DBA ๊ถํ์ ๊ฐ์ง๊ณ ์๋ SYSTEM ์ ์ ๋ก ์ ์ํ๋ฉด ์ ์ ์์ฑ ๊ถํ(CREATE USER)์ ๋ค๋ฅธ ์ ์ ์๊ฒ ๋ถ์ฌํ ์ ์๋ค.
[์์ ] SCOTT ์ ์ ์๊ฒ ์ ์ ์์ฑ ๊ถํ(CREATE USER)์ ๋ถ์ฌํ ํ ๋ค์ PJS ์ ์ ๋ฅผ ์์ฑํ๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ Oracle]
๊ถํ์ด ๋ถ์ฌ๋์๋ค.
CONN SCOTT/TIGER ์ฐ๊ฒฐ๋์๋ค.
์ฌ์ฉ์๊ฐ ์์ฑ๋์๋ค.
SQL Server๋ ์ ์ ๋ฅผ ์์ฑํ๊ธฐ ์ ๋จผ์ ๋ก๊ทธ์ธ์ ์์ฑํด์ผ ํ๋ค. ๋ก๊ทธ์ธ์ ์์ฑํ ์ ์๋ ๊ถํ์ ๊ฐ์ง ๋ก๊ทธ์ธ์ ๊ธฐ๋ณธ์ ์ผ๋ก sa์ด๋ค.
[์์ ] sa๋ก ๋ก๊ทธ์ธ์ ํ ํ SQL ์ธ์ฆ์ ์ฌ์ฉํ๋ PJS๋ผ๋ ๋ก๊ทธ์ธ(ํจ์ค์๋: KOREA7)์ ์์ฑํด ๋ณธ๋ค. ๋ก๊ทธ์ธ ํ ์ต์ด๋ก ์ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ AdventureWorks ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ค์ ํ๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ SQL Server]
SQL Server์์์ ์ ์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง๋ค ์กด์ฌํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ ์ ๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ ์์ฑํ๊ณ ์ ํ๋ ์ ์ ๊ฐ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ด๋์ ํ ํ ์ฒ๋ฆฌํด์ผ ํ๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ SQL Server]
[์์ ] ์์ฑ๋ PJS ์ ์ ๋ก ๋ก๊ทธ์ธํ๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ Oracle]
์ค๋ฅ: ERROR: ์ฌ์ฉ์ PJS๋ CREATE SESSION ๊ถํ์ ๊ฐ์ง๊ณ ์์ง ์์;
๋ก๊ทธ์จ์ด ๊ฑฐ์ ๋์๋ค.
PJS ์ ์ ๊ฐ ์์ฑ๋์ง๋ง ์๋ฌด๋ฐ ๊ถํ๋ ๋ถ์ฌ๋ฐ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋ก๊ทธ์ธ์ ํ๋ฉด CREATE SESSION ๊ถํ์ด ์๋ค๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ์ ์ ๊ฐ ๋ก๊ทธ์ธ์ ํ๋ ค๋ฉด CREATE SESSION ๊ถํ์ ๋ถ์ฌ๋ฐ์์ผ ํ๋ค.
[์์ ] PJS ์ ์ ๊ฐ ๋ก๊ทธ์ธํ ์ ์๋๋ก CREATE SESSION ๊ถํ์ ๋ถ์ฌํ๋ค.
[์์ ] Oracle
์ฐ๊ฒฐ๋์๋ค.
๊ถํ์ด ๋ถ์ฌ๋์๋ค.
์ฐ๊ฒฐ๋์๋ค.
[์์ ] PJS ์ ์ ๋ก ํ ์ด๋ธ์ ์์ฑํ๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ Oracle]
์ ํ๋ ๋ ์ฝ๋๊ฐ ์๋ค.
* 1 ํ์์ค๋ฅ: ERROR: ๊ถํ์ด๋ถ์ถฉ๋ถํ๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ SQL Server]
๋ฐ์ดํฐ๋ฒ ์ด์ค 'AdventureWorks'์์ CREATE TABLE ์ฌ์ฉ๊ถํ์ด๊ฑฐ๋ถ๋์๋ค.
PJS ์ ์ ๋ ๋ก๊ทธ์ธ ๊ถํ๋ง ๋ถ์ฌ๋์๊ธฐ ๋๋ฌธ์ ํ ์ด๋ธ์ ์์ฑํ๋ ค๋ฉด ํ ์ด๋ธ ์์ฑ ๊ถํ(CREATE TABLE)์ด ๋ถ์ถฉ๋ถํ๋ค๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.(Oracle, SQL Server)
[์์ ] SYSTEM ์ ์ ๋ฅผ ํตํ์ฌ PJS ์ ์ ์๊ฒ CREATE TABLE ๊ถํ์ ๋ถ์ฌํ ํ ๋ค์ ํ ์ด๋ธ์ ์์ฑํ๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ Oracle]
์ฐ๊ฒฐ๋์๋ค.
๊ถํ์ด ๋ถ์ฌ๋์๋ค.
CONN PJS/KOREA7 ์ฐ๊ฒฐ๋์๋ค.
ํ ์ด๋ธ์ด ์์ฑ๋์๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ SQL Server]
๊ถํ์ด ๋ถ์ฌ๋์๋ค.
์คํค๋ง์ ๊ถํ์ ๋ถ์ฌํ๋ค.
[์์ ] SQL Server
๊ถํ์ด ๋ถ์ฌ๋์๋ค.
PJS๋ก ๋ก๊ทธ์ธํ๋ค.
ํ ์ด๋ธ์ด ์์ฑ๋์๋ค.
๋. OBJECT์ ๋ํ ๊ถํ ๋ถ์ฌ
์์์ PJS ์ ์ ๋ฅผ ์์ฑํ์ฌ ๋ก๊ทธ์ธํ๊ณ ํ ์ด๋ธ์ ๋ง๋๋ ๊ณผ์ ์์ ๋ช ๊ฐ์ง์ ๊ถํ์ ๋ํด์ ์ดํด๋ณด์๋ค. ์ด์ ๋ ํน์ ์ ์ ๊ฐ ์์ ํ ๊ฐ์ฒด(OBJECT) ๊ถํ์ ๋ํด ์์๋ณธ๋ค. ์ค๋ธ์ ํธ ๊ถํ์ ํน์ ์ค๋ธ์ ํธ์ธ ํ ์ด๋ธ, ๋ทฐ ๋ฑ์ ๋ํ SELECT, INSERT, DELETE, UPDATE ์์ ๋ช ๋ น์ด๋ฅผ ์๋ฏธํ๋ค. [ํ โ ก-2-9]๋ ์ค๋ธ์ ํธ ๊ถํ๊ณผ ์ค๋ธ์ ํธ์์ ๊ด๊ณ๋ฅผ ๋ณด์ฌ ์ฃผ๊ณ ์๋ค.

์์์ PJS ์ ์ ๊ฐ ์์ฑํ MENU ํ ์ด๋ธ์ SCOTT ์ ์ ๋ฅผ ํตํด์ ์กฐํํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น? SCOTT, PJS ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ์ ์ ๋ ๊ฐ๊ฐ ์์ ์ด ์์ฑํ ํ ์ด๋ธ ์ธ์ ๋ค๋ฅธ ์ ์ ์ ํ ์ด๋ธ์ ์ ๊ทผํ๋ ค๋ฉด ํด๋น ํ ์ด๋ธ์ ๋ํ ์ค๋ธ์ ํธ ๊ถํ์ ์์ ์๋ก๋ถํฐ ๋ถ์ฌ๋ฐ์์ผ ํ๋ค. ์ฐ๋ฆฌ๊ฐ ๋จ์ ์ง์ ๋ฐฉ๋ฌธํ์ ๋ ์ง์ฃผ์ธ์ ํ๋ฝ ์์ด๋ ์ง์ ๋ค์ด๊ฐ ์ ์๋ ๊ฒ๊ณผ ๊ฐ์ ์ด์น์ด๋ค. SQL Server๋ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค. ํ ๊ฐ์ง ๋ค๋ฅธ ์ ์ ์์์ ์ธ๊ธํ๋ฏ์ด ์ ์ ๋ ๋จ์ง ์คํค๋ง์ ๋ํ ๊ถํ๋ง์ ๊ฐ์ง๋ค. ๋ค์ ๋งํ๋ฉด ํ ์ด๋ธ๊ณผ ๊ฐ์ ์ค๋ธ์ ํธ๋ ์ ์ ๊ฐ ์์ ํ๋ ๊ฒ์ด ์๋๊ณ ์คํค๋ง๊ฐ ์์ ๋ฅผ ํ๊ฒ ๋๋ฉฐ ์ ์ ๋ ์คํค๋ง์ ๋ํด ํน์ ํ ๊ถํ์ ๊ฐ์ง๋ ๊ฒ์ด๋ค. ๋จผ์ SCOTT ์ ์ ๋ก ์ ์ํ์ฌ PJS.MENU ํ ์ด๋ธ์ ์กฐํํ๋ค. ๋ค๋ฅธ ์ ์ ๊ฐ ์์ ํ ๊ฐ์ฒด์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด ์์ ๊ฐ์ฒด๋ฅผ ์์ ํ ์ ์ ์ ์ด๋ฆ์ ๋ถ์ฌ์ ์ ๊ทผํด์ผ ํ๋ค. SQL Server๋ ๊ฐ์ฒด ์์ ์์ ํ ์ ์ ์ ์ด๋ฆ์ ๋ถ์ด๋ ๊ฒ์ด ์๋๊ณ ๊ฐ์ฒด๊ฐ ์ํ ์คํค๋ง ์ด๋ฆ์ ๋ถ์ฌ์ผ ํ๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ Oracle]
์ฐ๊ฒฐ๋์๋ค.
SELECT * FROM PJS.MENU
* 1 ํ์์ค๋ฅ: ERROR: ํ ์ด๋ธ๋๋๋ทฐ๊ฐ์กด์ฌํ์ง์๋๋ค.
SCOTT๋ก ๋ก๊ทธ์ธํ๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ SQL Server]
๊ฐ์ฒด์ด๋ฆ 'dbo.MENU'์ด(๊ฐ) ์๋ชป๋์๋ค.
SCOTT ์ ์ ๋ PJS ์ ์ ๋ก๋ถํฐ MENU ํ ์ด๋ธ์ SELECTํ ์ ์๋ ๊ถํ์ ๋ถ์ฌ๋ฐ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ MENU ํ ์ด๋ธ์ ์กฐํํ ์ ์๋ค.
[์์ ] PJS ์ ์ ๋ก ์ ์ํ์ฌ SCOTT ์ ์ ์๊ฒ MENU ํ ์ด๋ธ์ SELECT ํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ Oracle]
์ฐ๊ฒฐ๋์๋ค.
1๊ฐ์ ํ์ด ๋ง๋ค์ด์ก๋ค.
์ปค๋ฐ์ด ์๋ฃ๋์๋ค.
๊ถํ์ด ๋ถ์ฌ๋์๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ SQL Server]
PJS๋ก ๋ก๊ทธ์ธํ๋ค.
1๊ฐ์ ํ์ด ๋ง๋ค์ด์ก๋ค.
๊ถํ์ด ๋ถ์ฌ๋์๋ค.
๋ค์ ํ ๋ฒ SCOTT ์ ์ ๋ก ์ ์ํ์ฌ PJS.MENU ํ ์ด๋ธ์ ์กฐํํ๋ค. ์ด์ PJS.MENU ํ ์ด๋ธ์ SELECTํ๋ฉด ํ ์ด๋ธ ์๋ฃ๋ฅผ ๋ณผ ์ ์๋ค. SCOTT ์ ์ ๋ PJS.MENU ํ ์ด๋ธ์ SELECTํ๋ ๊ถํ๋ง ๋ถ์ฌ ๋ฐ์๊ธฐ ๋๋ฌธ์ UPDATE, INSERT, DELETE์ ๊ฐ์ ๋ค๋ฅธ ์์ ์ ํ ์ ์๋ค. ์ค๋ธ์ ํธ ๊ถํ์ SELECT, INSERT, DELETE, UPDATE ๋ฑ์ ๊ถํ์ ๋ฐ๋ก๋ฐ๋ก ๊ด๋ฆฌํ๋ค.
[์์ ] PJS.MENU ํ ์ด๋ธ์ UPDATE๋ฅผ ์๋ํ๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ Oracle]
์ฐ๊ฒฐ๋์๋ค.
1
ํ์ดํ
1 ๊ฐ์ ํ์ด ์ ํ๋์์ต๋๋ค.
UPDATE PJS.MENU * 1 ํ์์ค๋ฅ
SCOTT์ผ๋ก ๋ก๊ทธ์ธํ๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ SQL Server]
1
ํ์ดํ
1 ๊ฐ์ ํ์ด ์ ํ๋์์ต๋๋ค.
๊ฐ์ฒด'MENU', ๋ฐ์ดํฐ๋ฒ ์ด์ค 'AdventureWorks', ์คํค๋ง 'dbo'์ ๋ํ UPDATE ๊ถํ์ด๊ฑฐ๋ถ๋์๋ค.
๊ถํ์ด ๋ถ์กฑํ์ฌ UPDATE๋ฅผ ํ ์ ์๋ค๋ ์ค๋ฅ๊ฐ ๋ํ๋๋ค. PJS ์ ์ ์๊ฒ UPDATE ๊ถํ์ ๋ถ์ฌํ ํ ๋ค์ ์๋ํ๋ฉด ์ ๋ฐ์ดํธ๊ฐ ๊ฐ๋ฅํ๋ค.
3. Role์ ์ด์ฉํ ๊ถํ ๋ถ์ฌ
์ ์ ๋ฅผ ์์ฑํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก CREATE SESSION, CREATE TABLE, CREATE PROCEDURE ๋ฑ ๋ง์ ๊ถํ์ ๋ถ์ฌํด์ผ ํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์๋ ์ ์ ๊ฐ ์์ฑ๋ ๋๋ง๋ค ๊ฐ๊ฐ์ ๊ถํ๋ค์ ์ ์ ์๊ฒ ๋ถ์ฌํ๋ ์์ ์ ์ํํด์ผ ํ๋ฉฐ ๊ฐํน ๊ถํ์ ๋น ๋จ๋ฆด ์๋ ์์ผ๋ฏ๋ก ๊ฐ ์ ์ ๋ณ๋ก ์ด๋ค ๊ถํ์ด ๋ถ์ฌ๋์๋์ง๋ฅผ ๊ด๋ฆฌํด์ผ ํ๋ค. ํ์ง๋ง ๊ด๋ฆฌํด์ผ ํ ์ ์ ๊ฐ ์ ์ ๋์ด๋๊ณ ์์ฃผ ๋ณ๊ฒฝ๋๋ ์ํฉ์์๋ ๋งค์ฐ ๋ฒ๊ฑฐ๋ก์ด ์์ ์ด ๋ ๊ฒ์ด๋ค. ์ด์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์ค์ด๊ธฐ ์ํ์ฌ ๋ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ์ ๋ค๊ณผ ๊ถํ๋ค ์ฌ์ด์์ ์ค๊ฐ ์ญํ ์ ํ๋ ROLE์ ์ ๊ณตํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์๋ ROLE์ ์์ฑํ๊ณ , ROLE์ ๊ฐ์ข ๊ถํ๋ค์ ๋ถ์ฌํ ํ ROLE์ ๋ค๋ฅธ ROLE์ด๋ ์ ์ ์๊ฒ ๋ถ์ฌํ ์ ์๋ค. ๋ํ ROLE์ ํฌํจ๋์ด ์๋ ๊ถํ๋ค์ด ํ์ํ ์ ์ ์๊ฒ๋ ํด๋น ROLE๋ง์ ๋ถ์ฌํจ์ผ๋ก์จ ๋น ๋ฅด๊ณ ์ ํํ๊ฒ ํ์ํ ๊ถํ์ ๋ถ์ฌํ ์ ์๊ฒ ๋๋ค. [๊ทธ๋ฆผ โ ก-2-17]์์๋ ์ ์ ๋ค๊ณผ ๊ถํ๋ค ์ฌ์ด ๊ฐ ROLE์ ์ญํ ์ ๋ณด์ฌ ์ฃผ๊ณ ์๋ค. ์ผ์ชฝ ๊ทธ๋ฆผ์ ๊ถํ์ ์ง์ ์ ์ ์๊ฒ ํ ๋นํ ๋๋ฅผ ๋ํ๋ด๋ ๊ฒ์ด๋ฉฐ, ์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ์ ROLE์ ๊ถํ์ ๋ถ์ฌํ ํ ROLE์ ์ ์ ๋ค์๊ฒ ๋ถ์ฌํ๋ ๊ฒ์ ๋ํ๋ด๊ณ ์๋ค.

ROLE์๋ ์์คํ ๊ถํ๊ณผ ์ค๋ธ์ ํธ ๊ถํ์ ๋ชจ๋ ๋ถ์ฌํ ์ ์์ผ๋ฉฐ, ROLE์ ์ ์ ์๊ฒ ์ง์ ๋ถ์ฌ๋ ์๋ ์๊ณ , ๋ค๋ฅธ ROLE์ ํฌํจํ์ฌ ์ ์ ์๊ฒ ๋ถ์ฌ๋ ์๋ ์๋ค.
[์์ ] JISUNG ์ ์ ์๊ฒ CREATE SESSION๊ณผ CREATE TABLE ๊ถํ์ ๊ฐ์ง ROLE์ ์์ฑํ ํ ROLE์ ์ด์ฉํ์ฌ ๋ค์ ๊ถํ์ ํ ๋นํ๋ค. ๊ถํ์ ์ทจ์ํ ๋๋ REVOKE๋ฅผ ์ฌ์ฉํ๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ Oracle]
์ฐ๊ฒฐ๋์๋ค.
๊ถํ์ด ์ทจ์๋์๋ค.
CONN JISUNG/KOREA7 ERROR: ์ฌ์ฉ์ JISUNG์ CREATE SESSION ๊ถํ์๊ฐ์ง๊ณ ์์ง์์.๋ก๊ทธ์จ์ด๊ฑฐ์ ๋์๋ค.
sa๋ก ๋ก๊ทธ์ธํ๋ค.
[์์ ] SQL Server
๊ถํ์ด ์ทจ์๋์๋ค.
PJS๋ก ๋ก๊ทธ์ธํ๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ SQL Server]
๋ฐ์ดํฐ๋ฒ ์ด์ค 'AdventureWorks'์์ CREATE TABLE ์ฌ์ฉ๊ถํ์ด๊ฑฐ๋ถ๋์๋ค.
[์์ ] ์ด์ LOGIN_TABLE์ด๋ผ๋ ROLE์ ๋ง๋ค๊ณ , ์ด ROLE์ ์ด์ฉํ์ฌ JISUNG ์ ์ ์๊ฒ ๊ถํ์ ๋ถ์ฌํ๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ Oracle]
์ฐ๊ฒฐ๋์๋ค.
๋กค์ด ์์ฑ๋์๋ค.
๊ถํ์ด ๋ถ์ฌ๋์๋ค.
๊ถํ์ด ๋ถ์ฌ๋์๋ค.
์ฐ๊ฒฐ๋์๋ค.
ํ ์ด๋ธ์ด ์์ฑ๋์๋ค.
์ด์ ๊ฐ์ด ROLE์ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถํ์ ์ง์ ๋ถ์ฌํ๋ ๊ฒ๋ณด๋ค ๋น ๋ฅด๊ณ ์์ ํ๊ฒ ์ ์ ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค. Oracle์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ช ๊ฐ์ง ROLE์ ์ ๊ณตํ๊ณ ์๋ค. ๊ทธ ์ค ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ROLE์ CONNECT์ RESOURCE์ด๋ค. ์ฐธ์กฐ๋ฅผ ์ํด [ํ โ ก-2-11]์ CONNECT์ RESOURCE ROLE์ ๋ถ์ฌ๋ ๊ถํ ๋ชฉ๋ก์ ์ ๋ฆฌํ ๊ฒ์ด๋ค. CONNECT๋ CREATE SESSION๊ณผ ๊ฐ์ ๋ก๊ทธ์ธ ๊ถํ์ด ํฌํจ๋์ด ์๊ณ , RESOURCE๋ CREATE TABLE๊ณผ ๊ฐ์ ์ค๋ธ์ ํธ์ ์์ฑ ๊ถํ์ด ํฌํจ๋์ด ์๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ ์ ๋ฅผ ์์ฑํ ๋ CONNECT์ RESOURCE ROLE์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ๊ถํ์ ๋ถ์ฌํ๋ค.

์ ์ ๋ฅผ ์ญ์ ํ๋ ๋ช ๋ น์ด๋ DROP USER์ด๊ณ , CASCADE ์ต์ ์ ์ฃผ๋ฉด ํด๋น ์ ์ ๊ฐ ์์ฑํ ์ค๋ธ์ ํธ๋ฅผ ๋จผ์ ์ญ์ ํ ํ ์ ์ ๋ฅผ ์ญ์ ํ๋ค.
[์์ ] ์์์ MENU๋ผ๋ ํ ์ด๋ธ์ ์์ฑํ๊ธฐ ๋๋ฌธ์ CASCADE ์ต์ ์ ์ฌ์ฉํ์ฌ JISUNG ์ ์ ๋ฅผ ์ญ์ ํ ํ, ์ ์ ์ฌ์์ฑ ๋ฐ ๊ธฐ๋ณธ์ ์ธ ROLE์ ๋ถ์ฌํ๋ค.
[์์ ๋ฐ ์คํ ๊ฒฐ๊ณผ Oracle]
์ฐ๊ฒฐ๋์๋ค.
์ฌ์ฉ์๊ฐ ์ญ์ ๋์๋ค.
* JISUNG ์ ์ ๊ฐ ๋ง๋ MENU ํ ์ด๋ธ๋ ๊ฐ์ด ์ญ์ ๋์๋ค.
์ฌ์ฉ์๊ฐ ์์ฑ๋์๋ค.
๊ถํ์ด ๋ถ์ฌ๋์๋ค.
์ฐ๊ฒฐ๋์๋ค.
ํ ์ด๋ธ์ด ์์ฑ๋์๋ค.
SQL Server์์๋ ์์ ๊ฐ์ด ROLE์ ์์ฑํ์ฌ ์ฌ์ฉํ๊ธฐ๋ณด๋ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ROLE์ ๋ฉค๋ฒ๋ก ์ฐธ์ฌํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ค. ํน์ ๋ก๊ทธ์ธ์ด ๋ฉค๋ฒ๋ก ์ฐธ์ฌํ ์ ์๋ ์๋ฒ ์์ค ์ญํ (ROLE)์ [ํ โ ก-2-12]์ ๊ฐ๋ค.

๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์กด์ฌํ๋ ์ ์ ์ ๋ํด์๋ ์๋์ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ญํ ์ ๋ฉค๋ฒ๋ก ์ฐธ์ฌํ ์ ์๋ค.

SQL Server์์๋ Oracle๊ณผ ๊ฐ์ด Role์ ์์ฃผ ์ฌ์ฉํ์ง ์๋๋ค. ๋์ ์์์ ์ธ๊ธํ ์๋ฒ ์์ค ์ญํ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ค ์ญํ ์ ์ด์ฉํ์ฌ ๋ก๊ทธ์ธ ๋ฐ ์ฌ์ฉ์ ๊ถํ์ ์ ์ดํ๋ค. ์ธ์คํด์ค ์์ค์ ์์ ์ด ํ์ํ ๊ฒฝ์ฐ ์๋ฒ ์์ค ์ญํ ์ ๋ถ์ฌํ๊ณ ๊ทธ๋ณด๋ค ์์ ๊ฐ๋ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ค์ ๊ถํ์ด ํ์ํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ค์ ์ญํ ์ ๋ถ์ฌํ๋ฉด ๋๋ค. ์ฆ ์ธ์คํด์ค ์์ค์ ์๊ตฌํ๋ ๋ก๊ทธ์ธ์๋ ์๋ฒ ์์ค ์ญํ ์, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ค์ ์๊ตฌํ๋ ์ฌ์ฉ์์๊ฒ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ค ์ญํ ์ ๋ถ์ฌํ๋ค.
์ถ์ฒ : ๋ฐ์ดํฐ์จ์์ด โ ํ๊ตญ๋ฐ์ดํฐ์ฐ์ ์งํฅ์(https://dataonair.or.kr)
Last updated