Data Base_Oracle/SQL

SQL DDL_Alter

pathas 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문은 테이블내 필드를 수정할 때 많이 사용됩니다.