ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL DDL_Alter
    Data Base_Oracle/SQL 2020. 1. 4. 15:34

    DDL _ Create, Alter, Drop

    Data Definition Language : 데이터 정의어
    Table Create생성, Alter수정, Drop삭제 구문

    Alter

    테이블의 구조를 수정하는 구문

    ADD_이미 생성된 테이블에 필드 추가

    이미 데이터가 저장되어 있다면 제약을 받음

    § 형식

    [ SQL> alter table 수정table명 add (추가할 필드명 자료형 제약조건); ]
    ※ 제약조건 : 올바른 값만 입력 받을 수 있도록 하는 규칙

    # 예제

    ▶ [ SQL> alter table b_prtest add (tel varchar2(15) not null);
    1행에 오류:
    ORA-01758: 테이블은 필수 열을 추가하기 위해 (NOT NULL) 비어 있어야 합니다. ]
    ※ 수정할 테이블에 이미 NULL값이 있다면 NOT NULL 조건을 추가할 수 없음
    Not Null 제약조건 생략 → Null 허용

    ▶▶[ SQL> alter table b_prtest add (tel varchar2(15)); ]
    Not null 조건을 넣으려면 이미 있는 데이터를 전부 삭제해야 하기 때문에 포기함

    ID NAME TEL
    1 홍길동  
    2 이순신  
    3 강감찬  

    Modify_필드 내용 변경

    § 형식

    [ SQL> alter table 수정table명 modify (수정할 필드명 자료형 제약조건); ]

    ※ 데이터가 이미 저장되어 있는 경우에는 자료형, 제약조건 수정 제한
    데이터 길이 확장만 가능, 기존의 정보가 훼손될 수 있기 때문에 축소는 불가
    varchar2(15) → varchar2(30) O, varchar2(30) → varchar2(15) X

    # 예제

    [ SQL> alter table b_prtest modify(name varchar2(30));
    SQL> desc b_prtest ]

    이름 널? 유형
    ID   NUMBER(5)
    NAME   VARCHAR2(30)
    15 → 30
    TEL   VARCHAR2(15)

    Drop_필드 삭제

    § 형식

    [ SQL> alter table 수정table명 drop column 삭제할 필드명 ; ]

    # 예제

    b_prtest 테이블에서 tel 필드 삭제
    [ SQL> alter table b_prtest drop column tel; ]

    이름 널? 유형
    ID   NUMBER(5)
    NAME   VARCHAR2(30)

    Rename_필드 이름 변경

    § 형식

    [ SQL> alter table 수정table명 rename column 수정전 필드명 to 수정후 필드명; ]

    # 예제

    b_prtest 테이블의 name필드의 이름을 irum으로 변경
    [ SQL> alter table b_prtest rename column name to irum;
    SQL> desc b_prtest ]
    ※ Oracle 버전에 따라서 데이터가 들어있으면 필드명이 변경되지 않기도 함

    이름 널? 유형
    ID   NUMBER(5)
    NAME   VARCHAR2(30)

    Alter문은 테이블내 필드를 수정할 때 많이 사용됩니다.

    댓글

Designed by Tistory.