Oracle DB) 데이터 정의어(DDL) - CREATE 테이블 생성, 복사
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은 복사를 안하고싶어도 자동으로 복사되기때문에 뺄 수가 없다.