티스토리 뷰
새로운 컬럼, 제약조건 추가
- 컬럼은 마지막에 추가된다.
ALTER TABLE 테이블명
ADD [ ];
새로 추가된 컬럼은 데이터가 null이기 때문에 테이블을 생성할 때부터 신중하게 만드는 게 좋다.
컬럼 수정, 제약조건 추가
- 데이터타입, 컬럼사이즈, default 값을 수정한다.
ALTER TABLE 테이블명
MODIFY [ ];
컬럼의 사이즈를 얼마든지 가능하나 줄이는 건 될 수도 있고 안될 수도 있다.
저장된 데이터가 설정하려는 사이즈보다 크면 불가능하다(컬럼의 데이터타입 변경도 동일)
컬럼, 제약조건 삭제
ALTER TABLE
DROP COLUMN [ ];
아래의 표현과 동일하다(괄호 유무 확인)
ALTER TABLE DEPT80
DROP COLUMN 컬럼명;
ALTER TABLE DEPT80
DROP (컬럼명);
테이블 생성 후 제약조건 추가
1. COLUMN LEVEL 문법 - MODIFY
ALTER TABLE 테이블명
MODIFY 컬럼명
CONSTRAINTS 제약조건명 제약조건유형;
NOT NULL은 COLUMN LEVEL 문법에서만 쓰이니 주의할 것!
PK 제약조건 부여하기
ALTER TABLE EMP2
MODIFY EMPLOYEE_ID
CONSTRAINT e2_eid_PK PRIMARY KEY;
2. TABLE LEVEL 문법 - ADD
ALTER TABLE 테이블명
ADD CONSTRAINT
제약조건명 제약조건유형(컬럼명);
UK 제약조건 부여하기
ALTER TABLE EMP2
ADD CONSTRAINT
e2_email_uk UNIQUE(EMAIL);
FK 제약조건 부여하기
-- 테이블레벨 문법
ALTER TABLE EMP2
ADD CONSTRAINT e2_did_fk
FOREIGN KEY(department_id)
REFERENCES departments(department_id);
-- 컬럼레벨 문법
ALTER TABLE EMP2
MODIFY department_id CONSTRAINT e2_did_fk
REFERENCES departments(department_id);
ALTER TABLE EMP2
MODIFY manager_id CONSTRAINT e2_mid_fk
REFERENCES EMPLOYEES(employee_id);
서브쿼리문으로 테이블을 카피하면 NN 제약조건만 들어오게 된다.
CONSTRAINT_NAME은 DBMS가 임의로 정한 이름이다.
제약조건 삭제
1. NN / FK / UK / CK / PK 제약조건 삭제 문법
ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명 [CASCADE];
2. PK 제약조건 삭제 문법
ALTER TABLE 테이블명
DROP PRIMARY KEY [CASCADE];
ERROR at line 1:
ORA-02273: this unique/primary key is referenced by some foreign keys
=> FK가 걸려있어 삭제가 되지 않는다는 오류, FK 삭제 후에야 삭제할 수 있다.
=> 하지만 CASCADE를 붙이면 FK라도 삭제가 된다!
컬럼명, 제약조건명 변경
ALTER TABLE 테이블명
RENAME COLUMN 기존 컬럼명 to 새 컬럼명;
ALTER TABLE 테이블명
RENAME CONSTRAINT 기존 제약조건명 to 새 제약조건명;
컬럼명 변경
ALTER TABLE emp2
RENAME COLUMN hire_date to start_date;
제약조건명 변경
ALTER TABLE copy_emp
RENAME CONSTRAINT sys_c007384 TO ce_lname_nn;
객체 이름 변경을 원할 때
Object 명(table, view, index, sequence 등) 변경 시
RENAME 기존 이름 to 새 이름
DROP / TRUNCATE / DELETE 비교
DROP | TRUNCATE | DELETE |
테이블 삭제 | 테이블의 모든 행 삭제 | 테이블의 특정 행 삭제 (where절 생략 시 모든 행 삭제) |
DDL | DDL | DML |
rollback X | rollback X | rollback O |
'배운 것 기록 > DB' 카테고리의 다른 글
[Oracle] Recyclebin / Flashback / Purge (0) | 2022.07.31 |
---|---|
[Oracle] Object - Table, View (0) | 2022.07.29 |
[Oracle] 제약조건 (0) | 2022.07.22 |
[Oracle] 데이터 타입, 테이블 생성 (0) | 2022.07.21 |
[Oracle] Data Dictionary (0) | 2022.07.21 |
댓글