[ORACLE]DDL 테이블 생성 CREATE TABLE
DDL(데이터정의어)
- CREATE: 객체생성
- ALTER:객체변경
- DROP:객체삭제
- TRUNCATE:객체 내용및 저장공간 삭제
(※※RENAME : DB객체 이름 변경 ,정의어 X)
삭제명령어 차이점
DELETE(DML:데이터 조작어)
TRUNCATE, DROP(DDL:데이터 정의어)
DELETE 명령어 : 데이터는 지워지지만 테이블 용량은 줄어 들지 않는다.
원하는 데이터만 삭제할 수 있다.
삭제 후 잘못 삭제한 것은 되돌릴 수 있다.(rollback)
TRUNCATE 명령어 : 용량이 줄어 들고, index 등도 모두 삭제된다.
테이블은 삭제하지는 않고, 데이터만 삭제한다.
한꺼번에 다 지워야 한다.
삭제 후 절대 되돌릴 수 없다.
DROP 명령어 : 테이블 전체를 삭제(테이블 공간과 객체를 삭제한다.)
삭제 후 절대 되돌릴 수 없다.
테이블 생성 CEATE TABLE
create table dept(
dno number(2),
dname varchar2(14),
loc varchar2(13));
서브쿼리를 이용한 테이블 생성방법
★★무결성 제약조건
not NULL 조건만 복사,
기본키(=PK), 외래키(=FK)와 같은 무결성제약조건은 복사X
디폴트 옵션에서 정의한 값은 복사
서브쿼리의 출력 결과가 테이블의 초기 데이터로 삽입됨
create table 테이블명(컬럼명 명시O):지정한 컬럼수와 데이터 타입이 서브쿼리문의 검색된 컬럼과 일치,
create table dept1(dept_id)--dept_id:컬럼명 --수 1개
as
select dno--컬럼수 1개
from department;
--데이터, 데이터타입만 복사
create table 테이블명(컬럼명 명시X):서브쿼리의 컬럼명이 그대로 복사
create table dept2
as
select eno,ename,salary*12 as "연봉" --산술식에 별칭지정 필수
from employee
where dno=20;
--데이터, 데이터타입만 복사
테이블 구조만 복사
create table dept3
as
select*
from department
where 0=1;--항상 거짓인 조건
테이블 구조와 내용복사
/*DEPARTMENT 테이블의 구조와 내용을 복사하여 DEPT_COPY_2란 이름의 테이블을 만드시오.*/
create table dept_copy_2
as
select *
from department;