๐ ํธ๋์ญ์ Transaction
- ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ๋ด๊ธฐ๊น์ง ํ๋์ ์์ ๋จ์๋ฅผ ์๋ฏธ.
- Oracle DataBase๋ ๊ฐ๋ฐ์๊ฐ ์ ๋ฌํ insert, update, delete ๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์์์๋ง ์ํํ๊ณ ๋์คํฌ์ ๋ฐ์ํ์ง ์์(ํ ์ด๋ธ์์ฑ,์ญ์ ๋ ์๋ ๋์คํฌ ๋ฐ์๋จ) => ์ค์๋ก ์ธํ ๋ฐ์ดํฐ์ ์ ์ค์ ๋ง๊ธฐ ์ํจ.
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์กฐ์ํ๋ ์์ ์ด ์๋ฃ๋๊ณ ๋ชจ๋ ์ ์์ ์ผ๋ก ๋์์๋ฉด ์ด๋ฅผ ๋์คํฌ์ ๋ฐ์ํด์ผํจ.
- COMMIT : ํธ๋์ญ์ ์ ์๋ฃํ๊ณ ๋์คํฌ์ ๋ฐ์. ๋ณต๊ตฌ ๋ถ๊ฐ
- ROLLBACK : ํธ๋์ญ์ ์ ์ทจ์
- SAVEPOINT : RALLBACK์ ๋จ์๋ฅผ ์ง์ . ์ง์ ์, SAVEPOINT [์ธ์ด๋ธํฌ์ธํธ์ด๋ฆ] / ํธ์ถ ์, ROLLBACK TO [์ธ์ด๋ธํฌ์ธํธ์ด๋ฆ]
์์
์ด ์์๋๊ณ ๋์คํฌ์ ๋ฐ์๋ ๋๊น์ง์ ์์
์ ๋จ์ = ํธ๋์ญ์
.
๐ ์ํ์ค
- ํ ์ด๋ธ ๋ด์ ์ปฌ๋ผ์ค PRIMARY KEY๋ฅผ ์ง์ ํ๊ธฐ ์ ๋งคํ ๊ฒฝ์ฐ, 1๋ถํฐ 1์ฉ ์ฆ๊ฐ๋๋ ๊ฐ์ ์ ์ฅํ๋ ์ปฌ๋ผ์ ์ถ๊ฐํ์ฌ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์ํ์ค ํ์ => 1๋ถํฐ 1์ฉ ์ฆ๊ฐ๋๋ ๊ฐ์ ๊ตฌํ๊ธฐ ์ํด ์ํ์ค ์ด์ฉ
- ์ํ์ค CREATE SEQUENCE ์ํ์ค ์ด๋ฆ
- START WITH ์ซ์ : ์์ ๊ฐ, ์์ ๊ฐ์ ์ ๋ ์ต์ ๊ฐ๋ณด๋ค ์์ ์ ์์
- INCREMENT BY ์ซ์ : ์ฆ๊ฐ์ํฌ ๊ฐ
- MAXVALUE ์ซ์ OR NOMAXVALUE : ์ํ์ค๊ฐ ๊ฐ์ง ์ ์๋ ์ต๋๊ฐ. ์๋ตํ๊ฑฐ๋ NOMAXVALUE์ผ ๊ฒฝ์ฐ 10์ 27์น.
- MINVALUE ์ซ์ OR NOMINVALUE : ์ํ์ค๊ฐ ๊ฐ์ง ์ ์๋ ์ต์๊ฐ. ์๋ตํ๊ฑฐ๋ NOMINVALUE์ผ ๊ฒฝ์ฐ 1.
- CYCLE OR NOCYCLE : ์ต๋ ํน์ ์ต์๊ฐ๊น์ง ๊ฐ ๊ฒฝ์ฐ ๋ค์ ์ต์๊ฐ๋ถํฐ ์ํํ๋ค.
- CACHE ์ซ์ OR NOCACHE : ์ํ์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์์ ๊ด๋ฆฌํ ์ ์๋๋ก ์ค์ ํ๋ ๊ฒ. (๋ฉ๋ชจ๋ฆฌ์์์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ํฅ์๋จ)
- NEXTVAL : ๋ค์ ์ํ์ค ๊ฐ
- CURRVAL : ํ์ฌ ์ํ์ค ๊ฐ
[๋ฌธ๋ฒ]
--ํ ์ด๋ธ ์์ฑ
CREATE TABLE TEST_TABLE20(
IDX NUMBER CONSTRAINT TEST_TABLE20_IDX_PK PRIMARY KEY,
NUMBER_DATA NUMBER NOT NULL
);
--์ํ์ค ์์ฑ
CREATE SEQUENCE TEST_SEQ1
START WITH 1
INCREMENT BY 1
MINVALUE 0;
--DATA INSERT
INSERT INTO TEST_TABLE20(IDX, NUMBER_DATA) VALUES(TEST_SEQ1.NEXTVAL,100);
INSERT INTO TEST_TABLE20(IDX, NUMBER_DATA) VALUES(TEST_SEQ1.NEXTVAL,200);
SELECT * FROM TEST_TABLE20;
--์ํ์ค ์ ๊ฑฐ ์,
DROP DROP SEQUENCE TEST_SEQ1;
--ํ์ฌ ์ํ์ค ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
SELECT TEST_SEQ1.CURRVAL FROM DUAL;
๐ ์ธ๋ฑ์ค
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฒ์์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ธฐ๋ฅ
- ์์คํ ์ ๋ถํ๋ฅผ ์ค์ฌ ์ฑ๋ฅ์ ํฅ์์ํด
- ๋จ์ : ์ถ๊ฐ์ ์ธ ๊ธฐ์ต๊ณต๊ฐ์ด ํ์, ์ธ๋ฑ์ค ์์ฑ์๊ฐ์ด ์ค๋๊ฑธ๋ฆผ , INSERT, UPDATE, DELETE์ ๊ฐ์ ๋ณ๊ฒฝ์์ ์ด ์์ฃผ ์ผ์ด๋๋ฉด ์คํ๋ ค ์ฑ๋ฅ ์ ํ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์
- Oracle DataBase๋ ํ ์ด๋ธ ๋ด์ PRIMARY KEY ์์ฑ์, ์๋์ผ๋ก ์ธ๋ฑ์ค๊ฐ ์ธํ ๋จ
- SO, ๊ฒ์์ PRIMARY KEY ๋ฅผ ์ด์ฉํ๋ฉด ์๋๊ฐ ๋์์ง
- WHERE ์กฐ๊ฑด์ ๋ก ์์ฃผ ๊ฒ์ํ๋ ์ปฌ๋ผ์ด ์๋ค๋ฉด ๊ทธ ์ปฌ๋ผ์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํด์ฃผ๋ฉด ๊ฒ์ ์๋ ๋ ํฅ์๋๋ค.
--์ธ๋ฑ์ค ์กฐํํ๊ธฐ
SELECT INDEX_NAME, TABLE_NAME, COLUMN_NAME FROM USER_IND_COLUMNS;
๐ ๋ทฐ
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค์์ ์ ๊ณตํ๋ ๊ฐ์์ ํ ์ด๋ธ
- ๋ทฐ๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉํ ์ฟผ๋ฆฌ๋ฌธ์ ์ ์ฅํด๋๊ณ ๋ทฐ๋ฅผ ์กฐํํ ๋ ๊ทธ ์ฟผ๋ฆฌ๋ฌธ์ด ๋์ํ๊ฒ ๋๋ ์๋ฆฌ.
- ๋ทฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณต์กํ ์ฟผ๋ฆฌ๋ฌธ์ ๋์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์ ์ฉ์ด์ฑ์ ๊ฐ์ง ์ ์์
- ์ฃผ์ : ํ ๊ฐ ์ด์์ ํ ์ด๋ธ์ JOIN ํด์ VIEW๋ฅผ ์์ฑํ ๊ฒฝ์ฐ, VIEW๋ก ๋ฐ์ดํฐ๋ฅผ INSERT ํ ์ ์์. VIEW๋ก ๋ฐ์ดํฐ๋ฅผ INSERT, UPDATE, DELETEํ ๊ฒฝ์ฐ , ํด๋น VIEW๊ฐ ํ๋์ ํ ์ด๋ธ๋ก ๊ตฌ์ฑ๋์ด์์ด์ผํจ.
- ๋ทฐ ์์ฑ ๊ถํ ์ค์ : ์ผ๋ฐ ๊ณ์ ์ ๊ฒฝ์ฐ ๋ทฐ๋ฅผ ์์ฑํ ์ ์๋ ๊ถํ์ด ์๊ธฐ ๋๋ฌธ์ ๋ทฐ ์์ฑ ๊ถํ์ ์ค์ ํด์ค์ผํจ. ์์คํ ๊ณ์ ์ผ๋ก DB์ ์ ์ํ ํ, GRANT CREATE VIEW TO [๊ณ์ ์ด๋ฆ]
--๋ทฐ ์์ฑํ๊ธฐ
CREATE VIEW [๋ทฐ์ด๋ฆ] AS [์๋ธ์ฟผ๋ฆฌ]
--์ฌ์์ ์ฌ์๋ฒํธ, ์ด๋ฆ, ๊ธ์ฌ, ๊ทผ๋ฌด๋ถ์์ด๋ฆ, ๊ทผ๋ฌด์ง์ญ์ ๊ฐ์ง๊ณ ์๋ ๋ทฐ๋ฅผ ์์ฑํ๋ค.
CREATE VIEW EMP_DEPT_VIEW
AS
SELECT A1.EMPNO, A1.ENAME, A2.DNAME, A2.LOC
FROM EMP A1, DEPT A2
WHERE A1.DEPTNO = A2.DEPTNO;
--๋ทฐ ์กฐํํ๊ธฐ
SELECT * FROM EMP_DEPT_VIEW;
--๋ทฐ๋ก ๋ฐ์ดํฐ ์ฝ์
--๋ทฐ๋ก ๋ฐ์ดํฐ๋ฅผ INSERT, UPDATE, DELETEํ ๊ฒฝ์ฐ , ํด๋น VIEW๊ฐ ํ๋์ ํ ์ด๋ธ๋ก ๊ตฌ์ฑ๋์ด์์ด์ผํจ.
CREATE VIEW EMP200_VIEW
AS SELECT EMPNO, ENAME, SAL
FROM EMP100;
INSERT INTO EMP200_VIEW (EMPNO, ENAME, SAL) VALUES (7000, '์ ๋', 2000);
'์ด๋ก > DB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฌด์กฐ๊ฑด ๋ฐ๋ผํด๋ณด๊ธฐ] CONSTRAINT ์ ์ฝ์กฐ๊ฑด (0) | 2021.05.26 |
---|---|
[๋ฌด์กฐ๊ฑด ๋ฐ๋ผํด๋ณด๊ธฐ] TABLE (0) | 2021.05.26 |
[๋ฌด์กฐ๊ฑด ๋ฐ๋ผํ๊ธฐ] INSERT, UPDATE, DELECT (0) | 2021.05.26 |
[๋ฌด์กฐ๊ฑด ๋ฐ๋ผํด๋ณด๊ธฐ] DML ๊ทธ๋ฃนํจ์, HAVING, JOIN, SET, ์๋ธ์ฟผ๋ฆฌ (0) | 2021.05.25 |
[๋ฌด์กฐ๊ฑด ๋ฐ๋ผํด๋ณด๊ธฐ] DML ๋ ์งํจ์ , DECODE, CASE (0) | 2021.05.25 |