몰입하며 나아가는 개발이란

Language/SQL

Oracle SQL DDL 01 (Data Definition Language 01)

류하을 2019. 12. 18. 15:14

DDL 이란? (Data Definition Language)

직역하면, 데이터를 정의하는 언어라고 하며, 테이블이나 관계의 구조를 생성하는 명령어이다.

이 글에서는 DDL 명령어중 총 3가지 CREATE, DROP, ALTER를 알아보는것을 목적으로 하고있다.

 

**DBA 계정으로 진행**

 

TABLE SPACE 생성

CREATE TABLESPACE tablespace01 -- 생성할 테이블의 name 설정.
DATAFILE 'C:\지정경로' SIZE 10M -- 생성 테이블 경로와 사이즈 설정.
AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED -- 생성 테이블의 최대추가용량 설정.
LOGGING / NOLOGGING -- 로깅사용함, 사용안함 설정.
EXTENT MANAGEMENT LOCAL AUTOALLOCATE -- LOCAL 자동 설정.
BLOCKSIZE 8k -- 블록크기 8k 설정.
SEGMENT SPACE MANAGEMENT AUTO -- 시그먼트관리 자동 설정.
FLASHBACK ON; -- 테이블 추가 및 설정완료.

TABLE SPACE 이름 수정하기

ALTER TABLESPACE tablespace01
RENAME TO table_tbs_new; -- 테이블이름 바꾸기

TABLE SPACE 용량 수정하기

ALTER DATABASE
DATAFILE 'C:\지정경로' RESIZE 20M; -- 20M로 용량수정

TABLE SPACE 삭제

DROP TABLESPACE tablespace01
INCLUDING CONTENTS AND DATAFILES
CASCADE CONSTRAINTS; -- 테이블 삭제

위와 같이 CREATE 는 생성하는 일을 수행하며, ALTER는 수정과 관련된 일을, DROP은 삭제와 관련된 일을 수행하는것을 관찰 할 수 있다.

 

**hr계정으로 진행**

 

TABLE default 생성

CREATE TABLE table01 (COL_01 VARCHAR2(10), COL_01 VARCHAR2(10)); 
-- TABLESPACE디폴트 값인 users로 생성이 이루어진다.

TALBLE 생성

CREATE TABLE table01 (COL_01 VARCHAR2(10), COL_01 VARCHAR2(10))
TABLESPACE tablespace01; -- tablespace01 로 생성됨.

TABLE COPY IN(DATA) : 데이터가 포함된 복사

CREATE TABLE table01 AS SELECT * FROM jobs;

TABLE COPY NOT IN(DATA) : 데이터가 포함되지 않은 복사

CREATE TABLE table01 AS SELECT * FROM jobs WHERE 1=2;

여기에서 AS(Ailas)는 참조할 대상(테이터)을 가르키는 것으로 관찰 수 있으며, 원하는 COLUMN만 복사를 원하면, *을 제외하고 원하는 COLUMN을 선택하면된다.

 

TABLE 수정 : 이름

ALTER TABLE table01
RENAME TO table02; -- table01의 이름을 table02로 수정1

RENAME table02 TO table01; -- table01의 이름을 table02로 수정2

TABLE 수정 : COLUMN 추가

ALTER TABLE table02
ADD COL_01 VARCHAR2(10); -- 자료형 VARCHAR2(10) 의 COL_01 COLUMN 추가.

ALTER TABLE table02
ADD (COL_02 VARCHAR2(10), COL_03 VARCHAR2(10)); -- COLUMN 다중 추가. 

TABLE 수정 : COLUMN 수정

ALTER TABLE table02
MODIFY ( COL_01 VARCHAR2(20) ); -- 자료형 VARCHAR2(20) 으로 COL_01 COLUMN 수정.

ALTER TABLE table02
MODIFY ( COL_02 VARCHAR2(20), COL_03 VARCHAR2(20) ); -- 자료형 VARCHAR2(20)으로 다중수정

TABLE 수정 : COLUMN 삭제

ALTER TABLE table02
DROP COLUMN COL_01; -- COL_01 COLUMN 삭제

ALTER TABLE table02
DROP COLUMN (COL_02, COL_03); -- COLUMN 다중 삭제

TABLE 수정 : COLUMN 이름 수정

ALTER TABLE table02
RENAME COLUMN COL_01 TO COL_11; -- COL_01 COLUMN 을 COL_11로 이름 수정

TABLE 삭제

DROP TABLE table02;

DROP TABLE table02
CASCADE CONSTRAINTS; -- 제약조건까지 삭제, 무결성

TABLE 복구

FLASHBACK TABLE test02
TO BEFORE DROP; -- 휴지통에서 복구

계정 휴지통 비우기

PURGE RECYCLEBIN;