*SQL_Oracle*

DDL < ALTER, DROP >

깐부로부터 2021. 11. 11. 01:01

DDL : DATA DEFINITION LANGUAGE

데이터 정의 언어

 

 

1. ALTER

객체 구조를 수정하는 구문

 

< 테이블을 수정 >

ALTER TABLE 테이블명 수정할내용;
- 수정할 내용
   1) 컬럼 추가 / 수정 / 삭제
   2) 제약조건 추가 / 삭제 => 수정은 불가 (수정하고자하면 삭제 후 새롭게 추가)
   3) 테이블명 / 컬럼명 / 제약조건명 변경

 

1)컬럼 추가 / 수정 / 삭제
    1_1) 컬럼 추가 (ADD) : ADD 추가할컬럼명 데이터타입 /* DEFAULT 기본값 */

 

 

 

1-2) 컬럼 수정 (MODIFY)
-- 데이터타입 수정 : MODIFY 수정할 컬럼명 바꾸고자하는 데이터타입
-- DEFAULT 값 수정 : MODIFY 수정할 컬럼명 DEFAULT 바꾸고자하는 기본값

 

 

-- 현재 변경하고자하는 컬럼에 이미 담겨있는 값과 완전히 다른 타입으로 변경은 불가하다.
-- 예) 문자 -> 숫자 (X) / 문자열 사이즈 축소(X) / 문자열 사이즈 확대(O)

 

 

 

1_3) 컬럼 삭제(DROP COLUNM) : DROP COLUMN 삭제하고자하는 컬럼명

 

테이블에 최소 한개의 컬럼존재해야 함으로 마지막 LNAME 컬럼은 삭제가 되지 않는다.

 

 

※ DDL구문은 복구불가능으로 ROLLBACK이 되지 않는다. (한번 삭제한 컬럼은 복구 불가능)


2) 제약조건 추가 / 삭제

 

2_1) 제약조건 추가
    
    - PRIMARY KEY : ADD PRIMARY KEY(컬럼명);
    - FOREIGN KEY : ADD FOREIGN KEY(컬럼명) REFERENCES 참조할테이블명(참조할 컬럼명);
    - UNIQUE : ADD UNIQUE(컬럼명);
    - CHECK : ADD CHECK(컬럼명);
    - NOT NULL : MODIFY 컬럼명 NOT NULL;
    
    나만의 제약조건명을 부여하는 방법 : CONSTRAINT 제약조건명 제약조건을 쓴다.
                                                    써도되고 안써도 되고 생략이 가능하다.

 

 

 

 

 2_2) 제약조건 삭제
    
    PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK 

      : DROP CONSTAINT 제약조건명
    NOT NULL 

      : MODIFY 컬럼명 NULL


3) 컬럼명 / 제약조건명 / 테이블명 변경(RENAME)

 

   3_1) 컬럼명 변경 : RENAME COLUMN 기존컬럼명 TO 바꿀컬럼명;

   3_2) 제약조건명 변경 : RENAME CONSTRAINT 기존제약조건명 TO 바꿀제약조건명;

   3_3) 테이블명 변경 : RENAME 기존테이블명 TO 바꿀테이블명;


2. DROP

객체를 삭제하는 구문

 

※예외) 어딘가에서 참조되고 있는 부모테이블은 삭제되지 않는다.

 

그럼에도 꼭 삭제를 하고 싶다면?

 

1. 자식테이블을 먼저 삭제한 후 부모테이블을 삭제한다.

 

2. 부모테이블만 삭제하는데 맞물려있는 제약조건도 함께 삭제하는 법

 

'*SQL_Oracle*' 카테고리의 다른 글

TCL < COMMIT, ROLLBACK >  (0) 2021.11.11
DCL < GRANT, REVOKE>  (0) 2021.11.11
DML <INSERT, UPDATE, DELETE>  (0) 2021.11.11
DDL <CREATE> SUBQUERY를 이용한 테이블생성  (0) 2021.11.10
DDL < CREATE >  (0) 2021.11.08