728x90
ALTER
객체 구조를 수정하는 구문
ALTER TABLE 테이블명 수정할내용;
1) 컬럼 추가/ 수정/ 삭제
1-1) 컬럼 추가(ADD)
ALTER TABLE 테이블명 ADD 추가할컬럼명 데이터타입 /*DEFAULT 기본값*/ (생략가능)
=> 생략시 NULL 값으로 채워짐
--CNAME 컬럼 추가
ALTER TABLE DEPT_COPY ADD CNAME VARCHAR2(20);
-- Table DEPT_COPY이(가) 변경되었습니다.
-- CNAME 컬럼이 만들어지고 기본적으로 NULL값으로 채워짐
-- LNAME 컬럼추가 DEFAULT 지정
ALTER TABLE DEPT_COPY ADD LNAME VARCHAR2(20) DEFAULT '한국';
-- LNAME 컬럼이 만들어지고 NULL 이 아닌 DEFAULT 값으로 채워짐
1-2) 컬럼 수정(MODIFY)
테이터 타입 수정
-- 데이터타입 수정
ALTER TABLE 테이블명 MODIFY 수정할컬럼명 바꾸고자하는데이터타입
-- DEFAULT 값 수정
ALTER TABLE 테이블명 MODIFY 수정할컬럼명 DEFAULT 바꾸고자하는기본값
--**현재 변경하고자하는 컬럼에 이미 담겨있는 값과 완전히 타른 타입으로 변경 불가능
-- 문자 => 숫자 (X)
-- 문자열의 사이즈 축소 (X)
-- 문자열의 사이즈 확대 (O)
--DELT_TITLE 컬럼의 데이터아입을 VARCHAR2(40)으로
--LOCATION_ID 컬럼의 데이터타입을 VARCHAR2(3)으로
--LNAME 컬럼의 기본값을 '미국'으로 변경
ALTER TABLE DEPT_COPY
MODIFY DEPT_TITLE VARCHAR2(40)
MODIFY LOCATION_ID VARCHAR2(3)
MODIFY LNAME DEFAULT '미국';
728x90
1-3) 컬럼 삭제(DROP COLUMN)
DROP COLUMN 삭제하고자하는컬럼명
--** 삭제시 테이블에 최소 한 개의 컬럼은 존재해야 한다
--DEPT_COPY2 테이블에서 DEPT_ID 컬럼 지우기
ALTER TABLE DEPT_COPY2 DROP COLUMN DEPT_ID;
ROLLBACK;
-- DDL 구문은 복구 불가능
-- DEPT_COPY2 에서 모든 컬럼을 삭제하기
ALTER TABLE DEPT_COPY2 DROP COLUMN DEPT_TITLE;
ALTER TABLE DEPT_COPY2 DROP COLUMN LOCATION_ID;
ALTER TABLE DEPT_COPY2 DROP COLUMN CNAME;
ALTER TABLE DEPT_COPY2 DROP COLUMN LNAME;
-- 오류보고 ORA-12983: cannot drop all columns in a table
테이블에 최소 한 개의 컬럼은 존재해야 한다.
728x90
'Programming > SQL' 카테고리의 다른 글
[Oracle] DML(3) - DELETE ( vs TRUNCATE 비교) (0) | 2024.03.08 |
---|---|
[Oracle] DML(2) - UPDATE / UPDATE에 서브쿼리 쓰기 (0) | 2024.03.08 |
[Oracle] DML(1) - INSERT / INSERT INTO SELECT / INSERT ALL (0) | 2024.03.08 |
[Oracle] SUBQUERY를 이용한 테이블 생성 / 테이블 생성 후 제약조건 추가하기 (ALTER TABLE) (2) | 2024.03.08 |
[Oracle] 제약조건(CONSTRAINT) - FOREIGN KEY(외래키) / ON DELETE SET NULL / ON DELETE CASCADE /ON DELETE RESTRICTED (1) | 2024.02.23 |