Day36 - 행추가.INSERT , 테이블 복사.CTAS , 복구.ROLLBACK

2021. 4. 6. 20:48Oracle 공부

이번에는 INSERT 에 대해서 알아 봅시다.

 

그 전에, 잠깐 테이블의 구조를 확인하는 방법을 알아보고 갑시다.

DESC 테이블명 

이렇게, 해당 테이블에 속성(column)들과 널(공백)을 포함할 것인지 여부.

그리고 값의 유형은 어떤식으로 할 것인지 확인 할 수 있습니다.

NUMBER는 숫자를 의미 하며 소괄호에 있는 숫자는 자리수를 의미합니다. (4자리)

VARCHAR2는 가변성문자를 의미 하며, 소괄호에 있는 숫자는 BYTE를 의미합니다.

INSERT

insert 는 테이블에 행을 추가하는 기능 입니다.

 

- INSERT INTO 테이블명(속성) VALUES(값)

INSERT INTO 를 사용할 때, 테이블의 속성을 넣어주면 되는데, 테이블의 속성을 전부 넣어줄 필요는 없습니다.

만약, 테이블의 속성의 일부에만 값을 넣어주었다면, 그 외는 NULL 로 표시가 됩니다.

※속성이 NOT NULL일 경우에는 무조건 값을 넣어주어야 합니다.

 

- INSERT INTO 테이블명 VALUES(값)

테이블명 우측에 속성을 명시해주지 않는다면, 해당 테이블에 속성 전부를 순서에 맞게 자동으로 가지고 있다고 생각해주면 됩니다. 그렇기 때문에, 값을 넣을때도 순서대로 전부 다(속성 전부) 작성해주면 됩니다.

 

- INSERT INTO 테이블명 (서브쿼리)

※ MANAGERS 테이블은 EMPLOYEES 테이블과 구조(속성)이 똑같습니다.

서브쿼리를 사용해서 값을 추가할 수도 있습니다.

테이블명 우측에 속성을 써주지 않은 형태로, 서브쿼리는 모든 속성이 일치하도록 해주면 됩니다.

서브쿼리의 WHERE절을 사용해 추가하는 데이터를 제한할 수 있습니다.

 

- INSERT INTO 테이블명(속성) (서브쿼리)

※ MANAGERS 테이블은 EMPLOYEES 테이블과 구조(속성)이 똑같습니다.

속성을 명시한 형태로, 명시된 속성과 서브쿼리에서 조회되는 속성이 일치되도록 해주면 됩니다.

 

테이블 복사

테이블의 구조를 빠르게 복사할 수 있습니다.

CREATE TABLE 테이블명 AS (서브쿼리)

서브쿼리 내부에

WHERE 1=2 -> false (테이블의 구조만 복사) 라는 뜻 입니다.

WHERE 1=1 -> true(테이블의 구조, 데이터 복사) 라는 뜻 입니다.

 

MANAGERS 라는 테이블을 만드는데 EMPLOYEES 테이블의 구조(속성)를 복사 합니다.

 

ROLLBACK

ROLLBACK은 돌아가라는 뜻으로, 데이터의 초기화를 의미합니다.

데이터를 CRUD (데이터 생성,조회,삽입,삭제)는 커밋되기 전까지는 실제로 데이터가 데이터베이스에 저장되는 게 아니라 그냥 기록을 남겨두는 것 입니다.

커밋을 해야 데이터베이스에 저장이 되는데, 커밋을 하기전에, ROLLBACK을 하면 커밋 전 데이터들이 초기화 됩니다.

 

※ 위에서 INSERT문을 사용해 데이터를 추가한 행들이 사라지게 됩니다.