DDL(데이터 정의어 : Data Definition Language)은 테이블을 생성, 수정, 제거하도록 하는 명령문 집합입니다.
CREATE TABLE 문을 통해 데이터를 저장할 테이블을 생성할 수 있습니다.
기존 칼럼에 데이터가 없는 경우에는 칼럼 타입이나 크기 변경이 자유롭지만, 데이터가 존재하는 경우 타입 변경은 CHAR, VARCHAR2만 허용되며 변경한 칼럼의 크기는 저장된 데이터의 크기와 같거나 클 경우에만 변경할 수 있습니다. 숫자 타입은 폭 혹은 전체 자릿수를 늘릴 수 있습니다.
변경 내용은 변경 후 입력되는 데이터부터 적용이 됩니다.
[예제] 사원 테이블의 칼럼의 크기를 변경해 봅시다.
ALTER TABLE … DROP COLUMN 구문을 사용하여 특정 칼럼과 칼럼 내의 데이터를 제거할 수 있습니다.
2개 이상의 칼럼이 존재하는 테이블에서만 가능하며 한 번에 하나의 칼럼만 삭제할 수 있습니다. 삭제된 칼럼은 복구할 수 없습니다.
SET UNUSED는 시스템 요구가 적을 때 칼럼을 제거할 수 있도록 하나 이상의 칼럼을 UNUSED로 표시합니다. 실제로는 테이블에서 해당 칼럼이 제거되지는 않습니다.
DROP 명령보다 응답시간이 빨라집니다.
삭제된 것으로 처리하기 때문에 SELECT나 DESCRIBE를 사용할 수 없습니다.
[예제] 부서 테이블에서 사원번호 칼럼을 UNUSED 상태로 만들어 봅시다.
old name은 기존 객체의 이름이고 new_name은 변경할 새 객체의 이름입니다.
[예제] RENAME 문을 이용하여 테이블 명을 변경하여 봅시다!
DROP TABLE 문을 사용하여 기존의 테이블과 데이터를 모두 제거할 수 있습니다.
삭제할 테이블의 기본 키나 고유 키를 다른 테이블에서 참조하고 있는 경우 삭제가 불가능하기 때문에, 그럴 경우 참조 중인 자식 테이블을 먼저 제거하여야 합니다.
[예제] DROP TABLE을 이용하여 테이블을 제거하여 봅시다.
TRUNCATE 문은 기존의 테이블의 모든 로우를 제거하게 합니다.
테이블의 구조는 그대로 유지되며, 테이블의 데이터와 이에 할당된 공간이 해제됩니다.
제약 조건, 인덱스, 뷰, 동의어 등은 그대로 유지됩니다
데이터 사전은 사용자와 데이터베이스 자원의 효율적 관리를 위한 다양한 정보를 저장하는 시스템 테이블의 집합입니다.
사용자가 테이블을 생성하거나 사용자를 변경하는 등의 작업을 할 때 데이터베이스 서버에 의해 자동으로 갱신되는 테이블입니다.
사용자는 데이터 사전의 내용을 직접 수정하거나 삭제할 수 없고 읽기 전
용 뷰 형태로 사용자에게 제공됩니다.
접두어로 USER_가 붙은 데이터 사전은 사용자와 가장 밀접하게 관련된 뷰로서 자신이 생성한 테이블, 인덱스, 뷰, 동의어 등의 객체나 해당 사용자에게 부여된 권한 정보를 제공합니다.
[예제] user_table로 사용자가 소유한 테이블에 대한 정보를 조회하여 봅시다.
USER_SEQUENCES : 사용자가 소유한 시퀀스의 정보
USER_INDEXES : 사용자가 소유한 인덱스 정보를 조회
USER_VIEW : 사용자가 소유한 뷰 정보를 조회할 수 있는 데이터 사전
접두어로 ALL_이 붙은 데이터 사전은 전체 사용자와 관련된 뷰로서 사용자가 접근할 수 있는 모든 객체에 대한 정보를 조회할 수 있습니다.
조회 중인 객체가 누구의 소유인지 확인하도록 하기 위해서 OWNER 컬럼을 제공합니다.
[예제] all_table로 테이블에 대한 정보를 조회하여 봅시다.
접두어로 DBA_가 붙은 데이터 사전은 시스템과 관련된 뷰로, DBA나 시스템 권한을 가진 사용자만 접근할 수 있습니다.
현재 사용자가 HR이라면 DBA_로 시작하는 데이터 사전을 조회할 권한이 없기 때문에 DBA 권한을 가진 SYSTEM 계정으로 접속해야 합니다.
[예제] dba_tables로 테이블에 대한 정보를 조회하여 봅시다.