1. 칼럼명 변경 RENAME


ALTER TABLE 테이블명 RENAME COLUMN 변경전칼럼명 TO 변경후칼럼명;


2. 칼럼 크기(타입) 변경 MODIFY
ALTER TABLE 테이블명 MODIFY 크기를변경할칼럼명 VARCHAR(9);

단, 데이터 타입을 바꾸고자 할 때는 해당 칼럼의 값을 모두 비우고 바꿔야한다.
/* ALTER 오류 예시 */
CREATE TABLE EX2_10 (
COL1 VARCHAR(10) NOT NULL,
COL2 VARCHAR(10) NULL,
CREATE_DATE DATE DEFAULT SYSDATE
);
INSERT INTO EX2_10 (COL1) VALUES(12);
SELECT * FROM EX2_10;
ALTER TABLE EX2_10 RENAME COLUMN COL1 TO COL11;
ALTER TABLE EX2_10 MODIFY COL11 VARCHAR(11);
-- ORA-01441: 일부 값이 너무 커서 열 길이를 줄일 수 없음
ALTER TABLE EX2_10 MODIFY COL11 VARCHAR(1);
-- 어떤 레코드 때문인지 확인
SELECT * FROM EX2_10 WHERE LENGTH(COL11) > 1;
-- ORA-01439: 데이터 유형을 변경할 열은 비어 있어야 합니다
ALTER TABLE EX2_10 MODIFY COL11 DATE; -- 형변환
3. 디폴트 값 지정, NOT NULL 지정
--디폴트 값 지정
ALTER TABLE 테이블명 MODIFY 변경할칼럼명 VARCHAR(9) DEFAULT '1';
--NOT NULL 지정
ALTER TABLE 테이블명 MODIFY 변경할칼럼명 VARCHAR(9) NOT NULL;
4. 칼럼 추가
ALTER TABLE EX2_10 ADD COL3 NUMBER;
ALTER TABLE EX2_10 ADD COL_TIME TIMESTAMP DEFAULT SYSTIMESTAMP;
DESC EX2_10;

5. 칼럼 삭제
ALTER TABLE EX2_10 DROP COLUMN COL3;

그렇다면...
DEFAULT 설정을 사후(?)에 할 수 있을까?
ALTER TABLE EX2_10 ADD COL4 VARCHAR(10);
INSERT INTO EX2_10 (COL11) VALUES(500); -- DEFAULT 설정 전 행 레코드 삽입
SELECT * FROM EX2_10;

ALTER TABLE EX2_10 MODIFY COL4 DEFAULT 1;
INSERT INTO EX2_10 (COL11) VALUES(501);
SELECT * FROM EX2_10;

된다.
그렇다면 NOT NULL은 사후에할 수 있을까?

이건 안된다. COL4에 NULL값이 존재하기 때문
그렇다면 COL4의 값에 NULL 값이 없다면?
-- 그럼 COL4를 다 NULL값이 아닌 값으로 바꿔도 안될까?
UPDATE EX2_10
SET COL4 = 100
WHERE COL4 IS NULL;
SELECT * FROM EX2_10;
ALTER TABLE EX2_10 MODIFY COL4 NOT NULL; -- 된다.
DESC EX2_10;

반응형
'SQL' 카테고리의 다른 글
| [SQL] PRIMARY KEY (0) | 2025.07.14 |
|---|---|
| [SQL] CONSTRAINTS (제약조건) (1) | 2025.07.14 |
| [SQL] 특정 개수의 값 출력 - ROWNUM, TOP, LIMIT (0) | 2025.07.14 |
| [ORACLE] 예약어 (0) | 2025.07.14 |
| [SQL Developer] 설치 및 사용 (2) | 2025.07.14 |