DataBase/Oracle

[Oracle] 오라클 테이블 ( ORACLE TABLE 삭제, 변경, 복사 )

h0-0cat 2023. 9. 21. 10:36
728x90

오라클 테이블 ( 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이 생성되었습니다.

 

 

 

728x90