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