컬럼 추가
-- 단일 컬럼 추가
ALTER TABLE employees ADD (email VARCHAR2(100));
-- 여러 컬럼 추가
ALTER TABLE employees ADD (
phone VARCHAR2(20),
hire_date DATE DEFAULT SYSDATE
);
컬럼 수정
-- 데이터 타입 변경
ALTER TABLE employees MODIFY (email VARCHAR2(150));
-- DEFAULT 값 변경
ALTER TABLE employees MODIFY (hire_date DEFAULT CURRENT_DATE);
-- NULL 허용 변경
ALTER TABLE employees MODIFY (phone NOT NULL);
컬럼 삭제
-- 단일 컬럼 삭제
ALTER TABLE employees DROP COLUMN email;
-- 여러 컬럼 삭제
ALTER TABLE employees DROP (phone, hire_date);
제약조건 관리
-- 기본키 추가
ALTER TABLE employees ADD CONSTRAINT emp_pk PRIMARY KEY (emp_id);
-- 외래키 추가
ALTER TABLE employees ADD CONSTRAINT dept_fk
FOREIGN KEY (dept_id) REFERENCES departments(dept_id);
-- 제약조건 삭제
ALTER TABLE employees DROP CONSTRAINT emp_pk;
-- 제약조건 비활성화
ALTER TABLE employees DISABLE CONSTRAINT dept_fk;
-- 제약조건 활성화
ALTER TABLE employees ENABLE CONSTRAINT dept_fk;
테이블 이름 변경
ALTER TABLE employees RENAME TO staff;
컬럼 이름 변경
ALTER TABLE employees RENAME COLUMN emp_id TO employee_id;
테이블스페이스 이동
ALTER TABLE employees MOVE TABLESPACE new_tablespace;
파티션 테이블 수정
-- 파티션 추가
ALTER TABLE sales ADD PARTITION p_2024
VALUES LESS THAN (TO_DATE('2025-01-01', 'YYYY-MM-DD'));
-- 파티션 삭제
ALTER TABLE sales DROP PARTITION p_2020;
LOB 컬럼 스토리지 변경
ALTER TABLE documents MODIFY LOB(resume) (
STORAGE (NEXT 10M)
CHUNK 16K
);
읽기 전용/쓰기 가능 설정
-- 읽기 전용으로 변경
ALTER TABLE employees READ ONLY;
-- 쓰기 가능으로 변경
ALTER TABLE employees READ WRITE;