몰입하며 나아가는 개발이란

Language/SQL

Oracle SQL DML : INSERT, UPDATE, DELETE (추가, 수정, 삭제)

류하을 2019. 12. 21. 17:45

INSERT, UPDATE, DELETE

테이블의 row를 추가, 수정, 삭제 하는 예약어이며,

먼저 ROLLBACK과 COMMIT를 알고 사용하는것이 데이터가 손실되는것을 방지 할 수 있다.

ROLLBACK; -- COMMIT 실행 전에 UPDATE된 row를 되돌릴 수 있음.
COMMIT; -- COMMIT을 실행시 밖에서도 적용이 된다. 즉, git 과 동일하게 commit 전 후가 있다.

INSERT INTO

row 추가.

CREATE TABLE test_par(
pkey_01 VARCHAR2(10)
,pkey_02 VARCHAR2(10)
,col_01 VARCHAR2(10)
,col_02 VARCHAR2(10)
, CONSTRAINT pk_test_01 PRIMARY KEY (pkey_01, pkey_02)
);

CREATE TABLE test_chd(
col_01 VARCHAR2(10)
, fkey_01 VARCHAR2(10)
, fkey_02 VARCHAR2(10)
, CONSTRAINT fk_test_01 FOREIGN KEY ( fkey_01,fkey_02) REFERENCES test_par(pkey_01, pkey_02)
);
-- 두개의 테이블 생성.

-- INSERT
INSERT INTO test_par (pkey_01, pkey_02, col_01, col_02)
VALUES ('AAA', 'aaa', '111', '222');

INSERT INTO test_par (pkey_01, pkey_02, col_01, col_02)
VALUES ('BBB', 'bbb', '111', '222');

INSERT INTO test_chd (col_01, fkey_01, fkey_02)
VALUES ('가나다', 'AAA', 'aaa');

INSERT INTO test_chd (col_01, fkey_01, fkey_02)
VALUES ('가나다', 'BBB', 'bbb');

INSERT INTO test_chd (col_01, fkey_01, fkey_02)
VALUES ('가나다', '', '');
-- 생성된 테이블에 row 추가.

ROLLBACK; -- COMMIT 실행 전에 UPDATE된 row를 되돌릴 수 있음.
COMMIT; -- COMMIT을 실행시 밖에서도 적용이 된다. 즉, git 과 동일하게 commit 전 후가 있다.

UPDATE

row 수정

CREATE TABLE emp
AS
SELECT * FROM employees;
-- 복사를 하더라도 제약조건이 복사 되지 않는다.

UPDATE emp
SET salary = 12000, department_id = null -- 여러가지를 세팅할때 , 로 구분하여 세팅이 가능하다
WHERE employee_id = 100;

ROLLBACK; -- COMMIT 실행 전에 UPDATE된 row를 되돌릴 수 있음.
COMMIT; -- COMMIT을 실행시 밖에서도 적용이 된다. 즉, git 과 동일하게 commit 전 후가 있다.

DELETE

row 삭제

DELETE
FROM emp
WHERE salary > 15000;
-- 조건에 맞는 데이터를 삭제 가능하다. 업데이트와 동일하게 커밋전에 롤백이 가능하다.

ROLLBACK; -- COMMIT 실행 전에 UPDATE된 row를 되돌릴 수 있음.
COMMIT; -- COMMIT을 실행시 밖에서도 적용이 된다. 즉, git 과 동일하게 commit 전 후가 있다.