SQLD
SQLD ๐ค [์์๋ฌธ์ ] (2026-08-15)
- ๋ฐ์ดํฐ ์ค๋ณต์ ์ต์ํํ๊ณ ์ผ๊ด์ฑ์ ์ ์งํ๋ค.
- ์ด์ ํ์(Insertion, Update, Deletion Anomaly)์ ์ ๊ฑฐํ๋ค.
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ํ๋ณดํ๊ณ ๋ฐ์ดํฐ์ ์ ๋ขฐ๋๋ฅผ ๋์ธ๋ค.
- ๋ฐ์ดํฐ ์กฐํ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ํ
์ด๋ธ์ ํตํฉํ๋ค.
- ์ํฐํฐ๋ ์
๋ฌด์ ํ์ํ๊ณ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๊ฒ์ผ๋ก, ์ ์ผํ ์๋ณ์์ ์ํด ์๋ณ ๊ฐ๋ฅํด์ผ ํ๋ค.
- ์์ฑ์ ์ํฐํฐ๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ณ ์ ํ ํน์ฑ ๋๋ ์ํ๋ฅผ ๋ํ๋ด๋ ํญ๋ชฉ์ผ๋ก, ํ๋์ ์์ฑ์ ํ๋์ ๊ฐ๋ง ๊ฐ์ง๋ค.
- ๊ด๊ณ๋ ๋ ์ํฐํฐ ๊ฐ์ ์ฐ๊ด์ฑ์ ์๋ฏธํ๋ฉฐ, ์นด๋๋๋ฆฌํฐ(Cardinality)์ ์ ํ์ฑ(Optionality)์ผ๋ก ํํ๋๋ค.
- ๊ด๊ณ๋ ์ฃผ๋ก '๋ฌด์์ด ๋ฌด์์ ํ๋ค' ๋๋ '๋ฌด์์ด ๋ฌด์์ด๋ค' ํํ๋ก ์์ ๋๋ฉฐ, ์ํฐํฐ์ ์ํฐํฐ ์ฌ์ด์ ์
๋ฌด ๊ท์น์ ๋ํ๋ธ๋ค.
- ์ ์ฒด ์ฌ์ ์ค ์ง๊ธ์ด '๋๋ฆฌ'์ธ ์ฌ์๋ค์ ์๋ฅผ ๋ถ์๋ณ๋ก ์ง๊ณํ๊ณ , ๊ทธ ์๊ฐ 2๋ช
์ด์์ธ ๋ถ์๋ง ์กฐํํ๋ค.
- ๊ฐ ๋ถ์์ ์ฌ์ ์๋ฅผ ์ธ์ด 2๋ช
์ด์์ธ ๋ถ์๋ง ์กฐํํ๋ฉฐ, ๊ทธ ์ค ์ง๊ธ์ด '๋๋ฆฌ'์ธ ์ฌ์๋ง ์นด์ดํธํ๋ค.
- ์ง๊ธ์ด '๋๋ฆฌ'์ธ ์ฌ์๋ค ์ค์์ ์ฌ์ ์๊ฐ 2๋ช
์ด์์ธ ๋ถ์์ ์ ๋ณด๋ง ๋ณด์ฌ์ค๋ค.
- ์ง๊ธ์ด '๋๋ฆฌ'์ธ ์ฌ์๋ง์ ๋์์ผ๋ก ํ๋ฉฐ, ๋ถ์๋ณ ์ฌ์ ์๊ฐ 2๋ช
์ด์์ธ ๊ฒฝ์ฐ์๋ง ํด๋น ๋ถ์๋ช
๊ณผ ์ ์ฒด ์ฌ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
- EMPLOYEES ํ
์ด๋ธ์ ๋ชจ๋ ์ฌ์ ์ ๋ณด๊ฐ ๊ฒฐ๊ณผ์ ํฌํจ๋๋ค.
- ๋ถ์ID๊ฐ NULL์ธ ์ฌ์์ ๊ฒฝ์ฐ, D.๋ถ์๋ช
์ปฌ๋ผ์๋ NULL์ด ํ์๋๋ค.
- DEPARTMENTS ํ
์ด๋ธ์ ์์ง๋ง, ์ด๋ค ์ฌ์๋ ์์๋์ด ์์ง ์์ ๋ถ์์ ์ ๋ณด๋ ๊ฒฐ๊ณผ์ ํฌํจ๋๋ค.
- FROM ์ ์ LEFT OUTER JOIN ๋์ RIGHT OUTER JOIN์ผ๋ก ๋ฐ๊พธ๊ณ ํ
์ด๋ธ ์์๋ฅผ ๋ฐ๊พธ์ง ์์ผ๋ฉด, ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
- CREATE TABLE EMPLOYEES (
์ฌ์๋ฒํธ NUMBER PRIMARY KEY,
์ฌ์๋ช
VARCHAR2(50) NOT NULL,
๋ถ์๋ฒํธ NUMBER,
CONSTRAINT FK_DEPT FOREIGN KEY (๋ถ์๋ฒํธ) REFERENCES DEPARTMENTS(๋ถ์๋ฒํธ)
);
- CREATE TABLE EMPLOYEES (
์ฌ์๋ฒํธ NUMBER PRIMARY KEY,
์ฌ์๋ช
VARCHAR2(50) NULL,
๋ถ์๋ฒํธ NUMBER,
FOREIGN KEY (๋ถ์๋ฒํธ) REFERENCES DEPARTMENTS(๋ถ์๋ฒํธ)
);
- CREATE TABLE EMPLOYEES (
์ฌ์๋ฒํธ NUMBER,
์ฌ์๋ช
VARCHAR2(50) NOT NULL,
๋ถ์๋ฒํธ NUMBER FOREIGN KEY REFERENCES DEPARTMENTS(๋ถ์๋ฒํธ),
CONSTRAINT PK_EMP PRIMARY KEY (์ฌ์๋ฒํธ)
);
- CREATE TABLE EMPLOYEES (
์ฌ์๋ฒํธ PRIMARY KEY NUMBER,
์ฌ์๋ช
VARCHAR2(50) NOT NULL,
๋ถ์๋ฒํธ NUMBER,
FOREIGN KEY (๋ถ์๋ฒํธ) REFERENCES DEPARTMENTS
);
- ์ง๊ณ ํจ์(SUM, AVG, COUNT ๋ฑ)๋ฅผ ์๋์ฐ ํจ์๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ด๋ OVER ์ ๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ค.
- ROW_NUMBER() ํจ์๋ ๊ฐ ๊ทธ๋ฃน ๋ด์์ ์์๋ฅผ ๋ถ์ฌํ๋ฉฐ, ๋์ผํ ๊ฐ์ด๋ผ๋ ๊ณ ์ ํ ์์๋ฅผ ๊ฐ์ง๋ค.
- LAG() ํจ์๋ ํ์ฌ ํ์ ํน์ ์ปฌ๋ผ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ด์ ํ์ ๊ฐ์ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉ๋๋ฉฐ, LEAD() ํจ์๋ ์ดํ ํ์ ๊ฐ์ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉ๋๋ค.
- RANK() ํจ์๋ ๋์ผํ ๊ฐ์ ๋ํด์๋ ๊ฐ์ ์์๋ฅผ ๋ถ์ฌํ๊ณ , ๋ค์ ์์๋ ๊ฑด๋๋ฐ์ง ์๊ณ ์ด์ด์ ๋ถ์ฌํ๋ค.
- โ
- โก
- โข
- โฃ
- COMMIT์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์
์ ์๊ตฌ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ํ๋ค.
- ROLLBACK์ ํ์ฌ ํธ๋์ญ์
๋ด์์ ์ํ๋ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ทจ์ํ๊ณ ์ด์ COMMIT ์์ ์ผ๋ก ๋๋๋ฆฐ๋ค.
- SAVEPOINT๋ ํธ๋์ญ์
๋ด์์ ํน์ ์์ ์ ์ ์ฅํ์ฌ, ๋ถ๋ถ์ ์ธ ROLLBACK์ด ๊ฐ๋ฅํ๋๋ก ํ๋ค.
- ROLLBACK TO SAVEPOINT ๋ช
๋ น์ ํด๋น SAVEPOINT ์ดํ์ ๋ณ๊ฒฝ ์ฌํญ๋ง ์ทจ์ํ๊ณ , ์ ์ฅ์ ์ด์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์งํ๋ค.