ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQL] DML-INSERT, UPDATE, DELETE
    Computer Science/DB 2023. 4. 20. 20:59
    728x90

    ๐Ÿ’กํ”ผ๋“œ๋ฐฑ Tip

    ๐Ÿ’ก
    v$mystat : ๋‚ด sid๋ณด๊ธฐ
    ๐Ÿ’ก
    TRANSACTION ์— ๋Œ€ํ•ด ๊ณต๋ถ€/์ดํ•ดํ•˜์ž


    ๐Ÿ“˜ SQL ๋ช…๋ น์–ด ๋ถ„๋ฅ˜์™€ DML

    ๐Ÿ’ก
    Query์˜ ๋Œ€์ƒ - ๋ฐ์ดํ„ฐ : ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ช…๋ น์–ด DML : ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋ช…๋ น์–ด TCL : ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด ์ œ์–ดํ•˜๋Š” ๋ช…๋ น์–ด
    ๐Ÿ’ก
    ์ฃผ๋กœ Query, DML, TCL์„ ์‚ฌ์šฉํ•˜๊ณ  DDL, DCL์€ DBA๊ฐ€ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

    ๐Ÿ“˜ INSERT

    ๐Ÿ’ก
    INSERT : ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ํ–‰(ROW, Record)์‚ฝ์ž…

    ๐Ÿ’ก
    ์—ฌ๋Ÿฌ ์„ธ์…˜์—์„œ์˜ DML ์ ์šฉ

    COMMIT ์ด์ „) - 1๋ฒˆ์˜ INSERT์˜ ์ˆ˜์ • ๊ฒฐ๊ณผ๋Š” ์„ธ์…˜์„ ๊ณต์œ ํ•˜๋Š” 2๋ฒˆ์—๋Š” ์ ์šฉ์ด ๋˜์—ˆ๋‹ค. - ๋น„๊ณต์œ  ์„ธ์…˜์ธ 3๋ฒˆ์—๋Š” INSERT ๊ฒฐ๊ณผ๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

    COMMIT ์ดํ›„) - ์ตœ์ข…์ ์œผ๋กœ COMMIT์„ ํ•œ ์ดํ›„์— 3๋ฒˆ ์„ธ์…˜์—๋„ ์ ์šฉ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    • ๋‘๊ฐœ์˜ ์„ธ์…˜(๋น„๊ณต์œ )์—์„œ ์ขŒ์ธก์—์„œ INSERT ์ž‘์—… ํ›„ COMMITํ–ˆ๋‹ค.
    • ๊ทธ COMMIT๊ฒฐ๊ณผ๊ฐ€ ์šฐ์ธก ์„ธ์…˜์—์„œ๋„ ๋ฐ˜์˜๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    Multi table INSERT

    • ํ…Œ์ด๋ธ”์— Nํ–‰(ROW, Record) ์‚ฝ์ž…

    Conditional INSERT

    ๐Ÿ’ก
    โ‘  // Row=0์ธ ๋นˆ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

    BONUS ํ…Œ์ด๋ธ”์„ ๋ณต์‚ฌํ•ด ๋นˆ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“œ๋Š” ์ฝ”๋“œ

    -- ๊ธฐ์กด ํ…Œ์ด๋ธ”์˜ ๊ตฌ์„ฑ ๊ทธ๋Œ€๋กœ ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ ๋‹ค.
    CREATE TABLE BONUS_2 AS SELECT * FROM BONUS WHERE 1=2; -- FALSE
    
    -- ๊ธฐ์กด ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๋ชจ๋‘ ๋ณต์‚ฌํ•ด์„œ ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ” ๋งŒ๋“ ๋‹ค.
    CREATE TABLE BONUS_3 AS SELECT * FROM BONUS WHERE 1=1; -- TRUE
    
    DESC BONUS_2;
    SELECT * FROM BONUS_2;

    CTAS : CREATE TABLE [ ] AS SELECT

    โ‘ก

    -- ๋ฉ”์ธ ์ฟผ๋ฆฌ
    INSERT ALL
    	WHEN COMM > 0 THEN INTO BONUS -- ์กฐ๊ฑด์— ๋”ฐ๋ผ INSERT
    	WHEN COMM IS NULL THEN INTO BONUS_2
    	-- ์„œ๋ธŒ ์ฟผ๋ฆฌ
    	SELECT ename,job,sal,comm FROM emp WHERE job IN ('CLERK','SALESMAN');

    SELECT * FROM bonus;
    SELECT * FROM bonus_2;

    // bonus

    // bonus_2

    โ‘ข ROLLBACK;

    ROLLBACK;
    • ๋‹ค์‹œ bonus, bonus_2๊ฐ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด์กŒ๋‹ค.

    ๐Ÿ“˜ UPDATE

    • ํ…Œ์ด๋ธ” ๋‚ด์— ์ €์žฅ๋œ ๊ธฐ์กด ์ปฌ๋Ÿผ(๋“ค) - Column Field ์ˆ˜์ •
    ๐Ÿ’ก
    // ์กฐ์ง ๋ช…์นญ ๋ณ€๊ฒฝ 50๋ฒˆ ์กฐ์ง ์—ฐ๊ตฌ์†Œ1 โ†’ M์—ฐ๊ตฌ์†Œ 51๋ฒˆ ์กฐ์ง ์—ฐ๊ตฌ์†Œ2 โ†’ T์—ฐ๊ตฌ์†Œ, ๋Œ€์ „โ†’ ์ธ์ฒœ ๋ณ€๊ฒฝ.

    โ‘  // ๋‹จ์ผ ์ปฌ๋Ÿผ ๋ณ€๊ฒฝ

    UPDATE DEPT SET DNAME = ' M์—ฐ๊ตฌ์†Œ' WHERE DEPTNO = 50; 

    โ‘ก // ๋ณต์ˆ˜ ์ปฌ๋Ÿผ ๋ณ€๊ฒฝ

    UPDATE DEPT SET DNAME = ' T์—ฐ๊ตฌ์†Œ', LOC='์ธ์ฒœ' WHERE DEPTNO = 51; 

    โ‘ข // ๋ณ€๊ฒฝ๋‚ด์—ญ์กฐํšŒ

    SELECT * FROM DEPT WHERE DEPTNO IN (50,51); 

    โ‘ฃ // ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฐ˜์˜(์ €์žฅ)

    COMMIT;

    โ‘ค// WHERE์ ˆ ์ƒ๋žต์‹œ ์ „์ฒด ROW ๋Œ€์ƒ

    UPDATE DEPT SET LOC='๋ฏธ๊ฐœ์ฒ™์ง€'; 

    โ‘ฅ

    SELECT * FROM DEPT;

    โ‘ฆ // ํ•ด๋‹น ๋ณ€๊ฒฝ์‚ฌํ•ญ ์˜๊ตฌํžˆ ์ทจ์†Œ

    ROLLBACK;

    โ‘ง // ๊ฒฐ๊ณผ ํ™•์ธ

    SELECT * FROM DEPT; 

    โ‘จ

    UPDATE ์‹œ ๋‚ด๋ถ€์— ํ•จ์ˆ˜, ์‚ฐ์ˆ  ์—ฐ์‚ฐ, decode, case ๋“ฑ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณต ์ฒ˜๋ฆฌ ํ›„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

    -- dname ์ปฌ๋Ÿผ์— ๊ณต๋ฐฑ๋ฌธ์ž ์ €์žฅ
    select dname, replace(dname,' ','') from dept;
    
    -- set ์ ˆ์— ํ•จ์ˆ˜ ์‚ฌ์šฉ๊ฐ€๋Šฅ
    update dept set dname=trim(dname);
    
    select dname, replace(dname,' ','') from dept;

    โ‘ฉ

    commit;

    ๐Ÿ“˜ DELETE

    • ํ…Œ์ด๋ธ” ๋‚ด์— ์ €์žฅ๋œ ๊ธฐ์กด ํ–‰ (ROW, Record) ์‚ญ์ œ
    ๐Ÿ’ก
    โ‘  // ๋ฏธ๊ฐœ์ฒ™ ์ง€์—ญ์„ ํ์‡„
    DELETE FROM DEPT WHERE LOC IS NULL or DEPTNO IS NULL;
    
    SELECT * FROM DEPT;
    
    commit;

    โ‘ก // WHERE์ ˆ ์ƒ๋žต์‹œ ์ „์ฒด ROW ์‚ญ์ œ

    DELETE DEPT;
    
    SELECT * FROM DEPT;
    • FROM ์ƒ๋žต ๊ฐ€๋Šฅ , Delete Syntax Diagram์„ ์ฝ์–ด ํ™•์ธ

    โ‘ข

    ROLLBACK;  -- ํ•ด๋‹น ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ทจ์†Œ
    
    SELECT * FROM DEPT;

    ๐Ÿ“˜ SQL Script file

    • ํ…์ŠคํŠธ ํŒŒ์ผ ํฌ๋งท์œผ๋กœ ์ €์žฅ๋˜๋Š” SQL ๋ช…๋ น์–ด ๋ชจ์Œ๋“ค
    • ์šฉ๋„ : N๊ฐœ์˜ SQL ๋ช…๋ น์–ด๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰์‹œ ์‚ฌ์šฉ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์— ์‚ฌ์šฉ

    ๐Ÿ’ก
    SQL Script file ์ƒ์„ฑ
    1. SQL-Developer์—์„œ Script ํŒŒ์ผ ์ƒ์„ฑ ํŒŒ์ผ > ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ > ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ์ผ > SQL ํŒŒ์ผ > ํ™•์ธ ํŒŒ์ผ ์ด๋ฆ„ : test.sql ๋””๋ ‰ํ† ๋ฆฌ : c:\SQLDEV

    1. SQL-Developer์—์„œ Script ํŒŒ์ผ ์‹คํ–‰
    • SQL ๋ช…๋ น์–ด(๋“ค) ์ž‘์„ฑํ›„ ์ €์žฅ
    • ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ๋ฒ„ํŠผ ํด๋ฆญ or F5
    • ์ ‘์†์„ ํƒ : devDinkDBMS ์„ ํƒํ›„ ํ™•์ธ
    • 5๊ฐœ SQL ๋ช…๋ น์–ด๊ฐ€ ์ˆœ์ฐจ์ ์ธ ์‹คํ–‰๊ฒฐ๊ณผ ํ™•์ธ
    • ํŒŒ์ผ > ๋‹ซ๊ธฐ

    1. SQL-Developer์—์„œ Script ํŒŒ์ผ ์—ด๊ธฐ
    • ํŒŒ์ผ > ์—ด๊ธฐ > c:\SQLDEV\test.sql

    ๐Ÿ“˜ N๊ฐœ์˜ Session ์ƒ์„ฑ

    ๐Ÿ’ก
    SQL-Developer์—์„œ N๊ฐœ ์„ธ์…˜(Session) ์ƒ์„ฑ
    • ๋„๊ตฌ > SQL ์›Œํฌ์‹œํŠธ > devDinkDBMS ์„ ํƒ > ํ™•์ธ๋ฒ„ํŠผ ํด๋ฆญ
    • 2๋ฒˆ ๋ฐ˜๋ณต
    • ๊ฐ๊ฐ SQL ์›Œํฌ์‹œํŠธ์—์„œ ์„ธ์…˜ ID ํ™•์ธํ•˜๋Š” SQL ์‹คํ–‰
      -- ๋™์ผํ•œ SID์ด๋ฉด ๋™์ผ ์„ธ์…˜ & ๋‹ค๋ฅธ SQL ์›Œํฌ์‹œํŠธ
      select sys_context('userenv','sid') from dual;
      
      -- ๋‹ค๋ฅธ sid ํ™•์ธ ๋ฐฉ๋ฒ•
      select * from v$mystat;
    • ๋น„๊ณต์œ  SQL ์›Œํฌ์‹œํŠธ 2๋ฒˆ ํด๋ฆญ

    • ์‹ ๊ทœ ์ƒ์„ฑ๋œ 2๊ฐœ์˜ ๋น„๊ณต์œ  SQL ์›Œํฌ์‹œํŠธ์—์„œ ์„ธ์…˜ ID ํ™•์ธํ•˜๋Š” SQL ์‹คํ–‰
      -- ๋‹ค๋ฅธ SID์ด๋ฉด ๋‹ค๋ฅธ ์„ธ์…˜
      select sys_context('userenv','sid') from dual;
      
      -- ๋‹ค๋ฅธ sid ํ™•์ธ ๋ฐฉ๋ฒ•
      select * from v$mystat;


    Uploaded by N2T

    728x90
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Keydi's Tistory