오라클 테이블 ( ORACLE TABLE 삭제, 변경, 복사)
테이블 삭제
생성된 테이블 삭제
DROP TABLE [스키마.]테이블명 [CASCADE CONSTRAINTS]
입력
DROP TABLE EX01_4;
결과
TABLE EX01_4가 삭제되었습니다.
해당 테이블은 물론 모든 데이터가 삭제되었다.
CASCADE CONSTRAINTS를 붙이면
삭제할 테이블의 기본키와 UNIQUE 키를 잠조하는 참조 무결성 제약조건도 자동으로 삭제된다.
테이블을 삭제하면 다시 복구할 수 없으므로 테이블을 삭제할 때는 항상 여러 번 확인하는 습관을 들이도록 하다.
테이블 변경
CREATE문으로 테이블을 생성한 후 불가피하게 수정해야 할 상황이 발생할 때가 많다.
기존에 생성했던 컬럼의 데이터 타입을 수정하거나 삭제, 새로운 컬럼을 넣어야 하는 경우가 발생할때
ALTER TABLE문을 사용해 테이블을 수정할 수 있다.
입력
CREATE TABLE EX02_1(
H01 VARCHAR2(10) NOT NULL,
H02 VARCHAR2(10) NULL,
CREATE_DATE DATE DEFAULT SYSDATE
);
결과
TABLE EX02_1이 생성되었습니다.
1 . 컬럼명 변경 : H01 컬럼 이름을 H001로 변경
ALTER TABLE [스키마.]테이블명 RENAME COLUMN 변경전컬럼명 TO 변경후컬럼명;
입력
ALTER TABLE EX02_1 RENAME COLUMN H01 TO H001;
결과
TABLE EX02_1이 변경되었습니다.
DESC 테이블명 명령어로 테이블에 있는 컬럼 내역을 확인해 보자.
입력
DESC EX02_1;
결과
이름 널 유형
----------- -------- ----------
H001 NOT NULL VRCHAR2(10)
H02 VRCHAR2(10)
CREATE_DATE DATE
H01 컬럼이 H001로 변경됐음을 확인할 수 있다.
2. 컬럼 타입 변경 : H02 컬럼을 VARCHAR2(10)에서 VARCHAR2(20)으로 변경
ALTER TABLE [스키마.]테이블명 MODIFY 컬럼명 데이터타입;
입력
ALTER TABLE EX02_1 MODIF H02 VARCHAR2(20);
결과
TABLE EX02_1이 변경되었습니다.
입력
DESC EX02_1;
결과
이름 널 유형
----------- -------- ----------
H001 NOT NULL VRCHAR2(10)
H02 VRCHAR2(20)
CREATE_DATE DATE
H02가 변경된걸 확인할 수 있다.
3. 컬럼 추가: H03 NUMBER 타입으로 신규 생성
ALTER TABLE [스키마.]테이블명 ADD 컬럼명 데이터타입;
입력
ALTER TABLE EX02_1 ADD H03 NUMBER;
결과
TABLE EX02_1이 변경되었습니다.
입력
DESC EX02_1;
결과
이름 널 유형
----------- -------- ----------
H001 NOT NULL VRCHAR2(10)
H02 VRCHAR2(20)
CREATE_DATE DATE
H03 NUMBER
4. 컬럼삭제: H03 컬럼을 삭제
ALTER TABLE [스키마.]테이블명 DROP COLUMN 컬럼명;
입력
ALTER TABLE EX02_1 DROP COLUMN H03;
결과
TABLE EX02_1이 변경되었습니다.
입력
DESC EX02_1;
결과
이름 널 유형
----------- -------- ----------
H001 NOT NULL VRCHAR2(10)
H02 VRCHAR2(20)
CREATE_DATE DATE
5. 제역조건 추가: H001에 기본키 추가
ALTER TABLE [스키마.]테이블명 ADD CONSTRAINTS 제약조건명 PRIMARY KEY (컬럼명, ...);
입력
ALTER TABLE EX02_1 ADD CONSTRAINTS PX_EX02_1 PRIMARY KEY (H001);
결과
TABLE EX02_1이 변경되었습니다.
입력
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, SEACH_CONDOTION
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = 'EX02_1';
결과
SELECT CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME SEACH_CONDOTION
-----------------------------------------------------------------------
SYS_C0011184C EX02_1 "H001" IS NOT NULL
PK_EX02_1 P EX02_1
6. 제약조건 삭제: H001에서 기본키 삭제
ALTER TABLE [스키마.]테이블명 DROP CONSTRAINTS 제약조건명;
입력
ALTER TABLE EX02_1 DROP CONSTRAINTS PK_EX02_1;
결과
TABLE EX02_1이 변경되었습니다.
입력
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, SEACH_CONDOTION
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = 'EX02_1';
결과
CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME SEACH_CONDOTION
SYS_C0011184C EX02_1 "H001" IS NOT NULL
테이블 복사
기존 테이블의 구조를 자주 변경한다면 미리 복사해 만들어 테스트해보거나,
테이블 데이터 자체를 백업용으로 만들어 놓을 수도 있다.
CREATE TABLE [스키마.]테이블명 AS
SELECT 컬럼1, 컬럼2, ...
FROM 복사할 테이블명;
정식명칭은 아니지만 CTAS ('씨타스')라고도 한다. [CREATE TABLE ...AS]
입력
CREACT TABLE EX02_1_1 AS
SELECT *
FROM EX02_1;
결과
TABLE EX02_1_1이 생성되었습니다.
'DataBase > Oracle' 카테고리의 다른 글
[Oracle] 오라클 인덱스(Index) 란? (47) | 2023.09.21 |
---|---|
[Oracle] 오라클 뷰(View) 란? (59) | 2023.09.21 |
[Oracle] 오라클 제약조건 : 외래키 (1) | 2023.09.21 |
[Oracle] 오라클 제약조건 : CHECK (1) | 2023.09.20 |
[Oracle] 오라클 제약조건 : 기본키 (0) | 2023.09.20 |