DDL
- 저장 구조에 대한 명령어
- DB 구조 명령어
DROP
- 테이블 삭제
- 자동 commit 되어 롤백 불가.
- 인덱스까지 삭제됨
표현
drop table 테이블명 [cascade constraints] ;
- cascade constraints 옵션
- 삭제하고자 하는 테이블(A)을 참조하는 다른 테이블(B)의 제약조건을 삭제함
- A의 PK가 B의 FK로 존재
- cascade 옵션 있을 때, 자식 테이블에 데이터 삽입 시 부모 테이블의 PK 컬럼이 가진 데이터가 아니어도 삽입 가능
- A (부모) 테이블이 삭제 되었기 때문.
- 데이터 유무와 무관하게, FK 제약조건 자체가 DROP을 막는다. 제약조건이 있을 때, 자식 테이블에 데이터가 없어도 부모 테이블 삭제 불가.
- 제약조건이 메타 데이터로 존재함.
- 삭제하고자 하는 테이블(A)을 참조하는 다른 테이블(B)의 제약조건을 삭제함
ALTER - 4
테이블에 컬럼 추가
표현
alter table 테이블명 add ( 컬럼명 데이터타입 [default 식] [constraint 정의] [ , 컬럼 데이터타입] … );
테이블 컬럼 수정
표현
alter table 테이블명 modify ( 컬럼명 데이터타입 [default 식] [constraint 정의] [ , 컬럼 데이터타입] … );
- 컬럼의 크기, 타입 변경
- 기본값, not null 제약조건 변경
사용상황
- NULL 값을 가진 컬럼, 테이블에 데이터 없을 때
주의 사항
- 컬럼 크기 축소 시, 컬럼에 데이터가 저장된 경우, 저장된 데이터 바이트 크기와 같거나 작을 때 에러 발생
- ORA-01401: 열에 입력한 값이 너무 큽니다
-- 컬럼에 저장된 바이트보다 같거나 작게 컬럼 수정 -> 불가
-- ORA-01401: 열에 입력한 값이 너무 큽니다
alter table test_emp
modify (univ varchar(15));
장점
- 저장공간 확보
- 버퍼 캐시 & IO 출력횟수 ↓
- 버퍼 캐시는 블록으로 구성되는데, 이 블록에 컬럼의 크기가 줄면서 더 많은 행이 들어갈 수 있음
특징
- DEFAULT 값을 변경하면 다음 입력(INSERT)때 적용
[제약조건 파트 참고 : https://optimizer.tistory.com/18]
제약조건 추가
표현
alter table 테이블명 add [constraint 제약조건명] 제약조건유형(컬럼명);
특징
- 컬럼에 NULL 이 없을 때 NOT NULL 제약 조건 추가 가능
제약조건 변경
- 삭제 alter table 테이블명 drop constraint 제약조건명 [cascade];
제약조건 활성화/비활성화
- 활성화
- 기존 데이터 + 신규 데이터 검증
alter table 테이블명 enable constraint 제약조건명 ;
- enable novalidate 옵션
- 제약조건을 켜지만, 기존 데이터는 검사하지 않고 이후에 수행되는 insert, update만 검증
- 비활성화
- 신규, 기존 데이터 모두 검증 X
- 수백만건 데이터 INSERT, LOAD 시 FK, CHECKK 제약 조건 비활성화. 검증 오버헤드 줄임.
alter table 테이블명 disable constraint 제약조건명 [cascade];
그 외의 DDL
rename 이전이름 to 새로운이름;
- 객체의 이름 바꿈
- 객체의 소유자만 변경 가능
truncate table 테이블명;
- 기존 테이블 구조는 남기고 모든 행 삭제
- 테이블이 사용한 저장공간 반환
- rollback 불가. DDL은 자동 COMMIT 되기 때문. ⭕ 암기
cf. delete 명령은 삭제된 행 rollback 가능 (dml)
테이블 주석
comment on table 테이블명 is ‘주석에적을내용’;
- user_tab_comments 테이블을 조회하여 주석 내용 확인 가능
컬럼 주석
comment on column 테이블명.컬럼명 is ‘주석에적을내용’;
- user_col_comments 테이블을 조회하여 주석 내용 확인 가능
'Database' 카테고리의 다른 글
[Modeling] Ch01. 데이터 모델링 이론 (0) | 2025.05.12 |
---|---|
[Database] Ch10.Dictionary (0) | 2025.05.11 |
[Database] Ch09. Transaction Control (0) | 2025.05.06 |
[Database] Ch08. Constraint 제약조건 (0) | 2025.05.05 |
[Database] Ch2.테이블 생성 및 데이터 조작(DML) Ch3.데이터검색 Ch4. Stored Function (0) | 2025.05.04 |