2 minute read

데이터 정의어 DDL(Data Definition Language)

  • 명령어를 수행하자마자 데이터베이스에 수행한 내용이 바로 반영됨 ↔️ ROLLBACK을 이용한 작업 취소가 불가!!
  • DDL의 종류 : CREATE, ALTER, DROP, RENAME, TRUNCATE

CREATE- 테이블 생성!

[USAGE]

CREATE TABLE [소유계정.]테이블 이름(
	1이름 1자료형,
  ...
  n이름 n자료형
);

⭐ 테이블 이름 생성 규칙

  1. 테이블 이름은 문자로 시작!(한글 ⭕ 숫자 🚫)
  2. 테이블 이름 ≤ 30 Byte (↔️ Eng: 30자, 한글 : 15자 까지 허용)
  3. 같은 사용자 소유의 테이블 이름은 중복될 수 없음
  4. 테이블 이름은 영문자, 한글, 숫자, 특수문자 $ # _ 사용 가능
  5. SQL 키워드는 테이블 이름으로 사용 불가!!

🌟 열 이름 생성 규칙

  1. 열 이름은 문자로 시작!! (테이블 1번과 유사)
  2. 열 이름 ≤ 30 Byte (테이블 2번과 유사)
  3. 한 테이블의 열 이름은 중복 불가(테이블 3번과 유사)
  4. 열 이름은 영문자, 한글, 숫자, 특수문자 $ # _ 사용 가능 (테이블 4번과 유사)
  5. SQL 키워드는 열 이름으로 사용 불가!!(테이블 5번과 유사)

기존 테이블 열 구조와 데이터를 복사하여 새 테이블 생성하기

CREATE TABLE 테이블명
AS SELECT * FROM 기존 테이블 이름;

기존 테이블 열 구조와 일부 데이터만 복사하여 새 테이블 생성하기

CREATE TABLE 테이블명
AS SELECT * FROM 기존 테이블 WHERE 조건식;

기존 테이블의 열 구조만 복사하여 새 테이블 생성하기

  • 위에서 “기존 테이블의 열 구조와 일부 데이터만 복사하여 새 테이블 생성하기”에서 조건식을 무조건 어떤 상황에서라도 false 인 경우로 지정하면 된다!
CREATE TABLE 테이블명
AS SELECT * FROM 기존 테이블 WHERE 어떤 상황에서도 false 되는 조건식;
CREATE TABLE EMP_DDL2
AS SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE,E.SAL, E.COMM,E.DEPTNO 
          FROM EMP E
          WHERE 1^=1;

ALTER- 이미 생성된 오라클 DB 객체를 변경!

1) ADD :테이블에 열 추가

[USAGE]

ALTER TABLE 테이블명
ADD 컬럼명 자료형;

(예) EMP_ALTER2 테이블에 VARCHAR2 자료형(크기=20)인 컬럼 HP 추가하기

ALTER TABLE EMP_ALTER2
ADD HP VARCHAR2(20);

2) RENAME : 열 이름을 변경

[USAGE]

ALTER TABLE 테이블명
RENAME COLUMN 기존 컬럼명 TO 바꿀 이름;

(예) EMP_ALTER2 테이블의 HP 컬럼을 TEL로 이름만 변경하기

ALTER TABLE EMP_ALTER2
RENAME COLUMN HP TO TEL;

3) MODIFY : 열의 자료형을 변경 OR 이미 존재하는 테이블에서 특정 컬럼에 제약 조건 추가하기

A. 열의 자료형 변경

⭐ 기존 테이블 데이터에 영향을 주지 않는 범위 내에서 가능! 즉, 길이를 늘이는 것은 괜찮지만, 길이를 줄이거나, 기존 열의 자료형을 다른 자료형으로 바꾸는 것은 데이터 상태에 따라 결정됨!

ALTER TABLE 테이블명
MODIFY 컬럼명 바꿀_자료형;

(예) EMP_ALTER2 테이블의 JOB의 자료형이 VARCHAR2(9)로 되어있는데, VARCHAR2(10)으로 변경하기

ALTER TABLE EMP_ALTER2
MODIFY JOB VARCHAR2(10);

B. 이미 존재하는 테이블에서 특정 컬럼에 제약 조건 추가하기 ▶️ 제약조건 부분에서 확인하기!

ALTER TABLE 테이블명
MODIFY(컬럼명 제약조건);

4) DROP : 특정 열을 삭제

[USAGE]

ALTER TABLE 테이블명
DROP COLUMN 컬럼명;

(예시) 테이블 EMP_ALTER2에서 TEL 열 삭제하기

ALTER TABLE EMP_ALTER2
DROP COLUMN TEL;

RENAME - 테이블의 이름을 변경

[USAGE]

RENAME 기존_테이블_이름 TO 바꿀_테이블_이름;

(예시)

  • 위에서 사용되었던 테이블 EMP_ALTER2를 EMP_RENAME으로 바꾸기
RENAME EMP_ALTER2 TO EMP_RENAME;

⭐ 한 번 테이블 이름을 바꾼 후, 이전 테이블 이름으로 조회를 시도할 경우,

SELECT * FROM EMP_ALTER2;

SQL Error [942] [42000]: ORA-00942: table or view does not exist

와 같은 에러가 발생한다!!

즉, 이제는 이전 이름으로 지정된 테이블의 흔적이 없어지고, EMP_RENAME이라는 테이블로 접근할 수 있게된 것이다!!

TRUNCATE - 테이블의 데이터를 삭제

⭐ TRUNCATE 는 WHERE 조건식이 붙지 않은 DELETE 문의 수행과 동일하지만, ROLLBACK이 되지 않는다는 점에서 다르다!!

[USAGE]

TRUNCATE TABLE 테이블명;

DROP - 테이블을 삭제

  • 테이블이 삭제되므로 데이터도 모두 삭제됨

[USAGE]

DROP TABLE 테이블명;

⭐ RENAME 때와 유사하게, DROP TABLE을 한 후 해당 테이블을 조회하면

SQL Error [942] [42000]: ORA-00942: table or view does not exist

와 같은 에러가 발생한다!

⭐ DROP 도 ROLLBACK 으로 인한 취소를 할 수 없다!

Updated: