트랜잭션 관리 : 일련의 작업 단위
・트랜잭션 명령어
- COMMIT : 영구저장
- SAVEPOINT
- ROLLBACK : COMMIT 시점 이전까지는 롤백 가능
트랜잭션의 단위
시스템에서 장애 발생 시 복구 작업을 하게 될 때 사용한다.
병행 제어 시 처리되는 논리적인 작업 단위에 사용한다.
주의할 점! 각 트랜잭션이 데이터베이스 내에서 일관성과 무결성을 유지하기 위해서는 여러개의 트랜잭션 단위를 잘 정의해야 한다.(여러개의 트랜잭션 단위를 잘 정의해야 하는데 이는 프로젝트 설계자 및 어플리케이션 개발자의 책임이다.)

무결성 : 데이터베이스 내에 있는 데이터의 정확성 유지
컬럼에 조건 주는 것 :
insert할 때 컴파일에러처럼 한 번 떄리는거
NOT NULL : NULL을 허용하지 않음
UNIQUE : 중복된 값을 허용하지 않고, 항상 유일한 값ㅇ르 갖도록 함
PRIMARY KEY : NULL을 허용하지 않고, 중복된 값도 허용하지 않음
FOREIGN KYU
CHECK
DROP TABLE DEPT01;
CREATE TABLE DEPT01 AS SELECT * FROM DEPT;
SELECT * FROM DEPT01;
DELETE FROM DEPT01;
COMMIT; -- 영구저장
ROLLBACK; -- COMMIT 시점 이전까지는 롤백 가능
SELECT * FROM DEPT;
INSERT INTO DEPT VALUES (50,'TEST','SEOUL'); -- Key값이 중복일 경우 에러
INSERT INTO EMP01 (EMPNO01, ENAME, JOB, DEPTNO) VALUES (NULL, NULL,'SALESMAN', 30);
CREATE TABLE EMP01(EMPNO1 NUMBER(4), ENAME VARCHAR2(10), JOB VARCHAR2(9), DEPTNO NUMBER(2));
INSERT INTO EMP01 (EMPN1, ENAME, JOB, DEPTNO) VALUES (NULL, NULL,'SALESMAN', 30);
SELECT*FROM EMP01;
--------------------------------------
CREATE TABLE EMP02(
EMPNO NUMBER(4) NOT NULL,
ENAME VARCHAR2(10) NOT NULL,
JOB VARCHAR2(9),
DEPTNO NUMBER(2)
);
INSERT INTO EMP02 (EMPNO, ENAME, JOB, DEPTNO) VALUES(100,'홍길동','SALESMAN',30);
SELECT * FROM EMP02;
--------------------------------------
CREATE TABLE EMP03(
-- EMPNO NUMBER(4) UNIQUE, -- 유일하게 하나의 값만 있어야 한다.
EMPNO NUMBER(4) PRIMARY KEY, -- 유일하게 하나의 값만 있어야 한다.
ENAME VARCHAR2(10) NOT NULL,
JOB VARCHAR2(9),
DEPTNO NUMBER(2)
);
INSERT INTO EMP03 (EMPNO, ENAME, JOB, DEPTNO) VALUES(100,'홍길동','SALESMAN',30);
INSERT INTO EMP03 (EMPNO, ENAME, JOB, DEPTNO) VALUES(101,'홍길순','SALESMAN',30);
INSERT INTO EMP03 (EMPNO, ENAME, JOB, DEPTNO) VALUES(NULL,'홍길순','SALESMAN',30);
-- UNIQUE + NOT NULL
SELECT * FROM EMP03;