ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL - DDL(Data Definition Language)의 ALTER, DROP
    DataBase/Oracle 2022. 1. 27. 22:08
    728x90
    반응형

     

     

    ALTER

     

    • 객체를 수정하는 구문
    • 테이블 객체 수정, 칼럼 추가/삭제/수정, 제약조건 추가/삭제/수정,
    • 테이블명 수정, 제약조건 이름 수정

     


     

    칼럼 추가/삭제/수정

     

    칼럼 추가

    SELECT
           DC.*
      FROM DEPT_COPY DC;
    
    -- LNAME 칼럼 추가
    ALTER TABLE DEPT_COPY
    ADD (LNAME VARCHAR2(20));

     

     칼럼을 추가할 때 DEFAULT 값 지정할 수 있다.

    -- 컬럼 생성 시 DEFAULT 값 지정
    ALTER TABLE DEPT_COPY
    ADD (CNAME VARCHAR2(20) DEFAULT '한국');
    
    SELECT
           DC.*
      FROM DEPT_COPY DC;


     

    칼럼 삭제

    -- 컬럼 삭제
    ALTER TABLE DEPT_COPY
    DROP COLUMN LNAME;
    
    SELECT
           DC.*
      FROM DEPT_COPY DC;


     

    칼럼 변경

    -- 칼럼 자료형 수정
    ALTER TABLE DEPT_COPY2
    MODIFY DEPT_ID CHAR(3)
    MODIFY DEPT_TITLE VARCHAR2(30)
    MODIFY LOCATION_ID VARCHAR2(2);

    왼쪽은 칼럼 변경 전, 오른쪽은 칼럼 변경 후

     칼럼의 DEFAULT 값 변경

    -- DEFAULT 값 변경
    ALTER TABLE DEPT_COPY
    MODIFY CNAME DEFAULT '미국';

     

     

     

     


     

    제약 조건 추가/삭제/변경

     

    제약조건 추가

    CREATE TABLE DEPT_COPY2
    AS
    SELECT D.*
      FROM DEPARTMENT D;
    
    -- 칼럼의 제약조건 추가
    ALTER TABLE DEPT_COPY2
    ADD CONSTRAINT PK_DEPT_ID2 PRIMARY KEY(DEPT_ID);
    -- 칼럼의 제약조건 추가
    ALTER TABLE DEPT_COPY2
    ADD CONSTRAINT UN_DEPT_TITLE2 UNIQUE(DEPT_TITLE);
    -- 칼럼의 제약조건 추가 (NOT NULL은 MODIFY로 해줘야 한다)
    ALTER TABLE DEPT_COPY2
    MODIFY DEPT_TITLE CONSTRAINT NN_LID NOT NULL;

    3개의 제약조건이 추가된것을 볼 수 있다.


     

    제약 조건 삭제

    -- 제약조건 1개 삭제시
    ALTER TABLE DEPT_COPY2
    DROP CONSTRAINT PK_DEPT_ID2;
    
    -- 제약조건 여러개 삭제시
    -- NOT NULL 제약 조건 삭제 시 MODIFY 사용
    ALTER TABLE DEPT_COPY2
    DROP CONSTRAINT UN_DEPT_TITLE2
    MODIFY DEPT_TITLE NULL;

     

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

     

    칼럼 이름 변경

    CREATE TABLE DEPT_COPY3
    AS SELECT * FROM DEPARTMENT;
    
    ALTER TABLE DEPT_COPY3
    RENAME COLUMN DEPT_ID TO DEPT_CODE;
    
    SELECT
           DC.*
      FROM DEPT_COPY3 DC;

    DEFT_ID의 칼럼명이 DEPT_CODE로 변경 되었다.


     

    제약조건 이름 변경

    -- 제약조건 추가
    ALTER TABLE DEPT_COPY3
    ADD CONSTRAINT PK_DEPT_CODE3 PRIMARY KEY(DEPT_CODE);
    -- 제약조건 이름 변경
    ALTER TABLE DEPT_COPY3
    RENAME CONSTRAINT PK_DEPT_CODE3 TO PK_DCODE;

    PK_DEPT_CODE3의 제약조건 이름이 PK_DCODE로 변경되었다.


     

    테이블 이름 변경

    ALTER TABLE DEPT_COPY3
    RENAME TO DEPT_TEST;

     

     


     

     

    DROP

     

    테이블 삭제

     주의할 점은 테이블 삭제할 때 제약조건도 같이 삭제 되지 않으므로 CASCADE를 이용하여 제약조건도 같이 삭제해준다.

    -- 테이블 삭제
    DROP TABLE DEPT_TEST CASCADE CONSTRAINTS;

     

     

     

     

     

     

    728x90
    반응형

    댓글

Designed by Tistory.