[무쑰건 λ°λΌνκΈ°] νΈλμμ
π νΈλμμ 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);