DML & TCL

yujuΒ·2022λ…„ 10μ›” 26일
0

SQL

λͺ©λ‘ 보기
7/11
post-thumbnail

πŸ₯¨ DML(DATA MANIPULATION LANGUAGE

: ν…Œμ΄λΈ”μ˜ 행에 λŒ€ν•œ μ‚½μž…, λ³€κ²½, μ‚­μ œ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” SQL λͺ…λ Ή

πŸ’‘ DML λͺ…λ Ή μ‹€ν–‰ ν›„ COMMIT(DML λͺ…λ Ήμ˜ 적용) λ˜λŠ” ROLLBACK(DML λͺ…λ Ήμ˜ μ·¨μ†Œ) λͺ…령을 μ‹€ν–‰ν•˜λŠ” 것을 ꢌμž₯


πŸ“™ INSERT : ν…Œμ΄λΈ”μ— 행을 μ‚½μž…ν•˜λŠ” λͺ…λ Ή

INSERT INTO ν…Œμ΄λΈ”λͺ… VALUES(μ»¬λŸΌκ°’, μ»¬λŸΌκ°’,...)

  • ν…Œμ΄λΈ”μ— 삽일될 ν–‰μ˜ μ»¬λŸΌκ°’μ€ ν…Œμ΄λΈ” 속성에 맞게 μ°¨λ‘€λŒ€λ‘œ λ‚˜μ—΄ν•˜μ—¬ μ „λ‹¬λ˜λ„λ‘ μž‘μ„±
  • ν…Œμ΄λΈ”μ˜ 속성 μˆœμ„œλŒ€λ‘œ μžλ£Œν˜•μ— λ§žλŠ” μ»¬λŸΌκ°’μ„ μƒλž΅μ—†μ΄ μ°¨λ‘€λŒ€λ‘œ μ „λ‹¬ν•˜μ—¬ μ‚½μž…

πŸ’‘ ν…Œμ΄λΈ” 속성(컬럼과 μžλ£Œν˜•) 확인

DESC DEPT;

❕❕ μ‚½μž…ν–‰μœΌλ‘œ 전달될 μ»¬λŸΌκ°’μ˜ κ°―μˆ˜κ°€ ν…Œμ΄λΈ”μ˜ 컬럼 κ°―μˆ˜μ™€ λ§žμ§€ μ•Šμ„ 경우 μ—λŸ¬ λ°œμƒ 
❕❕ μ‚½μž…ν–‰μœΌλ‘œ 전달될 μ»¬λŸΌκ°’μ΄ ν…Œμ΄λΈ”μ˜ 컬럼 μžλ£Œν˜•κ³Ό λ§žμ§€ μ•Šκ±°λ‚˜ μžλ£Œν˜•μ˜ 크기보닀 큰 경우 μ—λŸ¬ λ°œμƒ

πŸ“˜ PK(PRIMARY KEY) μ œμ•½μ‘°κ±΄ : ν…Œμ΄λΈ”μ— μ €μž₯된 κΈ°μ‘΄ν–‰μ˜ μ»¬λŸΌκ°’κ³Ό μ€‘λ³΅λœ 값이 μ €μž₯λ˜μ§€ μ•Šλ„λ‘ μ„€μ •ν•˜λŠ” μ œμ•½μ‘°κ±΄

  • PK μ œμ•½μ‘°κ±΄μ΄ λΆ€μ—¬λœ μ»¬λŸΌμ—λŠ” NOT NULL μ œμ•½μ‘°κ±΄μ΄ μžλ™μœΌλ‘œ μ„€μ •λ˜μ–΄ NULL μ €μž₯ λΆˆκ°€λŠ₯

  • νŠΉμ •ν…Œμ΄λΈ” μ»¬λŸΌμ— 값을 μ „λ‹¬ν•˜μ—¬ ν–‰ μ‚½μž… κ°€λŠ₯

    INSERT INTO ν…Œμ΄λΈ”λͺ…(컬럼λͺ…, 컬럼λͺ…,...) VALUES( μ»¬λŸΌκ°’, μ»¬λŸΌκ°’,...)

  • ν…Œμ΄λΈ” 생성 λ˜λŠ” ν…Œμ΄λΈ” ꡬ쑰 λ³€κ²½μ‹œ 컬럼 κΈ°λ³Έκ°’ μ„€μ • κ°€λŠ₯
    - 컬럼 κΈ°λ³Έκ°’ λ―Έμ„€μ •μ‹œ NULL을 κΈ°λ³Έκ°’μœΌλ‘œ μžλ™ μ„€μ •

  • λ‚ μ§œν˜• μ»¬λŸΌμ—λŠ” λ‚ μ§œκ°’ λŒ€μ‹  SYSDATE ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 값을 μ „ν•˜μ—¬ μ‚½μž… 처리

  • INSERT λͺ…령에 μ„œλΈŒμΏΌλ¦¬λ₯Ό μ‚¬μš©ν•˜μ—¬ ν–‰ μ‚½μž… κ°€λŠ₯

    INSERT INTO ν…Œμ΄λΈ”λͺ… SELECT κ²€μƒ‰λŒ€μƒ,... FROM ν…Œμ΄λΈ”λͺ…

    • 행이 μ‚½μž…λ  ν…Œμ΄λΈ”μ˜ 속성과 μ„œλΈŒμΏΌλ¦¬μ˜ κ²€μƒ‰λŒ€μƒμ— λŒ€ν•œ 속성(컬럼λͺ…을 μ œμ™Έν•œ κ²€μƒ‰λŒ€μƒμ˜ 갯수, μžλ£Œν˜•, 크기)이 동일

πŸ“™ UPDATE : ν…Œμ΄λΈ”μ— μ €μž₯된 ν–‰μ˜ μ»¬λŸΌκ°’μ„ λ³€κ²½ν•˜λŠ” λͺ…λ Ή

UPDATE ν…Œμ΄λΈ”λͺ… SET 컬럼λͺ… = λ³€κ²½κ°’, 컬럼λͺ… = λ³€κ²½κ°’,... [WHERE 쑰건식] ;

  • WHERE의 쑰건식이 참인 ν–‰λ§Œ κ²€μƒ‰ν•˜μ—¬ μ»¬λŸΌκ°’ λ³€κ²½
  • WHEREκ°€ μƒλž΅λœ 경우 ν…Œμ΄λΈ”μ— μ €μž₯된 λͺ¨λ“  ν–‰μ˜ 컬럼 값을 λ™μΌν•˜κ²Œ λ³€κ²½
  • WHEREμ—μ„œ μ‚¬μš©λ˜λŠ” μ‘°κ±΄μ‹μ˜ μ»¬λŸΌμ€ PK μ œμ•½μ‘°κ±΄μ΄ λΆ€μ—¬λœ μ»¬λŸΌμ„ μ‚¬μš©ν•˜λŠ” 것을 ꢌμž₯
  • PK μ œμ•½μ‘°κ±΄μ΄ λΆ€μ—¬λœ 컬럼의 값은 λ³€κ²½ν•˜μ§€ μ•ŠλŠ” 것을 ꢌμž₯

πŸ’‘ UPDATE λͺ…λ Ήμ—μ„œ μ„œλΈŒμΏΌλ¦¬λ₯Ό μ‚¬μš©κ°€λŠ₯ : λ³€κ²½κ°’ λ˜λŠ” μ‘°κ±΄μ‹μ˜ 비ꡐ값 λŒ€μ‹  μ„œλΈŒμΏΌλ¦¬ μ‚¬μš©


πŸ“™ DELETE : ν…Œμ΄λΈ”μ— μ €μž₯된 행을 μ‚­μ œν•˜λŠ” λͺ…λ Ή

DELETE FROM ν…Œμ΄λΈ”λͺ… WHERE 쑰건식

  • WHERE의 쑰건식이 참인 ν–‰λ§Œ κ²€μƒ‰ν•˜μ—¬ μ‚­μ œμ²˜λ¦¬ - WHEREκ°€ 생λ ₯된 경우 ν…Œμ΄λΈ”μ— μ €μž₯된 λͺ¨λ“  ν–‰ μ‚­μ œ

  • WHEREμ—μ„œ μ‚¬μš©λ˜λŠ” μ‘°κ±΄μ‹μ˜ μ»¬λŸΌμ€ PK μ œμ•½μ‘°κ±΄μ΄ λΆ€μ—¬λœ μ»¬λŸΌμ„ μ‚¬μš©ν•˜λŠ” 것을 ꢌμž₯ - 단일행을 κ²€μƒ‰ν•˜μ—¬ μ‚­μ œ

  • μžμ‹ ν…Œμ΄λΈ”μ—μ„œ μ°Έμ‘°λ˜λŠ” λΆ€λͺ¨ ν…Œμ΄λΈ”μ˜ μ»¬λŸΌκ°’μ€ FK μ œμ•½μ‘°κ±΄μ— μ˜ν•΄ λ³€κ²½μ΄λ‚˜ μ‚­μ œ 처리 λΆˆκ°€λŠ₯

πŸ“˜ FK(FOREIGN KEY) μ œμ•½μ‘°κ±΄ : μžμ‹ ν…Œμ΄λΈ”μ˜ μ»¬λŸΌκ°’μ΄ λΆ€λͺ¨ ν…Œμ΄λΈ”μ˜ μ»¬λŸΌκ°’μ„ μ°Έμ‘°ν•˜μ—¬ μ €μž₯λ˜λ„λ‘ μ„€μ •ν•˜λŠ” μ œμ•½μ‘°κ±΄

  • DELETE λͺ…λ Ήμ—μ„œ μ„œλΈŒμΏΌλ¦¬ μ‚¬μš© κ°€λŠ₯ - WHERE의 쑰건식에 비ꡐ값 λŒ€μ‹  μ„œλΈŒμΏΌλ¦¬ μ‚¬μš©

πŸ“™ MERGE : 원본 ν…Œμ΄λΈ”μ˜ 행을 κ²€μƒ‰ν•˜μ—¬ νƒ€κ²Ÿ ν…Œμ΄λΈ”μ— 행을 μ‚½μž…ν•˜κ±°λ‚˜ ν–‰μ˜ μ»¬λŸΌκ°’μ„ λ³€κ²½ν•˜λŠ” λͺ…λ Ή

MERGE INTO νƒ€κ²Ÿν…Œμ΄λΈ”λͺ… USING μ›λ³Έν…Œμ΄λΈ” ON (쑰건식)
	 WHEN MATCHED THEN UPDATE SET νƒ€κ²Ÿμ»¬λŸΌλͺ… = μ›λ³Έμ»¬λŸΌλͺ…,νƒ€κ²Ÿμ»¬λŸΌλͺ… = μ›λ³Έμ»¬λŸΌλͺ…...,
		WHEN NOT MATCHED THEN INSERT(νƒ€κ²Ÿμ»¬λŸΌλͺ…,νƒ€κ²Ÿμ»¬λŸΌλͺ…,...) VALUES(μ›λ³Έμ»¬λŸΌλͺ…, μ›λ³Έμ»¬λŸΌλͺ…,...)

πŸ₯¨ TCL (TRANSACTION CONTROL LANGUAGE) : νŠΈλ Œμ μ…˜ μ œμ–΄μ–΄

: νŠΈλ Œμ μ…˜μ— μ €μž₯된 SQL λͺ…령을 μ‹€μ œ ν…Œμ΄λΈ”μ— μ μš©ν•˜μ—¬ μ‹€ν–‰ν•˜κ±°λ‚˜ μ μš©ν•˜μ§€ μ•Šκ³  μ·¨μ†Œν•˜λŠ” λͺ…λ Ή

πŸ“™ νŠΈλ Œμ μ…˜(TRANSACTION) : μ„Έμ…˜μ—μ„œ DBMS μ„œλ²„μ— μ „λ‹¬λ˜μ–΄ 싀행될 SQL λͺ…령을 μ €μž₯ν•˜κΈ° μœ„ν•œ μž‘μ—…λ‹¨μœ„ -SQL λͺ…λ Ήκ·Έλ£Ή

: ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μž‘μ„±ν•œ SQL λͺ…령을 μ„œλ²„μ— μ „λ‹¬ν•˜κ³  λ°”λ‘œ λ°μ΄νƒ€λ² μ΄μŠ€μ— μ μš©λ˜λ„λ‘ μ‹€ν–‰ν•˜λŠ” 것이 μ•„λ‹ˆλΌ νŠΈλ Œμ μ…˜μ— μ €μž₯ν•˜κ³  λ‚˜μ€‘μ— 처리

πŸ“™ μ„Έμ…˜(SESSION) : DBMS μ„œλ²„μ— μ ‘μ†λœ μ‚¬μš©μžμ˜ μž‘μ—…ν™˜κ²½

πŸ“™ 컀밋(COMMIT) 처리 - νŠΈλ Œμ μ…˜μ— μ €μž₯된 SQL λͺ…령을 μ‹€μ œ ν…Œμ΄λΈ”μ— μ μš©ν•˜λŠ” 방법: 컀밋 처리 ν›„ νŠΈλ Œμ μ…˜ μ΄ˆκΈ°ν™”

  1. ν˜„μž¬ μ„Έμ…˜μ΄ μ •μƒμ μœΌλ‘œ μ’…λ£Œλœ 경우 μžλ™ μ»€λ°‹μ²˜λ¦¬
  2. DDL λͺ…λ Ή λ˜λŠ” DCL λͺ…령을 μž‘μ„±ν•˜μ—¬ μ„œλ²„μ— μ „λ‹¬ν•œ 경우 μžλ™ 컀밋 처리
  3. DML λͺ…령을 μž‘μ„±ν•˜μ—¬ μ„œλ²„μ— μ „λ‹¬ν•œ 경우 COMMIT λͺ…령을 μ‚¬μš©ν•˜μ—¬ 컀밋 처리

πŸ“™ ROLLBACK 처리 : νŠΈλ Œμ μ…˜μ— μ €μž₯된 SQL λͺ…령을 μ‹€μ œ ν…Œμ΄λΈ”μ— μ μš©ν•˜μ§€ μ•Šκ³  μ‚­μ œν•˜λŠ” 방법

  1. ν˜„μž¬ μ„Έμ…˜μ΄ λΉ„μ •μƒμ μœΌλ‘œ μ„œλ²„ 접속이 μ’…λ£Œλœ 경우 μžλ™ 컀밋 처리
  2. DML λͺ…령을 μž‘μ„±ν•˜μ—¬ μ„œλ²„μ— μ „λ‹¬ν•œ 경우 ROLLBACK λͺ…령을 μ‚¬μš©ν•˜μ—¬ λ‘€λ°± 처리

πŸ’‘ ν˜„μž¬ μ„Έμ…˜μ—μ„œ μž‘μ—…μ€‘μΈ κ²°κ³Όλ₯Ό 컀밋 μ „κΉŒμ§€ λ‹€λ₯Έ μ„Έμ…˜μ—μ„œ κ²€μƒ‰λ˜μ§€ μ•Šλ„λ‘ νŠΈλ Œμ μ…˜ μ‚¬μš© - 데이타 일관성을 μ œκ³΅ν•˜λŠ” 방법

: 데이타 일관성 : DBMSλ₯Ό μ‚¬μš©ν•˜λŠ” λͺ¨λ“  μ‚¬μš©μžμ—κ²Œ λ™μΌν•œ 검색결과λ₯Ό 제곡
: ν˜„μž¬ μ„Έμ…˜μ—μ„œ μ»€λ°‹μ²˜λ¦¬λ₯Ό ν•˜κΈ° μ „κΉŒμ§€ λ‹€λ₯Έ μ„Έμ…˜μ—μ„œλŠ” κΈ°μ‘΄ 행을 κ²€μƒ‰ν•˜μ—¬ 제곡

πŸ’‘ 데이터 μž κΉ€(LOCK) κΈ°λŠ₯을 μ œκ³΅ν•˜κΈ° μœ„ν•΄ νŠΈλ Œμ μ…˜ μ‚¬μš©

  • DBMSλŠ” 닀쀑 μ‚¬μš©μž ν™˜κ²½μœΌλ‘œ 같은 ν…Œμ΄λΈ”ν–‰μ„ λ‹€λ₯Έ μ„Έμ…˜μ—μ„œ μ‘°μž‘ κ°€λŠ₯
  • ν˜„μž¬ μ„Έμ…˜μ—μ„œ μž‘μ—…μ€‘μΈ ν…Œμ΄λΈ”μ˜ 행을 λ‹€λ₯Έ μ„Έμ…˜μ—μ„œ μž‘μ—…ν•˜μ§€ λͺ»ν•˜λ„둝 νŠΈλ Œμ μ…˜μ„ μ΄μš©ν•˜μ—¬ 데이타 잠금 κΈ°λŠ₯ 제곡
  • ν˜„μž¬ μž‘μ—…μ€‘μΈ ν…Œμ΄λΈ”μ˜ 행을 λ‹€λ₯Έ μ„Έμ…˜μ—μ„œ μ‘°μž‘ν•  경우 νŠΈλ Œμ μ…˜μ— μ˜ν•΄ 데이타 μž κΉ€ κΈ°λŠ₯으둜 인해 μ„Έμ…˜ μΌμ‹œ 쀑지

❕❕ ν˜„μž¬ μ„Έμ…˜μ—μ„œ μž‘μ—…μ€‘μΈ DML λͺ…령을 컀밋 λ˜λŠ” λ‘€λ°± 처리λ₯Ό ν•΄μ•Όλ§Œ λ‹€λ₯Έ μ„Έμ…˜μ˜ DML λͺ…령이 μ‹€ν–‰

πŸ“™SAVEPOINT : νŠΈλ Œμ μ…˜μ— 라벨(μœ„μΉ˜μ •λ³΄)을 λΆ™μ΄λŠ” λͺ…λ Ή

: νŠΈλ Œμ μ…˜μ— μ €μž₯된 라벨을 μ΄μš©ν•˜μ—¬ μ›ν•˜λŠ” μœ„μΉ˜μ˜ DML λͺ…령듀을 λ‘€λ°±μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©

SAVEPOINT 라벨λͺ… 
  • SAVEPOINT λͺ…λ ΉμœΌλ‘œ μ„€μ •λœ 라벨을 μ΄μš©ν•˜μ—¬ 둀백처리
    RILLBACK TO 라벨λͺ…

0개의 λŒ“κΈ€