์ 1์ DML - ์กฐํ ๋ฐ ๊ฒ์, ๋ฐ์ดํฐ ๋ณํ
1. DML
- ํธ์คํธ ํ๋ก๊ทธ๋จ ์์ ์ฝ์ ๋์ด ์ฌ์ฉ, ๋ฐ์ดํฐ ๋ถ์์ด๋ผ๊ณ ๋ ํจ
- Procedural DML(์ ์ฐจ์ ๋ฐ์ดํฐ ์กฐ์์ด): ์ด๊ธ์ธ์ด, ์ฌ์ฉ์๊ฐ ๋ฌด์จ ๋ฐ์ดํฐ๋ฅผ ์ํ๊ณ ์ด๋ป๊ฒ ์ ๊ทผํด ์ฒ๋ฆฌํ ๊ฒ์ธ์ง ๋ช ์ธํด์ผ ํจ
- Nonprocedural DML(๋น์ ์ฐจ์ ๋ฐ์ดํฐ ์กฐ์์ด): ๊ณ ๊ธ์ธ์ด, ์ฌ์ฉ์๊ฐ ๋ฌด์จ ๋ฐ์ดํฐ๋ฅผ ์ํ๋์ง๋ง ๋ช ์ธํ๊ณ ์ด๋ป๊ฒ ์ ๊ทผํ ๊ฒ์ธ์ง๋ ํ์ง ์์. ์ ์ธ์ ์ธ์ด๋ผ๊ณ ๋ ํจ
2. INSERT - ๋ฐ์ดํฐ ์ ๋ ฅ ๋ฐฉ๋ฒ
- INSERT INTO ๊ณ ๊ฐ (์ด๋ฆ, ์ฃผ์) VALUES ('์ด์์ ', 'ํ์');
- INSERT INTO ํ
์ด๋ธ๋ช
(์ปฌ๋ผ๋ฆฌ์คํธ / ์๋ต = ์ ์ฒด์ปฌ๋ผ)
VALUES (์ปฌ๋ผ๋ช ์์์ ๋ง์ถฐ ์ ๋ ฅํ ๊ฐ ๋งคํํด ์์ฑ); - ๋ฐ์ดํฐ๊ฐ ๋ฌธ์ํ์ผ ๊ฒฝ์ฐ “”๋ก ๋ฌถ์ด์ ์ ๋ ฅ
3. UPDATE - ์ ๋ณด ์์
- ๋ฐ์ดํฐ๊ฐ ๋ฌธ์ํ์ผ ๊ฒฝ์ฐ “”๋ก ๋ฌถ์ด์ ์ ๋ ฅ
- SQL>> “Employees๋ผ๋ ํ
์ด๋ธ์์ EmployeeID๊ฐ 4์ธ ์ง์์ Salary๋ฅผ 50000์ผ๋ก ๋ณ๊ฒฝ”
UPDATE Employees SET Salary = 50000 WHERE EmployeeID = 4; - UPDATE ํ
์ด๋ธ๋ช
SET ์นผ๋ผ๋ช = ๋ณ๊ฒฝํ ๊ฐ WHERE ์กฐ๊ฑด;
4. DELETE - ์ญ์
- DELETE FROM ํ ์ด๋ธ๋ช WHERE ์กฐ๊ฑด;
- FROM ๋ฌธ๊ตฌ๋ ์๋ต ๊ฐ๋ฅ
- WHERE ์ ์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ํ ์ด๋ธ์ ์ ์ฒด ๋ฐ์ดํฐ ์ญ์
5. SELECT - ๋ฐ์ดํฐ ์กฐํ
- SELECT [ALL(*) | DISTINCT] ์นผ๋ผ1, ์นผ๋ผ2, … FROM ํ ์ด๋ธ๋ช ;
- ALL(*): ๋ํดํธ ์ต์ (์ค๋ณต ๋ฐ์ดํฐ ๋ชจ๋ ์ถ๋ ฅ)
- DISTINCT: ์ค๋ณต์ ๊ฑฐ ํ์ฌ 1๊ฑด์ผ๋ก ์ถ๋ ฅ
- ์กฐํ๋ ๊ฒฐ๊ณผ์ ๋ณ๋ช (์๋ฆฌ์์ค/ALIAS)์ ๋ถ์ฌํด์ ์นผ๋ผ ๋ ์ด๋ธ ๋ณ๊ฒฝ ๊ฐ๋ฅ
- ์นผ๋ ๋ช ๋ฐ๋ก ๋ค์ ์ค๊ณ , ์นผ๋ผ๋ช ๊ณผ ALIAS ์ฌ์ด์ AS ํค์๋ ์ฌ์ฉ ๊ฐ๋ฅ (์ ํ์)
- ๊ณต๋ฐฑ/ํน์๋ฌธ์, ๋์๋ฌธ์ ๊ตฌ๋ถ์ด ํ์ํ ๊ฒฝ์ฐ “”๋ก ๋ฌถ์ด์ ์ฌ์ฉ
6. ์ฐ์ ์ฐ์ฐ์
- NUMBER์ DATE ์๋ฃํ์ ์ ์ฉ (์ํ ์ฌ์น์ฐ์ฐ๊ณผ ๋์ผ)
7. ํฉ์ฑ ์ฐ์ฑ์ - ๋ฌธ์์ ๋ฌธ์๋ฅผ ์ฐ๊ฒฐํ๋ ํฉ์ฑ(CONCATENATION) ์ฐ์ฐ์
- [Oracle] → ||
- [SQL Server] → +
- SQL>> SELECT PLAYER_NAM+’์ ์,’+HEIGHT+’cm,’+WEIGHT+’kg’ ์ฒด๋ ฅ์ ๋ณด FROM PLAYER;
์ ๊ฒฝ๋์ ์,173cm,65kg ์ ์์ต์ ์, 176cm, 63kg
์ 2์ TCL - ํธ๋์ญ์ ์ ์ด
1. TCL
- ๋ ผ๋ฆฌ์ ์์ ๋จ์๋ฅผ ๋ฌถ์ด DML์ ์ํด ์กฐ์๋ ๊ฒฐ๊ณผ๋ฅผ ์์ ๋จ์ ๋ณ๋ก ์ ์ด
- ์ผ๋ถ์์๋ DCL๋ก ๋ถ๋ฅํ๊ธฐ๋ ํจ
2. ํธ๋์ญ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ผ๋ฆฌ์ ์ธ ์ฐ์ฐ ๋จ์
- ํธ๋์ญ์ ์๋ ํ๋ ์ด์์ SQL ๋ฌธ์ฅ์ด ํฌํจ๋จ
- ํธ๋์ญ์ ์ ๋ฐ์ ํ ๊ด๋ จ๋์ด ๋ถ๋ฆฌ๋ ์ ์๋ ํ ๊ฐ ์ด์์ DB์กฐ์์ ๊ฐ๋ฆฌํด
- ๋ถํ ํ ์ ์๋ ํ์๋จ์, ์ ๋ถ ์ ์ฉํ๊ฑฐ๋ ์ ๋ถ ์ทจ์ํด์ผ ํจ
3. ํธ๋์ญ์ ์ ํน์ง
- ์์์ฑ(atomicity): ๋ชจ๋ ์ฑ๊ณต ์๋ ์ ํ ์คํ๋์ง ์์ ์ํ๋ก ๋จ๊ธฐ(Rollback)
- ์ผ๊ด์ฑ(consistency): ํธ๋์ญ์ ์ด ์ค๋ ์ดํ์๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋ด์ฉ ์๋ชป ์์ผ๋ฉด ์๋จ
- ๋ ๋ฆฝ์ฑ.๊ณ ๋ฆฝ์ฑ(isolation): ํธ๋์ญ์ ์ด ์คํ๋๋ ๋์ค ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ํฅ ๋ฐ์ผ๋ฉด ์๋จ
- ์ง์์ฑ(durability): ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ํ๋๋ฉด ๊ฐฑ์ ๋ ๋ฐ๋ฒ ๋ด์ฉ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ
4. ํธ๋์ญ์ ์ ์ปจํธ๋กคํ๋ TCL
- ์ปค๋ฐ(COMMIT): ์ฌ๋ฐ๋ฅด๊ฒ ๋ฐ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ฒ ์ ๋ฐ์์ํค๋ ๊ฒ
- ๋กค๋ฐฑ(ROLLBACK): ํธ๋์ญ์ ์์ ์ด์ ์ ์ํ๋ก ๋๋๋ฆฌ๋ ๊ฒ
- ์ ์ฅ์ (SAVEPOINT): ์ ์ฅ์ ๊ธฐ๋ฅ
- ์ ๊ธ(LOCKING): ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๋์์ ์ ๊ทผํ์ง ๋ชปํ๊ณ ๋ก ์ ํ
- ํธ๋์ญ์
๋์์ด ๋๋ SQL
- UPDATE, INSERT, DELETE ๋ฑ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ DML ๋ฌธ
- SELECT FOR UPDATE ๋ฑ ๋ฐฐํ์ LOCK์ ์๊ตฌํ๋ SELECT ๋ฌธ
5. COMMIT - ์ ๋ ฅ/์์ /์ญ์ ํ ์๋ฃ๊ฐ ๋ฌธ์ ๊ฐ ์์ ๊ฒฝ์ฐ ๋ณ๊ฒฝ ์ฌํญ ์ ์ฉ
- COMMIT ์ด์ ์ํ
- ๋จ์ง ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ์๋ง ์ํฅ ์ฃผ๊ณ , ์ด์ ์ํ๋ก ๋ณต๊ตฌ ์ฌ๋ฅ
- ํ์ฌ ์ฌ์ฉ์๋ SELECT ๋ฌธ์ผ๋ก ๋ณ๊ฒฝ ๊ฒฐ๊ณผ ํ์ธ ๊ฐ๋ฅ
- ๋ค๋ฅธ ์ฌ์ฉ์๋ ํ์ฌ ์ฌ์ฉ์๊ฐ ์ํํ ๊ฒฐ๊ณผ ํ์ธ ๋ถ๊ฐ๋ฅ
- ๋ณ๊ฒฝ๋ ํ์ ์์ง ์ ๊ธ(LOCKING) ์ค์ ๋์ด ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ
- COMMIT ์ดํ ์ํ
- ๋ฐ์ดํฐ์ ๋ํ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ๋ฒ ์ ์๊ตฌ ๋ฐ์
- ์ด์ ๋ฐ์ดํฐ๋ ์์ํ ์์ด๋ฒ๋ฆผ
- ๋ชจ๋ ์ฌ์ฉ์๊ฐ ๊ฒฐ๊ณผ ์กฐํ ๊ฐ๋ฅ
- ๋ณ๊ฒฝ๋ ํ์ ์ ๊ธ ํด์ ๋์ด ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ
- Auto COMMIT
- [Oracle] ์์๋ก COMMIT ํน์ ROLLBACK์ ์ํํด ์ฃผ์ด์ผ ํธ๋์ญ์ ์ด ์ข ๋ฃ
- [SQL Server] ๊ธฐ๋ณธ์ ์ผ๋ก Auto Commit ๋ชจ๋, DML ๊ตฌ๋ฌธ์ด ์ฑ๊ณต์ด๋ฉด ์๋์ผ๋ก COMMIT๋๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์๋์ผ๋ก ROLLBACK ์ฒ๋ฆฌ
6. ROLLBACK - COMMIT ์ด์ ์ผ๋ก ๋๋๋ฆผ
- ํ ์ด๋ธ์ ์ ๋ ฅ/์์ /์ญ์ ํ ๋ฐ์ดํฐ์ ๋ํด COMMIT ์ด์ ์ ๋ณ๊ฒฝ์ฌํญ์ ์ทจ์
- ์ด์ ๋ฐ์ดํฐ๊ฐ ๋ค์ ์ฌ์ ๋น๋จ
- ๊ด๋ จ ํ์ ๋ํ ์ ๊ธ์ด ํ๋ฆฌ๊ณ , ๋ค๋ฅธ ์ฌ์ฉ์๋ค์ด ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ
7. COMMIT๊ณผ ROLLBACK์ ์ฌ์ฉํจ์ผ๋ก์จ ์ป์ ์ ์๋ ํจ๊ณผ
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ณด๋น
- ์๊ตฌ์ ์ธ ๋ณ๊ฒฝ์ ํ๊ธฐ ์ ์ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ฌํญ์ ํ์ธ ๊ฐ๋ฅ
- ๋ ผ๋ฆฌ์ ์ผ๋ก ์ฐ๊ด๋ ์์ ์ ๊ทธ๋ฃนํํ์ฌ ์ฒ๋ฆฌ ๊ฐ๋ฅ
8. SAVEPOINT - ์ ์ฅ์ , ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์ฌ์ ์ ์ง์ ํ ์ ์ฅ์ ๊น์ง๋ง ๋กค๋ฐฑ
- ์ ์ฅ๋ค์ ์ ์ํ๋ฉด ๋กค๋ฐฑ์ ํ ๊ฒฝ์ฐ ์ ์ฒด ๋กค๋ฐฑ์ด ์๋ ์ ์ฅ์ ๊น์ง์ ์ผ๋ถ๋ง ๋กค๋ฐฑ
- SAVEPOINT๋ ์ฌ๋ฌ ๊ฐ ์ง์ ํ ์ ์์
- ๋์ผ ์ด๋ฆ์ผ๋ก ์ ์ฅ์ ์ง์ ์ ๊ฐ์ฅ ๋์ค์ ์ ์ํ ์ ์ฅ์ ์ด ์ ํจ
- Point 1๋ก ๋๋๋ฆฌ๊ณ ๋๋ฉด ๊ทธ๋ณด๋ค ๋ฏธ๋์ธ Point2๋ก๋ ๋๋๋ฆด ์ ์์
- ์ ์ฅ์ ์์ด ๋กค๋ฐฑํ๋ฉด ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ ์ทจ์
- [Oracle] SAVEPOINT ํฌ์ธํธ ์ด๋ฆ; → ROLLBACK TO ํฌ์ธํธ ์ด๋ฆ;
[SQL Server] SAVE TRANSACTION ํฌ์ธํธ ์ด๋ฆ; → ROLLBACK TRANSACTION ํฌ์ธํธ ์ด๋ฆ;
์ 3์ DDL - ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ์
1. ๋ฐ์ดํฐ์ ์ ํ
- ์ซ์ ํ์
- ANSI/ISO ๊ธฐ์ค: Numeric, Decimal, Dec, Small Int, Integer, Int, Big, int, Float, Real, Double Precision
- SQL Server / Sybase: ์์ ์ ์, ์ ์, ํฐ ์ ์, ์ค์ ๋ฑ + Money, Small Money
- Oracle: ์ซ์ํ ํ์ ์ ๋ํด์ Number ํ ๊ฐ์ง ํ์ ๋ง ์ง์
- ๋ฒค๋์์ ANSI/ISO ํ์ค์ ์ฌ์ฉํ ๋ ๊ธฐ๋ฅ์ ์ค์ฌ์ผ๋ก ๊ตฌํ, ํ์ค๊ณผ ๋ค๋ฅธ ์ฉ์ด ์ฌ์ฉ ํ์ฉ
- ๋ฌธ์์ด ์ ํ
- CHAR(๊ณ ์ ๊ธธ์ด) ๊ณผ VARCHAT(๊ฐ๋ณ๊ธธ์ด)์ ์ฐจ์ด
- CHAR์์ ๋ฌธ์์ด ๋น๊ต = ๊ณต๋ฐฑ์ ์ฑ์์ ๋น๊ต
- VARCHAR์์ ๋น๊ต = ๋งจ ์ฒ์๋ถํฐ ํ ๋ฌธ์์ฉ ๋น๊ต (๊ณต๋ฐฑ๋ ํ๋์ ๋ฌธ์๋ก ์ทจ๊ธ)
- ํ
์ด๋ธ์ ์นผ๋ผ์ด ๊ฐ์ง๊ณ ์๋ ๋ํ์ ์ธ 4๊ฐ์ง ์ ํ
- CHARACTER(s), VARCHAR(s), NUMERIC, DATETIME
2. CREATE TABLE - ํ ์ด๋ธ ์์ฑ
- CREATE TABLE ํ
์ด๋ธ ์ด๋ฆ( ์นผ๋ผ๋ช
1 DATATYPE [DEFAULT ํ์], …);
CREATE TABLE PLAYER ( PLAYER_ID CHAR(7) NOT NULL, BIRTH CHAR(1) INT); - ๋ช ๋ช ๊ท์น: ์ํ๋ฒณ → ์ซ์ → _(์ธ๋๋ฐ) → $(๋ฌ๋ฌ) → #(์ต)
- ํ ์ด๋ธ ์์ฑ์ ๋/์๋ฌธ์ ๊ตฌ๋ถ์ ํ์ง ์์. ๊ธฐ๋ณธ์ ์ผ๋ก ํ ์ด๋ธ์ด๋ ์นผ๋ผ๋ช = ๋๋ฌธ์๋ก
- DATETIME ๋ฐ์ดํฐ ์ ํ์๋ ๋ณ๋๋ก ํฌ๊ธฐ๋ฅผ ์ง์ ํ์ง ์์
- ๋ฌธ์ ๋ฐ์ดํฐ ์ ํ์ ๋ฐ๋์ ๊ฐ์ง ์ ์๋ ์ต๋ ๊ธธ์ด๋ฅผ ํ์
- ์นผ๋ผ๊ณผ ์นผ๋ผ์ ๊ตฌ๋ถ์ ์ฝค๋ง๋ก ํ๋, ๋ง์ง๋ง ์นผ๋ผ์ ์ฝค๋งx
- ์นผ๋ผ์ ๋ํ ์ ์ฝ์กฐ๊ฑด์ด ์์ผ๋ฉด CONSTRAINT๋ฅผ ์ด์ฉํ์ฌ ์ถ๊ฐ
3. ์ ์ฝ์กฐ๊ฑด(CONSTRAINT) - ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ง ๋ฐฉ๋ฒ, ์ฌ์ฉ์๊ฐ ์ํ๋ ์กฐ๊ฑด์ ๋ฐ์ดํฐ๋ง ์ ์ง
- PK (Primary Key), ๊ธฐ๋ณธํค: ํ ํ ์ด๋ธ์ ํ๋๋ง ์ง์ ๊ฐ๋ฅ(unique), NULL ์ ๋ ฅ ๋ถ๊ฐ(๊ธฐ๋ณธํค ์ ์ฝ = ๊ณ ์ ํค & not null)
- FK (Foreign Key), ์ธ๋ํค: ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ต์ ์ ํ ๊ฐ๋ฅ, ์ฌ๋ฌ ๊ฐ ๊ฐ๋ฅ
- UNIQUE Key, ๊ณ ์ ํค: NULL ๊ฐ๋ฅ, ํ์ ๊ณ ์ ํ๊ฒ ์๋ณํ๊ธฐ ์ํ ๊ณ ์ ํค
- NULL: ์์ง ์ ์๋์ง ์์ ๊ฐ, ๋ฐ์ดํฐ ์ ๋ ฅํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ (์ ์ ์๋ ๊ฐ, 0๊ณผ ๊ณต๋ฐฑ(“ “)์ NULL์ด ์๋)
- NOT NULL: NULL ๊ฐ ์ ๋ ฅ ๊ธ์ง
- CHECK: ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ธฐ ์ํ ํ ์ด๋ธ์ ํน์ ์นผ๋ผ์ ์ค์ ํ๋ ์ ์ฝ, ์ ๋ ฅํ ์ ์๋ ๊ฐ์ ๋ฒ์ ๋ฑ์ ์ ํ, TRUE or FALSE ๋ ผ๋ฆฌ์์ ์ง์
4. ์์ฑ๋ ํ ์ด๋ธ ๊ตฌ์กฐ ํ์ธ
- [Oracle] DESCRIBE ํ ์ด๋ธ๋ช ; (๊ฐ๋ตํ DESC ํ ์ด๋ธ๋ช ;)
- [SQL Server] sp_help ‘dbo.ํ ์ด๋ธ๋ช ’
5. SELECT ๋ฌธ์ฅ์ ํตํ ํ ์ด๋ธ ์์ฑ ์ฌ๋ก
- CREATE TABLE AS (CTAS)
- CREATE TABLE AS ๋ฌธ์ฅ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ฅผ ๋ณต์ฌํ๋ฏ๋ก ๋ฐ๋ก ์์ฑX
- ๊ธฐ์กด ํ ์ด๋ธ ์ ์ฝ์กฐ๊ฑด ์ค NOT NULL ์ ์ฝ ์กฐ๊ฑด๋ง ์๋ก์ด ํ ์ด๋ธ์ ๋ณต์ ๋จ
- ๋ค๋ฅธ ์ ์ฝ์กฐ๊ฑด(๊ธฐ๋ณธํค, ๊ณ ์ ํค, ์ธ๋ํค, CHECK ๋ฑ)์ ๋ณต์ฌ ๋์ง ์์์ ๋ค์ ์ ์ฉํด์ผ ํจ
- ๊ณ์ฝ ์กฐ๊ฑด ์ถ๊ฐํ๊ธฐ ์ํด ALTER TABLE ๊ธฐ๋ฅ ์ฌ์ฉ
- [Oracle] CREATE TABLE ํ
์ด๋ธ๋ช
B AS SELECT * FROM ํ
์ด๋ธ๋ช
A;โจ
ex) ์ ์(PLAYER) ํ ์ด๋ธ๊ณผ ๊ฐ์ ๋ด์ฉ์ผ๋ก TEAM_TEMP๋ผ๋ ๋ณต์ฌ ํ ์ด๋ธ์ ๋ง๋ค๊ธฐโจ
CREATE TABLE TEAM_TEMP AS SELECT * FROM TEAM;
- SQL Server์์๋ Select ~ Into ~ ๋ฅผ ํ์ฉํ์ฌ ๊ฐ์ ๊ฒฐ๊ณผ
- [SQL Server] SELECT * INTO ํ
์ด๋ธ๋ช
B FROM ํ
์ด๋ธ๋ช
A;
โจSELECT * INTO TEAM_TEMP FROM TEAM; (1๊ฐ ํ์ด ์ํฅ ๋ฐ์)
- [SQL Server] SELECT * INTO ํ
์ด๋ธ๋ช
B FROM ํ
์ด๋ธ๋ช
A;
6. ALTER TABLE - ์นผ๋ผ ์ถ๊ฐ/์ญ์ or ์ ์ฝ์กฐ๊ฑด ์ถ๊ฐ/์ญ์
- ์นผ๋ผ ์ถ๊ฐ/์ญ์
- ALTER TABLE [ํ
์ด๋ธ๋ช
] ADD [์ถ๊ฐํ ์ปฌ๋ผ๋ช
][๋ฐ์ดํฐํ์
(๊ธธ์ด)]: ์นผ๋ผ ์ถ๊ฐ
โจex) user ํ ์ด๋ธ์ ๋ฐ์ดํฐํ์ ์ด varchar(30)์ธ adress ์ปฌ๋ผ ์ถ๊ฐ
โจALTER TABLE USER ADD ADRESS VARCHAR(30); - ALTER TABLE [ํ
์ด๋ธ๋ช
] DROP [์ญ์ ํ ์ปฌ๋ผ๋ช
]: ์นผ๋ผ ์ญ์ โจ
ex) ALTER TABLE USER DROP ADRESS; - ALTER TABLE [ํ
์ด๋ธ๋ช
] MODIFY [์ปฌ๋ผ๋ช
][์์ ๋ฐ์ดํฐํ์
(์์ ๊ธธ์ด)]: ์นผ๋ผ ์์ฑ ๋ณ๊ฒฝ
โจ[Oracle] ALTER TABLE ํ ์ด๋ธ๋ช MODIFY (์นผ๋ผ๋ช ๋ฐ์ดํฐ ์ ํ DEFAULT NOT NULL);โจ
[SQL Server] ALTER TABLE ํ ์ด๋ธ๋ช ALTER COLUMN ์นผ๋ผ๋ช ๋ฐ์ดํฐ ์ ํ DEFAULT NOT NULL;โจ
ex) ALTER TABLE USER MODIFY USER_EMIAL CHAR(30); - ALTER TABLE [ํ
์ด๋ธ๋ช
] RENAME [๊ธฐ์กด ์ปฌ๋ผ๋ช
] TO [์์ ์ปฌ๋ผ๋ช
]: ์นผ๋ผ๋ช
๋ณ๊ฒฝโจ
ex) ์ ์ ํ ์ด๋ธ์ age ์ปฌ๋ผ๋ช ์ use_age๋ก ๋ณ๊ฒฝโจ
ALTER TABLE USER RENAME AGE TO USER_AGE; - RENAME ๋ณ๊ฒฝ ์ ํ ์ด๋ธ๋ช TO ๋ณ๊ฒฝํ ํ ์ด๋ธ๋ช : ํ ์ด๋ธ ๋ช ๋ณ๊ฒฝ
- ALTER TABLE [ํ
์ด๋ธ๋ช
] ADD [์ถ๊ฐํ ์ปฌ๋ผ๋ช
][๋ฐ์ดํฐํ์
(๊ธธ์ด)]: ์นผ๋ผ ์ถ๊ฐ
- ์ ์ฝ ์กฐ๊ฑด ์ถ๊ฐ/์ญ์
- ALTER TABLE + ADD CONSTRAINT: ์ ์ฝ์กฐ๊ฑด ์ถ๊ฐ
- ALTER TABLE + DROP CONSTRAINT: ์ ์ฝ์กฐ๊ฑด ์ญ์
- ALTER TABLE ์นผ๋ผ ๋ณ๊ฒฝ ์ฃผ์์ฌํญ
- ์นผ๋ผ์ ํฌ๊ธฐ๋ฅผ ๋๋ฆด ์๋ ์์ง๋ง ์ค์ด๊ธฐX
- null๋ง ์๊ฑฐ๋ ํ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์นผ๋ผ ํญ ์ค์ด๊ธฐ ๊ฐ๋ฅ
- null์ด ์์ ๋๋ ๋ฐ์ดํฐ ์ ํ(์ซ์, ๋ฌธ์) ๋ณ๊ฒฝ ๊ฐ๋ฅ
- null์ด ์์ผ๋ฉด not null ์ ์ฝ์กฐ๊ฑด ์ถ๊ฐ ๊ฐ๋ฅ
- ๊ธฐ๋ณธ๊ฐ(default) ๋ณ๊ฒฝ ์์ ์ดํ ๋ฐ์ํ๋ ํ ์ฝ์ ์ ๋ํด์๋ง ๊ธฐ๋ณธ๊ฐ ๋ณ๊ฒฝ
- PK ์ ์ฝ์กฐ๊ฑด ์์ฑํ๋ DDL
- ์ธ๋ํค(FK) ์ฐธ๊ณ ์ฌํญ
- ํ ์ด๋ธ ์์ฑ ์ ์ค์ ํ ์ ์์
- ์ธ๋ํค๋ NULL๊ฐ ๊ฐ์ง ์ ์์
- ํ ํ ์ด๋ธ์ ์ฌ๋ฌ ๊ฐ ์กด์ฌ ๊ฐ๋ฅํจ
- ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์ ๋ฐ์
7. DROP TABLE - ํ ์ด๋ธ ์ ๊ฑฐ
- ALTER TABLE ํ
์ด๋ธ๋ช
DROP COLUMN ์ญ์ ํ ์ปฌ๋ผ๋ช
;
โ DROP TABLE PLAYER; → ํ ์ด๋ธ ์ ๋ถ ์ญ์ , ํ๋ณต ๋ถ๊ฐ
โก ALTER TABLE PLAYER DROP COLUMN ADDRESS; → ํ ์ด๋ธ ์ผ๋ถ ์นผ๋ผ ์ญ์ , ํ๋ณต ๋ถ๊ฐ - DROP TABLE ํ ์ด๋ธ๋ช [CASCADE CONSTRAINT]; ์ ์ฝ์กฐ๊ฑด๋ช ;
- DROP ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ ๋ฐ ๊ตฌ์กฐ๋ฅผ ์ญ์
- CASCADE CONSTRAINT ์ต์ ์ ํด๋น ํ ์ด๋ธ๊ณผ ๊ด๊ณ๊ฐ ์๋ ์ฐธ์กฐ๋๋ ์ ์ฝ๋ ๋ค ์ญ์
- SQL Server์์๋ CASCADE ์ต์ ์กด์ฌX, ํ ์ด๋ธ ์ญ์ ์ ์ ์ฐธ์กฐ FK ์ ์ฝ์กฐ๊ฑด, ์ฐธ์กฐ ํ ์ด๋ธ ๋จผ์ ์ญ์
8. TRUNCATE TABLE - ํ ์ด๋ธ ๋น์ฐ๊ธฐ
- TRUNCATE TABLE ํ ์ด๋ธ๋ช DROP COLUMN ์ญ์ ํ ์ปฌ๋ผ๋ช ;
- ํ ์ด๋ธ ์ญ์ ๊ฐ ์๋ ํด๋น ํ ์ด๋ธ์ ๋ชจ๋ ํ ์ ๊ฑฐ ํ ์ ์ฅ๊ณต๊ฐ ์ฌ์ฌ์ฉ
- ๊ตฌ์กฐ ์์ฒด ์ญ์ ๋ DROP COLUMN ์ญ์ ํ ์นผ๋ผ๋ช
9. DDL๊ณผ DML์ ์ญ์
- DDL์ ๋ฐ๋์ AUTO COMMIT์ด ์ผ์ด๋จ → DROP, TRUNCATE ์์๋ณต๊ตฌ ๋ถ๊ฐ
- DML์ ์ฌ์ฉ์๊ฐ COMMIT ํด์ผํจ → DELETE ํ ์ด๋ธ ์ญ์ ํด๋ ROLLBACK์ผ๋ก ๋ณต๊ตฌ ๊ฐ๋ฅ
10. ์ฐธ์กฐ ๋์
- Automatic: ์์ ์ฝ์ ์ ๋ถ๋ชจ ํ ์ด๋ธ์ pk๊ฐ ์์ผ๋ฉด ๋ถ๋ชจ pk ์์ฑ ํ ์์์ ์ฝ์
- Dependent: ์์ ์ฝ์ ์ ๋ถ๋ชจ ํ ์ด๋ธ์ pk๊ฐ ์กด์ฌํ ๋๋ง ์์ ์ฝ์ ํ์ฉ
- Cascade: ๋ถ๋ชจ ์ญ์ ์ ์์ ๊ฐ์ด ์ญ์
- Restrict: ๋ถ๋ชจ ์ญ์ ์ ์์ ํ ์ด๋ธ์ pk๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ๋ถ๋ชจ ์ญ์ ํ์ฉ
์ 4์ DCL - ๊ถํ ๋ถ์ฌ ๋ฐ ํ์
1. DCL
- ์ ์ ๋ฅผ ์์ฑํ๊ฑฐ๋ ๊ถํ์ ์ ์ดํ๋ ๋ช ๋ น์ด, ๋ณด์์ ์ํด ํ์
- GRANT: ๊ถํ ๋ถ์ฌ (SQL → GRANT ๊ถํ ON ์ค๋ธ์ ํธ TO ์ ์ ๋ช ;)
- REVOKE: ๊ถํ ์ ๊ฑฐ (SQL → REVOKE ๊ถํ ON ์ค๋ธ์ ํธ TO ์ ์ ๋ช ;)
2. ๊ถํ
- SELECT, INSERT, UPDATE, DELETE, ALTER, ALL: DML ๊ด๋ จ ๊ถํ
- REFERENCES: ์ง์ ๋ ํ ์ด๋ธ์ ์ฐธ์กฐํ๋ ์ ์ฝ์กฐ๊ฑด์ ์์ฑํ๋ ๊ถํ
- INDEX: ์ง์ ๋ ํ ์ด๋ธ์์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ ๊ถํ
3. Oracle ๊ธฐ๋ณธ ์ ์ ์ข ๋ฅ
- SCOTT: Oracle ํ ์คํธ์ฉ ์ํ ์ ์ (๋ํดํธ ํจ์ค์๋: TIGER)
- SYS: DBA ROLE์ ๋ถ์ฌ๋ฐ์ ์ ์
- SYSTEM: ๋ฐ๋ฒ ์ ๋ชจ๋ ์์คํ ๊ถํ์ ๋ถ์ฌ๋ฐ์ DBA ์ ์ , Oracle ์ค์น ์๋ฃ ์์ ํจ์ค์๋ ์ค์
4. ROLE์ ์ด์ฉํ ๊ถํ ๋ถ์ฌ
- ๋ง์ ๋ฐ๋ฒ ์์ ์ ์ ๋ค๊ณผ ๊ถํ๋ค ์ฌ์ด์์ ์ค๊ฐ ์ญํ ์ ํ๋ ROLE wprhd
- ๊ถํ์ ์งํฉ, ๊ถํ์ ์ผ์ผ์ด ๋ถ์ฌํ์ง ์๊ณ ROLE๋ก ํธ๋ฆฌํ๊ฒ ์ฌ๋ฌ ๊ถํ์ ๋ถ์ฌ
- ์์คํ ๊ถํ, ์ค๋ธ์ ํธ ๊ถํ ๋ชจ๋ ๋ถ์ฌ ๊ฐ๋ฅ
- ROLE์ ์ ์ ์๊ฒ ์ง์ ๋ถ์ฌํ๊ฑฐ๋ ๋ค๋ฅธ ROLE์ ํฌํจ๋์ด ์ ์ ์๊ฒ ๋ถ์ฌ๋ ์ ์์
5. Oracle์์ ์ ๊ณตํ๋ ROLE ์ข ๋ฅ
- CONNECT: CREATE SESSION๊ณผ ๊ฐ์ ๋ก๊ทธ์ธ ๊ถํ
- RESOURCE: CREATE TABLE๊ณผ ๊ฐ์ ์ค๋ธ์ ํธ(๋ฆฌ์์ค) ์์ฑ ๊ถํ
6. ์ ์ ์ญ์ ๋ช ๋ น์ด์ ๊ถํ
- DROP USER ์ ์ ๋ช CASCADE;
- CASCADE ์ต์ ์ ํด๋น ์ ์ ๊ฐ ์์ฑํ ์ค๋ธ์ ํธ๋ฅผ ๋จผ์ ์ญ์ ํ ์ ์ ๋ฅผ ์ญ์
'Computer Science ๐ > SQLD' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLD] 2๊ณผ๋ชฉ - 2์ฅ. SQL ํ์ฉ (1) | 2024.11.18 |
---|---|
[SQLD] 2๊ณผ๋ชฉ - 1์ฅ. SQL ๊ธฐ๋ณธ (1) | 2024.11.18 |
[SQLD] 1๊ณผ๋ชฉ - 2์ฅ. ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ SQL (3) | 2024.11.18 |
[SQLD] ๊ณผ๋ชฉ1 - 1์ฅ. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์ดํด (8) | 2024.11.08 |