데이터 조작어와 달리 데이터 정의어는 실행하면 자동으로 COMMIT되어버리기 때문에 ROLLBACK으로 실행취소가 불가능하다.
형식은 다음과 같다.
CREATE TABLE 소유 계정.테이블 이름(
열1 이름 열1 자료형,
열2 이름 열2 자료형,
...
열N 이름 열N 자료형)
테이블 이름과 마찬가지로 열 이름에도 규칙이 있다.
CREATE TABLE EMP_DDL(
EMPNO NUMBER(4),
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DERPTNO NUMBER(2)
);
CREATE TABLE DEPT_DDL
AS SELECT * FROM DEPT;
CREATE TABLE EMP_DDL
AS SELECT *
FROM EMP
WHERE DEPTNO=30;
CREATE TABLE EMPDEPT_DDL
AS SELECT E.EMPNO,E.ENAME,E.JOB,E.MGR,E.HIREDATE,
E.SAL,E.COMM,D.DEPTNO,D.DNAME,D.LOC
FROM EMP E, DEPT D
WHERE 1!=1;
CREATE TABLE EMP_ALTER
AS SELECT * FROM EMP;
이 테이블에서 실습한다.
테이블에 열을 추가할 때 사용한다.
ALTER TABLE EMP_ALTER
ADD HP VARCHAR2(20);
열 이름을 변경할 때 사용한다.
ALTER TABLE EMP_ALTER
RENAME COLUMN HP TO TEL;
테이블 이름또한 바꿀 수 있다.
RENAME EMP_ALTER TO EMP_RENAME;
열의 자료형을 변경할 때 사용한다.
ALTER TABLE EMP_ALTER
MODIFY EMPNO NUMBER(5);
전
후
DROP COLUMN
열을 삭제할 때 사용한다. DROP TABLE
로 테이블 또한 지울 수 있다.
삭제하면 해당 열의 데이터도 함께 삭제된다.
ALTER TABLE EMP_ALTER
DROP COLUMN TEL;
TRUNCATE명령어는 특정 테이블의 모든 데이터를 삭제한다.
TRUNCATE TABLE EMP_RENAME;
유의할 점
특정 테이블의 모든 데이터삭제는 WHERE절없는 DELETE문으로도 가능하지만 데이터 정의어 인 TRUNCATE는 ROLLBACK을 수행할 수 없다.