본문 바로가기

Learning/SQL

9. DML & TCL

© Tama66, 출처 Pixabay

DML(Data Manipulation Language)

· INSERT

- 컬럼 이름, 순서 등을 지정하지 않음. 테이블 생성시 정의한 순서에 따라 값 지정

INSERT INTO dept VALUES (777, 'MARKETING', NULL);

 

- 컬럼이름을 넣어 준다. 지정되지 않은 컬럼은 NULL을 자동을 입력

INSERT INTO dept(dname, deptno) VALUES ('MARKETING', 777);

 

- Subquery 이용 : 타 테이블로부터 데이터 복사(테이블은 이미 존재하여야 한다.)

INSERT INTO deptusa SELECT deptno, dname FROM dept WHERE country = 'USA';

 

· UPDATE

- 조건을 만족하는 레코드를 변경(ex 10번 부서원의 월급을 100 인상하고 수수료를 0으로 변경)

UPDATE emp SET sal = sal + 100, comm = 0 WHERE deptno =10;

 

- WHERE 절이 생략되면 모든 레코드에 적용(ex 모든 직원의 월급 10% 인상)

UPDATE emp SET sal = sal * 1.1;

 

- Subquery를 이용한 변경(ex 담당업무가 'SCOTT'과 같은 사람들의 월급을 부서 최고액으로 변경)

UPDATE emp SET sal = (SELECT MAX(sal) FROM emp) 
WHERE job = (SELECT job FROM emp WHERE ename='SCOTT');

 

· DELETE

- 조건을 만족하는 레코드 삭제(ex 이름이 'SCOTT'인 사원 삭제)

DELETE FROM emp WHERE ename = 'SCOTT';

 

- 조건이 없으면 모든 레코드가 삭제 되기 때문에 주의!!(ex 모든 직원 정보 삭제)

DELETE FROM emp;

 

- Subquery를 이용한 DELETE

DELETE FROM emp 
WHERE deptno = (SELECT deptno FROM dept WHERE dname = 'SALES');

 

※ DELETE와 TRUNCATE의 차이점

- Delete는 Rollback이 가능하지만 대량의 log를 유발하므로 Truncate보다 느리다.

 

TCL(Transaction Control Language)

개념 : DB에서 하나의 작업으로 처리되는 논리적 작업 단위 (계좌이체)

구성 : DML의 집합 / DDL이나 DCL은 한 문장이 트랜잭션으로 처리되므로 자동으로 COMMIT

종류 : COMMIT, ROLLBACK, SAVEPOINT

 

VIEW

· 용도

- 보안강화

- 데이터 복잡성을 단순화

- 실제 테이블과 응용프로그램의 분리

CREATE VIEW emp_10 as SELECT * FROM emp where deptno = 10; 
SELECT * FROM emp_10 WHERE salary > 3000; 
DROP VIEW emp_10; 
CREATE OR REPLACE VIEW v1 AS SELECT DISTINCT empno FROM emp;

 

 

 

고생했숨당~

 

'Learning > SQL' 카테고리의 다른 글

8. DDL & DCL  (0) 2021.07.11
7. SUBQUERY  (0) 2021.07.11
6. GROUP & AGGREGATION  (0) 2021.07.11
5. Join  (0) 2021.07.11
4. Single-Row-Funtion  (0) 2021.07.11