DB 7일 (23.03.29)

Jane·2023년 3월 29일
0

IT 수업 정리

목록 보기
93/124

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'); // PK가 걸려서 삽입 X
INSERT INTO DEPT VALUES (50, 'TEST', 'SEOUL'); // 삽입 O


  • 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

profile
velog, GitHub, Notion 등에 작업물을 정리하고 있습니다.

0개의 댓글