DataBase
12-1. 객체를 생성, 변경, 삭제하는 데이터 정의어
데이터 정의어(DDL : Data Definition Language)는 데이터베이스 데이터를 보관하고 관리하기 위해 제공되는
여러 객체(Object)의 생성/변경/삭제 관련 기능을 수행합니다.
데이터 정의어를 사용할 때 유의점
데이터 정의어는 데이터 조작어(DML)와 달리 명령어를 수행하자마자 데이터베이스에 수행한 내용이 바로 반영되는
특성이 있습니다. 즉 데이터 정의어를 실행하면 자동으로 COMMIT되기 때문에 이전에 사용한 데이터 조작어는 영구히
데이터베이스에 반영됩니다. 이는 ROLLBACK을 통한 실행 취소가 불가하다는 것을 의미하기 때문에 사용할 때 주의를
기울여야 합니다.
데이터 정의어는 객체를 생성하는 CREATE, 이미 생성된 객체를 변경하는 ALTER, 객체를 삭제하는 DROP 등의 명령어로
이루어져 있습니다.
12-2. 테이블을 생성하는 CREATE
CREATE문은 오라클 데이터베이스 객체를 생성하는 데 사용하는 명령어 입니다.
테이블을 생성한 CREATE TABLE 명령어가 대표적인 데이터 정의어 입니다.
CREATE TABLE 테이블명(
열1 이름 열1 자료형,
열2 이름 열2 자료형,
...
열N 이름 열N 자료형
);
생성할 테이블 이름은 반드시 다음 규칙대로 지정해 주어야 합니다.
[테이블 이름 생성 규칙]
1. 테이블 이름은 문자로 시작해야 한다(한글도 가능하며 숫자로 시작할 수 없음)
2. 테이블 이름은 30byte 이하여야 한다(즉 영어는 30자, 한글은 15자까지 사용 가능)
3. 같은 사용자 소유의 테이블 이름은 중복될 수 없다.(어떤 계정에 이름이 같은 테이블은 존재할 수 없음)
4. 테이블 이름은 영문자(한글 가능), 숫자(0-9)와 특수 문자 $, #, _ 를 사용할 수 있다
5. SQL 키워드는 테이블 이름으로 사용할 수 없다(SELECT, FROM 등은 테이블 이름으로 사용 불가)
테이블 이름과 마찬가지로 열 이름에도 규칙이 있습니다. 테이블 이름 지정 규칙과 크게 다르지 않습니다.
[열 이름 생성 규칙]
1. 열 이름은 문자로 시작해야 한다.
2. 열 이름은 30byte 이하여야 한다.
3. 한 테이블의 열 이름은 중복될 수 없다(같은 이름의 열이 두개 존재할 수없음)
4. 열 이름은 영문자(한글 가능), 숫자(0-9)와 특수 문자 $, #, _ 를 사용할 수 있다.
5. SQL 키워드는 열 이름으로 사용할 수 없다.
기존 테이블 열 구조 전체와 일부 데이터를 복사하여 새 테이블을 만들 수 있습니다.
CREATE문에 서브쿼리를 사용하면 기존 테이블의 열 구조를 복사하여 새 테이블을 만들 수 있습니다.
12-3. 테이블을 변경하는 ALTER
ALTER 명령어는 이미 생성된 오라클 데이터베이스 객체를 변경할 때 사용합니다. 테이블에 새 열을 추가 또는 삭제하거나 열의 자료형 또는 길이를 변경하는 등 테이블 구조 변경과 관련된 기능을 수행합니다.
키워드 | 설명 |
ADD | 추가할 열 이름과 자료형을 명시하면 테이블에 새 열을 추가할 수 있습니다. |
RENAME | 테이블의 열 이름을 변경할 수 있습니다. |
MODIFY | 테이블의 특정 열의 자료형이나 길이를 변경할 때 사용합니다. |
DROP | 테이블의 특정 열을 삭제할 때 사용합니다. |
12-4. 테이블 이름을 변경하는 RENAME
테이블 이름을 변경할 때는 RENAME 명령어를 사용합니다.
RENAME 기존테이블명 TO 새 테이블명;
이름을 변경한 후에는 기존 테이블명을 사용할 수 없습니다.
12-5. 테이블의 데이터를 삭제하는 TRUNCATE
TRUNCATE 명령어는 특정 테이블의 모든 데이터를 삭제합니다. 데이터만 삭제하므로 테이블 구조에는 영향을 주지 않습니다. 테이블의 데이터 삭제는 데이터 조작어 중 WHERE절을 명시하지 않은 DELETE무의 수행으로도 가능합니다.
하지만 TRUNCATE는 데이터 정의어이기 때문에 ROLLBACK이 되지 않는다는 점에서 DELETE문과 다릅니다.
12-6. 테이블을 삭제하는 DROP
DROP 명령어는 데이터베이스 객체를 삭제하는 데 사용합니다. 테이블이 삭제되므로 테이블에 저장된 데이터도 모두 삭제 됩니다.
DROP TABLE 테이블명;
DROP 명령어 역시 데이터 정의어이므로 ROLLBACK 명령어로 테이블 삭제 수행을 취소할 수 없습니다. 하지만
오라클 10g부터터는 윈도우의 휴지통 기능과 같은 FLASHBACK 기능을 사용하여 DROP 명령어로 삭제된 테이블을 복구할 수 있는데
상황에 따라서 유용하게 사용할 수 있으므로 필요할 때 인터넷 검색을 통해 사용법을 참고합시다.
잊기전에 한 번 더
Q1. 다음 열 구조를 가지는 EMP_HW 테이블을 만들어 보세요.
CREATE TABLE EMP_HW(
EMPNO NUMBER(4),
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2),
);
Q2. EMP_HW 테이블에 BIGO 열을 추가해 보세요. BIGO 열의 자료형은 가변형 문자열이고, 길이는 20입니다.
ALTER TABLE EMP_HW
ADD BIGO VARCHAR2(20);
Q3. EMP_HW 테이블의 BIGO 열 크기를 30으로 변경해 보세요.
ALTER TABLE EMP_HW
MODIFY BIGO VARCHAR2(30);
Q4. EMP_HW 테이블의 BIGO 열 이름을 REMARK로 변경해 보세요.
ALTER TABLE EMP_HW
RENAME COLUMN BIGO TO REMARK;
Q5. EMP_HW 테이블에 EMP 테이블의 데이터를 모두 저장해 보세요. 단 REMARK 열은 NULL로 삽입합니다.
CREATE TABLE EMP_HW
AS SELECT * FROM EMP;
Q6. 지금까지 사용한 EMP_HW 테이블을 삭제해 보세요.
DROP TABLE EMP_HW;
'javaboiii의 DataBase > DB 요약정리(Do it! 오라클 데이터베이스)' 카테고리의 다른 글
DB -10) 데이터를 추가, 수정, 삭제하는 데이터 조작어 (0) | 2024.07.30 |
---|---|
DB -6) 데이터 처리와 가공을 위한 오라클 함수 (1) | 2024.07.29 |
DB -5) WHERE절과 연산자 (0) | 2024.07.28 |
DB - 4) SELECT문의 기본 형식 (0) | 2024.07.27 |
DB -2) 관계형 데이터베이스와 오라클 데이터베이스 (0) | 2024.07.27 |