๋ฐ์ดํฐ ์ ์ ์ธ์ด๋ก ๊ฐ์ฒด(OBJECT)๋ฅผ ๋ง๋ค๊ณ (CREATE), ์์ ํ๊ณ (ALTER), ์ญ์ (DROP)ํ๋ ๊ตฌ๋ฌธ์ ๋งํจ
๋ฐ์ดํฐ์ ์ ์ฒด ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ์ธ์ด๋ก ์ฃผ๋ก DB๊ด๋ฆฌ์, ์ค๊ณ์๊ฐ ์ฌ์ฉํจ.
-- ๊ฐ์ฒด : ํ ์ด๋ธ(TABLE), ๋ทฐ(VIEW), ์ํ์ค(SEQUENCE),
-- ์ธ๋ฑ์ค(INDEX), ์ฌ์ฉ์(USER),
-- ํจํค์ง(PACKAGE), ํธ๋ฆฌ๊ฑฐ(TRIGGER)
-- ํ๋ก์์ ธ(PROCEDURE), ํจ์(FUNCTION)
-- ๋์์ด(SYNONYM)..
ํ ์ด๋ธ์ด๋ ์ธ๋ฑ์ค, ๋ทฐ ๋ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ตฌ๋ฌธ
-- ํ
์ด๋ธ๋ก ์์ฑ๋ ๊ฐ์ฒด๋ DROP ๊ตฌ๋ฌธ์ ํตํด ์ ๊ฑฐ ํ ์ ์์
-- DROP TABLE MEMBER;
์๋ฃํ
NUMBER : ์ซ์ํ(์ ์, ์ค์)
CHAR(ํฌ๊ธฐ) : ๊ณ ์ ๊ธธ์ด ๋ฌธ์ํ (2000 BYTE) : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ณธ ๋ฌธ์ ์ธํธ(UTF-8)๋ก ์ธ์ฝ๋ฉ
--> ๋ฐ์ดํธ ์ ๊ธฐ์ค.
--> ์์ด/์ซ์/๊ธฐํธ 1BYTE, ํ๊ธ 3BYTE
--> CHAR(10) ์ปฌ๋ผ์ 'ABC' 3BYTE ๋ฌธ์์ด๋ง ์ ์ฅํด๋ 10BYTE ์ ์ฅ๊ณต๊ฐ ๋ชจ๋ ์ฌ์ฉ(๋จ์ ๊ณต๊ฐ ๊ณต๋ฐฑ์ผ๋ก ์ฑ์ -> ๋ญ๋น)
VARCHAR2(ํฌ๊ธฐ) : ๊ฐ๋ณ๊ธธ์ด ๋ฌธ์ํ (์ต๋ 4000 BYTE) : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ณธ ๋ฌธ์ ์ธํธ(UTF-8)๋ก ์ธ์ฝ๋ฉ
--> ๋ฐ์ดํธ ์ ๊ธฐ์ค.
--> ์์ด/์ซ์/๊ธฐํธ 1BYTE, ํ๊ธ 3BYTE
--> VARCHAR2(10) ์ปฌ๋ผ์ 'ABC' 3BYTE ๋ฌธ์์ด๋ง ์ ์ฅํ๋ฉด ๋๋จธ์ง 7BYTE ๋จ์ ๊ณต๊ฐ ๋ฐํ
NVARCHAR2(๋ฌธ์์) : ๊ฐ๋ณ๊ธธ์ด ๋ฌธ์ํ (์ต๋ 4000 BYTE -> 2000๊ธ์) : UTF-16๋ก ์ธ์ฝ๋ฉ
--> ๋ฌธ์๊ธธ์ด ์ ๊ธฐ์ค.
--> ๋ชจ๋ ๋ฌธ์ 2BYTE
--> NVARCHAR2(10) ์ปฌ๋ผ์ 10 ๊ธ์๊ธธ์ด ์๋ฌด๊ธ์(์์ด,์ซ์,ํ๊ธ ๋ฑ) ๊ฐ๋ฅ
--> NVARCHAR2(10) ์ปฌ๋ผ์ '์๋ '๊ณผ ๊ฐ์ 2๊ธ์(์ ๋์ฝ๋ ๋ฌธ์)๋ฅผ ์ ๋ ฅํ์ ๋,
๋๋จธ์ง 8๊ฐ์ ๋ฌธ์ ๋จ์ ๊ณต๊ฐ ๋ฐํ
DATE : ๋ ์ง ํ์
BLOB : ๋์ฉ๋ ์ด์ง ๋ฐ์ดํฐ (4GB)
CLOB : ๋์ฉ๋ ๋ฌธ์ ๋ฐ์ดํฐ (4GB)
์ฌ์ฉ์๊ฐ ์ํ๋ ์กฐ๊ฑด์ ๋ฐ์ดํฐ๋ง ์ ์งํ๊ธฐ ์ํด์ ํน์ ์ปฌ๋ผ์ ์ค์ ํ๋ ์ ์ฝ.
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ์ ๋ชฉ์ ์ผ๋ก ํจ.
-> ์ค๋ณต ๋ฐ์ดํฐ X
- ์ ๋ ฅ ๋ฐ์ดํฐ์ ๋ฌธ์ ๊ฐ ์๋์ง ์๋์ผ๋ก ๊ฒ์ฌํ๋ ๋ชฉ์
- ๋ฐ์ดํฐ์ ์์ /์ญ์ ๊ฐ๋ฅ ์ฌ๋ถ ๊ฒ์ฌ๋ฑ์ ๋ชฉ์ ์ผ๋ก ํจ.
--> ์ ์ฝ์กฐ๊ฑด์ ์๋ฐฐํ๋ DML ๊ตฌ๋ฌธ์ ์ํํ ์ ์๋ค.
์ ์ฝ์กฐ๊ฑด ์ข ๋ฅ
PRIMARY KEY, NOT NULL, UNIQUE, CHECK, FOREIGN KEY.
- ์ ์ฝ์กฐ๊ฑด ์ง์ ๋ฐฉ๋ฒ
-- 1) ์ปฌ๋ผ ๋ ๋ฒจ : [CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช ] ์ ์ฝ์กฐ๊ฑด
-- 2) ํ ์ด๋ธ ๋ ๋ฒจ : [CONSTRAINT ์ ์ฝ์กฐ๊ฑด๋ช ] ์ ์ฝ์กฐ๊ฑด(์ปฌ๋ผ๋ช )
- UNIQUE ๋ณตํฉํค
-- ๋ ๊ฐ ์ด์์ ์ปฌ๋ผ์ ๋ฌถ์ด์ ํ๋์ UNIQUE ์ ์ฝ์กฐ๊ฑด์ ์ค์ ํจ
-- ๋ณตํฉํค ์ง์ ์ ํ ์ด๋ธ ๋ ๋ฒจ๋ง ๊ฐ๋ฅํ๋ค.!
-- ๋ณตํฉํค๋ ์ง์ ๋ ๋ชจ๋ ์ปฌ๋ผ์ ๊ฐ์ด ๊ฐ์ ๋ ์๋ฐฐ๋๋ค!
ํ
์ด๋ธ์์ ํ ํ์ ์ ๋ณด๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ๊ณ ์ ์๋ณ์(Identifier)์ญํ
NOT NULL์ ์๋ฏธ์ UNIQUE์ ์๋ฏธ๋ฅผ ๋ ๋ค ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ํ ํ
์ด๋ธ ๋น ํ๋๋ง ์ค์ ๊ฐ๋ฅ
์ปฌ๋ผ ๋ ๋ฒจ๊ณผ ํ
์ด๋ธ ๋ ๋ฒจ ๋ ๋ค ์ง์ ๊ฐ๋ฅ
ํ ๊ฐ ์ปฌ๋ผ์ ์ค์ ํ ์ ์๊ณ , ์ฌ๋ฌ๊ฐ์ ์ปฌ๋ผ์ ๋ฌถ์ด์ ์ค์ ํ ์ ์์(== PRIMARY ๋ณตํฉํค )
- ์ฐธ์กฐ(REFERENCES)๋ ๋ค๋ฅธ ํ ์ด๋ธ์ ์ปฌ๋ผ์ด ์ ๊ณตํ๋ ๊ฐ๋ง ์ฌ์ฉํ ์ ์์
-- FOREIGN KEY ์ ์ฝ์กฐ๊ฑด์ ์ํด์ ํ ์ด๋ธ๊ฐ์ ๊ด๊ณ๊ฐ ํ์ฑ๋จ
-- ์ ๊ณต๋๋ ๊ฐ ์ธ์๋ NULL์ ์ฌ์ฉํ ์ ์์.
- ์ปฌ๋ผ๋ ๋ฒจ์ผ ๊ฒฝ์ฐ
-- ์ปฌ๋ผ๋ช ์๋ฃํ(ํฌ๊ธฐ) [CONSTRAINT ์ด๋ฆ] REFERENCES ์ฐธ์กฐํ ํ ์ด๋ธ๋ช [(์ฐธ์กฐํ ์ปฌ๋ผ)][์ญ์ ๋ฃฐ]
- ํ ์ด๋ธ๋ ๋ฒจ์ผ ๊ฒฝ์ฐ
-- [CONSTRAINT ์ด๋ฆ] FOREIGN KEY (์ ์ฉํ ์ปฌ๋ผ๋ช ) REFERENCES ์ฐธ์กฐํ ํ ์ด๋ธ๋ช [(์ฐธ์กฐํ ์ปฌ๋ผ)][์ญ์ ๋ฃฐ]
-- ์ฐธ์กฐ๋ ์ ์๋ ์ปฌ๋ผ์ PRIMARY KEY์ปฌ๋ผ๊ณผ, UNIQUE ์ง์ ๋ ์ปฌ๋ผ๋ง ์ธ๋ํค๋ก ์ฌ์ฉํ ์ ์์.
-- ์ฐธ์กฐํ ํ ์ด๋ธ์ ์ฐธ์กฐํ ์ปฌ๋ผ๋ช ์ด ์๋ต๋๋ฉด, PRIMARY KEY๋ก ์ค์ ๋ ์ปฌ๋ผ์ด ์๋ ์ฐธ์กฐํ ์ปฌ๋ผ์ด ๋จ.
- FOREIGN KEY ์ญ์ ์ต์
-- ๋ถ๋ชจ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ญ์ ์ ์์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ค ์์ผ๋ก ์ฒ๋ฆฌํ ์ง์ ๋ํ ๋ด์ฉ์ ์ค์ ํ ์ ์๋ค.
-- 1) ON DELETE RESTRICTED(์ญ์ ์ ํ)๋ก ๊ธฐ๋ณธ ์ง์ ๋์ด ์์
-- FOREIGN KEY๋ก ์ง์ ๋ ์ปฌ๋ผ์์ ์ฌ์ฉ๋๊ณ ์๋ ๊ฐ์ผ ๊ฒฝ์ฐ
-- ์ ๊ณตํ๋ ์ปฌ๋ผ์ ๊ฐ์ ์ญ์ ํ์ง ๋ชปํจ
-- 2) ON DELETE SET NULL : ๋ถ๋ชจํค ์ญ์ ์ ์์ํค๋ฅผ NULL๋ก ๋ณ๊ฒฝํ๋ ์ต์
-- 3) ON DELETE CASCADE : ๋ถ๋ชจํค ์ญ์ ์ ์์ํค๋ ํจ๊ป ์ญ์ ๋จ
-- ๋ถ๋ชจํค ์ญ์ ์ ๊ฐ์ ์ฌ์ฉํ๊ณ ์๋ ์์ ํ ์ด๋ธ์ ์ปฌ๋ผ์ ํด๋นํ๋ ํ์ด ์ญ์ ๋จ
-> GENDER ์ปฌ๋ผ์ CHECK ์ ์ฝ์กฐ๊ฑด์ผ๋ก '๋จ' ๋๋ '์ฌ' ๋ง ์ฝ์ ๊ฐ๋ฅํ๋๋ก ์ค์ ํด๋
-> ์ด ์ธ์ ๊ฐ์ด ๋ค์ด์ค๋ฉด ์ฒดํฌ ์ ์ฝ์กฐ๊ฑด ์๋ฐฐ๋์ด ์๋ฌ ๋ฐ์!!
ALTER (๋ฐ๊พธ๋ค, ์์ ํ๋ค, ๋ณ์กฐํ๋ค)
-- ํ ์ด๋ธ์์ ์์ ํ ์ ์๋ ๊ฒ
1) ์ ์ฝ ์กฐ๊ฑด(์ถ๊ฐ/์ญ์ )
2) ์ปฌ๋ผ(์ถ๊ฐ/์์ /์ญ์ )
3) ์ด๋ฆ๋ณ๊ฒฝ (ํ ์ด๋ธ๋ช , ์ปฌ๋ผ๋ช ..)
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฅผ ์ญ์ ํ๋ ๊ตฌ๋ฌธ
- DDL ์ฃผ์์ฌํญ
-- 1) DDL ์ COMMIT/ROLLBACK ์ด ๋์ง ์๋๋ค.
-- 2) DDL๊ณผ DML ๊ตฌ๋ฌธ ์์ด์ ์ํํ๋ฉด ์๋๋ค!
-- DDL(CREATE ALTER DROP : ๊ฐ์ฒด ์์ฑ/์์ /์ญ์ )
-- DML(INSERT,UPDATE,DELETE : ๋ฐ์ดํฐ(ํ) ์ถ๊ฐ/๊ฐฑ์ /์ญ์ )
--> DDL์ ์ํ ์ ์กด์ฌํ๊ณ ์๋ ํธ๋์ญ์ ์ ๋ชจ๋ DB์ ๊ฐ์ COMMIT ์ํด
-> DDL์ด ์ข ๋ฃ๋ ํ DML ๊ตฌ๋ฌธ์ ์ํํ ์ ์๋๋ก ๊ถ์ฅ!