๐กํผ๋๋ฐฑ Tip
v$mystat
: ๋ด sid๋ณด๊ธฐTRANSACTION
์ ๋ํด ๊ณต๋ถ/์ดํดํ์
๐ SQL ๋ช ๋ น์ด ๋ถ๋ฅ์ DML

Query
, DML
, TCL
์ ์ฌ์ฉํ๊ณ DDL, DCL์ DBA๊ฐ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
๐ INSERT


COMMIT ์ด์ ) - 1๋ฒ์ INSERT์ ์์ ๊ฒฐ๊ณผ๋ ์ธ์ ์ ๊ณต์ ํ๋ 2๋ฒ์๋ ์ ์ฉ์ด ๋์๋ค. - ๋น๊ณต์ ์ธ์ ์ธ 3๋ฒ์๋ INSERT ๊ฒฐ๊ณผ๊ฐ ์ ์ฉ๋์ง ์๋๋ค.
COMMIT ์ดํ) - ์ต์ข ์ ์ผ๋ก COMMIT์ ํ ์ดํ์ 3๋ฒ ์ธ์ ์๋ ์ ์ฉ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.

- ๋๊ฐ์ ์ธ์ (๋น๊ณต์ )์์ ์ข์ธก์์ INSERT ์์ ํ COMMITํ๋ค.
- ๊ทธ COMMIT๊ฒฐ๊ณผ๊ฐ ์ฐ์ธก ์ธ์ ์์๋ ๋ฐ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
Multi table INSERT
- ํ ์ด๋ธ์ Nํ(ROW, Record) ์ฝ์
Conditional INSERT
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
โ // ๋จ์ผ ์ปฌ๋ผ ๋ณ๊ฒฝ
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-Developer์์ Script ํ์ผ ์์ฑ ํ์ผ > ์๋ก ๋ง๋ค๊ธฐ > ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ > SQL ํ์ผ > ํ์ธ ํ์ผ ์ด๋ฆ : test.sql ๋๋ ํ ๋ฆฌ : c:\SQLDEV
- SQL-Developer์์ Script ํ์ผ ์คํ
- SQL ๋ช ๋ น์ด(๋ค) ์์ฑํ ์ ์ฅ
- ์ ์์ ํ : devDinkDBMS ์ ํํ ํ์ธ
- 5๊ฐ SQL ๋ช ๋ น์ด๊ฐ ์์ฐจ์ ์ธ ์คํ๊ฒฐ๊ณผ ํ์ธ
- ํ์ผ > ๋ซ๊ธฐ
- SQL-Developer์์ Script ํ์ผ ์ด๊ธฐ
- ํ์ผ > ์ด๊ธฐ > c:\SQLDEV\test.sql

๐ N๊ฐ์ Session ์์ฑ
- ๋๊ตฌ > SQL ์ํฌ์ํธ > devDinkDBMS ์ ํ > ํ์ธ๋ฒํผ ํด๋ฆญ
- 2๋ฒ ๋ฐ๋ณต
- ๊ฐ๊ฐ SQL ์ํฌ์ํธ์์ ์ธ์
ID ํ์ธํ๋ SQL ์คํ
-- ๋์ผํ SID์ด๋ฉด ๋์ผ ์ธ์ & ๋ค๋ฅธ SQL ์ํฌ์ํธ select sys_context('userenv','sid') from dual; -- ๋ค๋ฅธ sid ํ์ธ ๋ฐฉ๋ฒ select * from v$mystat;
- ์ ๊ท ์์ฑ๋ 2๊ฐ์ ๋น๊ณต์ SQL ์ํฌ์ํธ์์ ์ธ์
ID ํ์ธํ๋ SQL ์คํ
-- ๋ค๋ฅธ SID์ด๋ฉด ๋ค๋ฅธ ์ธ์ select sys_context('userenv','sid') from dual; -- ๋ค๋ฅธ sid ํ์ธ ๋ฐฉ๋ฒ select * from v$mystat;
Uploaded by N2T