티스토리 뷰

새로운 컬럼, 제약조건 추가

- 컬럼은 마지막에 추가된다.

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
댓글
최근에 올라온 글
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함