이둠/DB

[무쑰건 λ”°λΌν•˜κΈ°] νŠΈλžœμž­μ…˜

6161990 2021. 5. 26. 17:35

πŸ“Œ νŠΈλžœμž­μ…˜ 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);