Database/Oracle

Oracle DB) 데이터 정의어(DDL) - CREATE 테이블 생성, 복사

luana_eun 2022. 3. 15. 18:21
728x90

DQL 데이터 질의어 : select

DML 데이터 조작어 : insert, update, delete

DDL 데이터 정의어 : create, alter, drop, truncate

**DDL은 자동으로 commit이 되서 좀 더 신중하게 작성하는것이 좋다. 

 

 

DB안에 존재하는 객체 종류

Table, View, Sequence, Index, Synonym

 

 

테이블명과 컬럼명 이름 규칙

- 문자로 시작한다. 

- 문자, 숫자, 특수문자(_, #, $) 혼합 가능

 


1. 테이블 생성 CREATE

생성 방법1) 직접 생성

CREATE TABLE 테이블명 (
  컬럼명  테이터타입(컬럼사이즈), 
  컬럼명  데이터타입(컬럼사이즈), 
    ......
);

생성 방법2) 서브쿼리로 생성

CREATE TABLE 테이블명
AS SELECT ~;

 

CREATE TABLE dept80 
AS SELECT employee_id, last_name, salary*12 annsal, hire_date
    FROM employees
    WHERE department_id = 80;

확인 > desc dept80

확인 > select * from dept80;

select한게 그대로 복사되어 생겼다. 

 

 


2. 테이블 생성시 제약조건 달기

https://luanaeun.tistory.com/167 

 

Oracle DB) 제약 조건: Primary Key, Foreign key, Unique, Not Null, Check

제약조건이란? 데이터의 무결성을 지키기 위한 제한된 조건. 특정 데이터를 입력 할 때 무조건 입력되는 것이 아닌, 지정한 조건을 만족했을 때 입력되도록 제약한다. 종류: Primary key, Foreign key

luanaeun.tistory.com

 


3. 복사본 테이블 만들기 

테이블 복사본을 만드는 것은 백업을 위해 꼭 필수로 알아야 한다

 

1) 완전히 똑같이 테이블 복사하기

CREATE table copy_emp
as select * from employees;

 

2) 구조만 복사하기

where 1=2는 무조건 false이기에, 구조만 똑같고 내용은 빈 테이블이 만들어진다. 

CREATE table copy_emp
as select * employees
where 1=2;

구조만 복사 후 다시 내용도 넣고싶으면 insert구문으로 넣을 수 있다. 

INSERT INTO copy_emp select * from employees;

 

 

궁금증?) 테이블을 값까지 모두 복사했을때 제약조건도 복사가 될까??

            => NOT NULL만 복사되기 때문에 나머지 제약조건은 원하면 따로 추가해야한다. 

                 NOT NULL은 복사를 안하고싶어도 자동으로 복사되기때문에 뺄 수가 없다. 

728x90