ORACLE DB

▶DDL(ALTER,DROP)◀

chojdsj 2023. 6. 8. 22:56
728x90
ALTER(바꾸다, 변조하다)

 

- 수정 가능한 것 : 컬럼(추가/수정/삭제), 제약조건(추가/삭제), 이름변경(테이블, 컬럼, 제약조건)

 

- 테이블을 수정하는 경우 : ALTER TABLE 테이블명 ADD | MODIFY | DROP 수정할 내용;

 

 

 

제약조건 추가 / 삭제

 

- 제약조건 추가 : ALTER TABLE 테이블명 ADD [CONSTRAINT 제약조건명] 제약조건(컬럼명) [REFERENCES 테이블명[(컬럼명)];

 

* NOT NULL은 MODIFY 사용

 

 

 

- 제약조건 삭제 : ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;

 

* 삭제도 마찬가지로 NOT NULL은 MODIFY 사용

 

 

 

 

컬럼 추가 / 수정 / 삭제

 

 

- 컬럼 추가 : ALTER TABLE 테이블명 ADD (컬럼명 데이터타입 [DEFAULT '값']);

 

 

- 컬럼 수정 : ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입;(데이터타입 변경)

                     ALTER TABLE 테이블명 MODIFY 컬럼명 DEFAULT '값'; (기본값 변경)

 

 

 

- 컬럼 삭제 : ALTER TABLE 테이블명 DROP (삭제할 컬럼명);

                    ALTER TABLE 테이블명 DROP COLUMN (삭제할 컬럼명);

* 테이블에는 최소 1개 이상의 컬럼이 존재해야 하기 때문에 모든 컬럼 삭제X

 

 

 

 

** CREATE / ALTER / DROP 같은 DDL은 롤백의 대상이 아님 **

DDL/DML을 혼용해서 사용할 경우 발생하는 문제점으로, DML을 수행하여 트랜잭션에 변경사항이
저장된상태에서 커밋/롤백 없이 DDL 구문을 수행하게 되면 DDL 수행과 동시에 선행  DML이 자동으로 커밋됨

 

 

 

 

 

테이블 삭제

 

- 작성법 : DROP TABLE 테이블명 [CASCADE CONSTRAINTS];

 

 

--> TB1 (부모 테이블) , TB2 (자식 테이블) 

--> TB1 테이블을 삭제할 경우 TB2가 TB1을 참조하고 있기 때문에 TB1테이블 삭제 불가능

-->> ORA-02449: 외래 키에 의해 참조되는 고유/기본 키가 테이블에 있습니다.

 

 

 

- 해결방법

--> 제약조건까지 모두 삭제

 

 

 

 

컬럼, 테이블명, 제약조건명 변경

 

- 컬럼명 변경 : ALTER TABLE 테이블명 RENAME COLUMN 컬럼명 TO 변경명

 

- 테이블명 변경 : ALTER TABLE 테이블명 RENAME TO 변경명

 

- 제약조건명 변경 : ALTER TABLE 테이블명 RENAME CONSTRAINT 제약조건명 TO 변경명

 

 

 

 

 

 

 

 

 

 

 

 

'ORACLE DB' 카테고리의 다른 글

▶DDL◀  (0) 2023.05.28
▶SUBQUERY◀  (0) 2023.05.28
▶TCL◀  (0) 2023.05.25
▶DML◀  (0) 2023.05.25
▶JOIN◀  (0) 2023.05.25