코딩하는 문과생

[SQL] Oracle, 데이터 정의어(DDL) 본문

프로그래밍/SQL

[SQL] Oracle, 데이터 정의어(DDL)

코딩하는 문과생 2020. 3. 31. 12:17

데이터 정의어(DDL)

: 데이터를 보관하고 관리하기 위해 제공되는 여러 객체의 생성, 변경, 삭제 관련 기능 수행

실행시 자동 COMMIT되므로 ROLLBACK을 통한 실행 취소가 불가

cf) DML은 COMMIT or ROLLBACK 작업이 필요

 

-CREATE

CREATE TABLE EMP_DDL(
    EMPNO   NUMBER(4),
    ENAME   VARCHAR2(10),
    JOB     VARCHAR2(9),
    MGR     NUMBER(4),
    ...
);

--기존 테이블 열 구조와 데이터를 복사하여 새 테이블 생성
CREATE TABLE DEPT_DDL
	AS SELECT * FROM DEPT;
    
--기존 테이블 열 구조와 일부 데이터를 복사하여 새 테이블 생성
CREATE TABLE DEPT_DDL
	AS SELECT * FROM DEPT WHERE DEPTNO=30;
    
--기존 테이블 열 구조만 복사하여 새 테이블 생성
CREATE TABLE DEPT_DDL
	AS SELECT * FROM DEPT WHERE 1<>1;
--1과 1이 다른 것을 항상 거짓이므로 데이터는 복사되지 않는다.

 

-ALTER

열 추가: ADD

CREATE TABLE EMP_ALTER
    AS SELECT * FROM EMP;

ALTER TABLE EMP_ALTER
    ADD HP VARCHAR2(20);

열 이름 변경: RENAME

ALTER TABLE EMP_ALTER
    RENAME COLUMN HP TO TEL;

 

열 자료형 변경: MODIFY

ALTER TABLE EMP_ALTER
	MODIFY EMPNO NUMBER(5);

특정 열 삭제: DROP

ALTER TABLE EMP_ALTER
	DROP COLUMN TEL;

 

-RENAME

: 테이블 이름 변경

RENAME EMP_ALTER TO EMP_RENAME;

 

-TRUNCATE

: 테이블 데이터 삭제

DELETE문과 다른 점은 DDL이라는 점. 즉, ROLLBACK이 불가

TRUNCATE TABLE EMP_RENAME;

 

-DROP

: 데이터베이스 객체를 삭제. 즉, 테이블을 삭제한다.

DROP TABLE EMP_RENAME;

 

-종합 예제

--1
CREATE TABLE EMP_HW(
    EMPNO       NUMBER(4),
    ENAME       VARCHAR2(10),
    JOB         VARCHAR2(9),
    MGR         NUMBER(4),
    HIREDATE    DATE,
    SAL         NUMBER(7,2),
    COMM        NUMBER(7,2),
    DEPTNO      NUMBER(2)
);

DESC EMP_HW;

--2
ALTER TABLE EMP_HW
    ADD BIGO VARCHAR2(20);
   
--3
ALTER TABLE EMP_HW
    MODIFY BIGO VARCHAR2(30);
   
--4 
ALTER TABLE EMP_HW
    RENAME COLUMN BIGO TO REMARK;
   
--5 
INSERT INTO EMP_HW
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, NULL
FROM EMP;

SELECT * FROM EMP_HW;

--6
DROP TABLE EMP_HW;

'프로그래밍 > SQL' 카테고리의 다른 글

[SQL] Oracle, 제약 조건  (0) 2020.04.01
[SQL] Oracle, 객체 종류  (0) 2020.03.31
[SQL] Oracle, 트랜잭션 제어와 세션  (0) 2020.03.31
[SQL] Oracle, 데이터 조작어(DML)  (0) 2020.03.30
[SQL] Oracle, 서브쿼리  (0) 2020.03.30