1. 트랜잭션
1-1. 테이블 테스트 1
CREATE TABLE DEPT01 AS SELECT * FROM DEPT;
DESC DEPT01;
SELECT * FROM DEPT01;
DELETE FROM DEPT01;
ROLLBACK;
COMMIT;
- ROLLBACK : COMMIT 전까지의 일을 다시 되돌려놓는다.
- COMMIT : 내용 영구 저장
1-2. 테이블 테스트 2
A 작업자
DROP TABLE DEPT01;
CREATE TABLE DEPT01 AS SELECT * FROM DEPT;
DELETE FROM DEPT01;
SELECT * FROM DEPT01;
B 작업자
SELECT * FROM DEPT01;
- COMMIT 하기 전에는 내용을 볼 수 있다.
A 작업자가 지운 상태로 COMMIT을 하게 되면 내용을 볼 수 없다.
2. 데이터 무결성 테스트
INSERT INTO DEPT VALUES (10, 'TEST', 'SEOUL');
INSERT INTO DEPT VALUES (50, 'TEST', 'SEOUL');
- INSERT INTO EMP (EMPNO, ENAME, JOB, DEPTNO) VALUES (NULL, NULL,'SALESMAN', 30);
명령의 N 행에서 시작하는 중 오류 발생 -
INSERT INTO EMP (EMPNO, ENAME, JOB, DEPTNO) VALUES (NULL, NULL,'SALESMAN', 30)
오류 보고 -
ORA-01400: cannot insert NULL into ("SCOTT"."EMP"."EMPNO")
3. 테이블에 무결성 조건 달기
- CREATE TABLE EMP01(EMPNO NUMBER(4), ENAME VARCHAR2(10), JOB VARCHAR2(9), DEPTNO NUMBER(2));
- INSERT INTO EMP01 (EMPNO, ENAME, JOB, DEPTNO) VALUES (NULL, NULL,'SALESMAN', 30);
(제약 조건이 걸려있지 않아서 추가 가능)
- 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 (NULL, NULL,'SALESMAN', 30);
명령의 N 행에서 시작하는 중 오류 발생 -
INSERT INTO EMP02 (EMPNO, ENAME, JOB, DEPTNO) VALUES (NULL, NULL,'SALESMAN', 30)
오류 보고 -
ORA-01400: cannot insert NULL into ("SCOTT"."EMP02"."EMPNO")
- INSERT INTO EMP02 (EMPNO, ENAME, JOB, DEPTNO) VALUES (7500, '홍길동','SALESMAN', 30);
- CREATE TABLE EMP03 (EMPNO NUMBER(4) UNIQUE, ENAME VARCHAR2(10) NOT NULL, JOB VARCHAR2(9), DEPTNO NUMBER(2));
- INSERT INTO EMP03 (EMPNO, ENAME, JOB, DEPTNO) VALUES (7500, '홍길동','SALESMAN', 30); // 삽입 가능
- INSERT INTO EMP03 (EMPNO, ENAME, JOB, DEPTNO) VALUES (7500, '홍길순','SALESMAN', 30); // 삽입 불가
- INSERT INTO EMP03 (EMPNO, ENAME, JOB, DEPTNO) VALUES (NULL, '홍길순','SALESMAN', 30); // NULL도 여러번 가능
- CREATE TABLE EMP04(EMPNO NUMBER(4) PRIMARY KEY, ENAME VARCHAR2(10) NOT NULL, JOB VARCHAR2(9), DEPTNO NUMBER(2));
PRIMARY KEY : UNIQUE + NOT NULL