Published 2022. 11. 23. 17:05

< DDL 데이터 정의 언어 >

  객체들을 생성(CREATE), 변경(ALTER), 삭제(DROP) 하는 구문


     1.  ALTER 

    객체를 변경하는 구문 
    
    [표현법]
    ALTER TABLE 테이블명 변경할 내용;
    
    *변경할 내용 
    1) 컬럼 추가/수정/삭제
    2) 제약조건 
    3) 컬럼명 /제약조건명/테이블명 수정 

 

1) 컬럼 추가/ 수정/ 삭제 

1_1) 컬럼 추가 (ADD)  :  ADD 컬럼명 자료형 [DEFAULT 기본값]

예시) DEPT_COPY에 LNAME 컬럼 추가 (기본값 지정)

ALTER TABLE DEPT_COPY ADD LNAME VARCHAR2(20) DEFAULT '한국';

 

1_2) 컬럼 수정 (MODIFY) 

   > 데이터 타입 수정 : MODIFY 컬럼명 바꾸고자하는 데이터타입
   > DEFAULT값 수정 : MODIFY 컬럼명 DEFAULT 바꾸고자하는 기본값 

예시) DEPT_TITLE컬럼을 VARCHAR2(40) /LOCATION_ID 컬럼을 VARCHAR2(2) /
         LNAME컬럼의 기본값을 '미국'으로 변경 

ALTER TABLE DEPT_COPY 
     MODIFY DEPT_TITLE VARCHAR2(40)
     MODIFY LOCATION_ID VARCHAR2(2)
     MODIFY LNAME DEFAULT '미국';  --다중변경 가능

 

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

ALTER TABLE EMP_NEW DROP COLUMN SALARY; 
ALTER TABLE EMP_NEW DROP COLUMN EMP_NAME;
ALTER TABLE EMP_NEW DROP COLUMN HIRE_DATE;
ALTER TABLE EMP_NEW DROP COLUMN EMP_ID; --> 오류발생
--> 최소한개의 컬럼은 존재해야하기 때문에 삭제불가

 

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|NULL

예시) DEPT_COPY 테이블로 부터 DEPT_ID에 PRIMARY KEY제약조건 추가
         /DEPT_TITLE 에 UNIQUE제약조건 추가/LNAME에 NOT NULL 추가 

ALTER TABLE DEPT_COPY 
    ADD CONSTRAINT DCOPY_PK PRIMARY KEY(DEPT_ID)
    ADD UNIQUE (DEPT_TITLE)
    MODIFY LNAME CONSTRAINT DCOPY_NN NOT NULL;

 

2_2) 제약조건 삭제 
        DROP CONSTRAINT 제약조건명 / MODIFY 컬럼명 NULL (NOT NULL같은경우)

ALTER TABLE DEPT_COPY DROP CONSTRAINT DCOPY_PK;
ALTER TABLE DEPT_COPY 
     DROP CONSTRAINT SYS_C007166
     MODIFY LNAME NULL;

 

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

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

ALTER TABLE DEPT_COPY RENAME COLUMN DEPT_TITLE TO DEPT_NAME;

 

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

ALTER TABLE DEPT_COPY RENAME CONSTRAINT SYS_C007162 TO LID_NN;

 

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

ALTER TABLE DEPT_COPY RENAME TO DEPT_TEST;

  2. DROP

  테이블 삭제

DROP TABLE DEPT_TEST;

>> 단, 어딘가에 참조되고있는 부모테이블은 함부로 삭제 안됨 

  *만약에 삭제하고자 한다면, 
방법1) 자식테이블 먼저 삭제 후 부모테이블 삭제하는 방법 
방법2) DROP TABLE 테이블명 CASCADE CONSTRAINT;
           부모테이블만 삭제하는데 제약조건까지 같이 삭제하는 방법 

'ORACLE' 카테고리의 다른 글

ORACLE 10. TCL (COMMIT, ROLLBACK,SAVE POINT)  (0) 2022.11.24
ORACLE 09. DCL(GRANT, REVOKE)  (0) 2022.11.24
ORACLE 07. DML (DELETE)  (0) 2022.11.23
ORACLE 07. DML (UPDATE)  (0) 2022.11.23
ORACLE 07. DML (INSERT)  (0) 2022.11.23
복사했습니다!