728x90
★ DDL > Object
- 객체 생성 : create
- 객체 삭제 : drop
- 객체 수정 : alter
★ 테이블 수정하기
- 테이블 정의 수정 > 컬럼 수정 > 컬럼명 or 자료형(길이) or 제약사항
- 테이블 수정해야 하는 상황 발생!!
- 1. 테이블 삭제(drop) > 테이블 DDL(Create) 수정 > 수정된 DDL로 새롭게 테이블 생성
a. 기존 테이블 데이터가 없었을 경우 > 아무 문제 없음
b. 기존 테이블 데이터가 있었을 경우 > 미리 데이터 백업 > 테이블 삭제 > 수정 후 생성 > 데이터 복구
- 공부할 때 자주 사용
- 개발 중에 사용
- 서비스 운영 중 > 불가능 !! - 2. alter 명령어 사용 > 기존 테이블 구조(컬럼 정의) 변경
a. 기존 테이블 데이터가 없었을 경우 > 아무 문제 없음
b. 기존 테이블 데이터가 있었을 경우 > 경우에 따라 다름
- 공부할 때 사용
- 개발 중에 사용
- 서비스 운영 중 > 이 방식을 사용 > 운영 중에도 이 방식을 사용 금지 - 사용 양식
- 1. 테이블 삭제(drop) > 테이블 DDL(Create) 수정 > 수정된 DDL로 새롭게 테이블 생성
alter table [테이블명] [선택기능] [선택컬럼]
■ 사용 ex)
- ex1) 삭제 후, 다시 생성
drop table tblEdit;
create table tblEdit (
seq number primary key,
data varchar2(20) not null
);
insert into tblEdit values (1, '마우스');
insert into tblEdit values (2, '키보드');
insert into tblEdit values (3, '모니터');
- ex2) 새로운 컬럼을 추가
- 테이블에 데이터가 삽입되어 있는 상태라면 > not null로 제약사항을 설정하면 에러발생!!
-- ORA-01758: table must be empty to add mandatory (NOT NULL) column
-- 테이블이 비어있는 상태가 아니라서 not null 에러 발생
alter table tblEdit
add (price number not null);
-- 해결 방법 1 : null로 추가한다.
alter table tblEdit
add (price number null);
-- 해결 방법 2 : default 값을 추가한다.
alter table tblEdit
add (price number default 0 not null);
-- 해결 방법 3 : 데이터를 모두 제거 후, 삽입
delete from tblEdit;
alter table tblEdit
add (memo varchar2(100) not null);
insert into tblEdit values (1, '마우스', 10000, '로지텍');
insert into tblEdit values (2, '키보드', 20000, 'MS');
insert into tblEdit values (3, '모니터', 30000, 'Dell');
- ex3) 컬럼 삭제하기
alter table tblEdit
drop column memo;
alter table tblEdit
drop column seq; -- PK 컬럼 삭제 > 절대 금지!!!
- ex4) 컬럼 수정하기
-- 3.1 컬럼의 길이 수정하기(확장/축소)
alter table tblEdit
modify (data varchar2(100)); -- not null 은 그대로 유지
desc tblEdit;
-- 3.2 컬럼의 제약 사항 수정하기
alter table tblEdit
modify (data varchar2(100) null);
-- 3.3 컬럼의 자료형 바꾸기
-- 마찬가지로, 안에 데이터들이 비어있는 상태여야 가능하다.
alter table tblEdit
modify (data number);
alter table tblEdit
modify (seq varchar2(30));
728x90
'데이터베이스' 카테고리의 다른 글
DATABASE STEP 26 - Rank (0) | 2023.03.23 |
---|---|
DATABASE STEP 25 - PSEUDO (0) | 2023.03.22 |
DATABASE STEP 23 - UNION (0) | 2023.03.22 |
DATABASE STEP 22 - VIEW (0) | 2023.03.22 |
DATABASE STEP 21 - JOIN (2) | 2023.03.21 |