oracle 테이블 생성, 삭제, 변경, 복사
DB & SQL 2016. 2. 3. 17:38테이블 생성
CREATE TABLE 테이블명 ( 컬럼명 데이터 타입 제약조건, 컬럼명 데이터 타입 제약조건 . . . );
테이블 삭제
테이블은 물론 테이블 내의 모든 데이터 삭제
"CASCADE CONSTRAINTS"를 붙이면 테이블에 정의되어있는 모든 제약조건도 자동으로 삭제
-- 테이블과 테이터 삭제 DROP TABLE 테이블명; -- 제약조건까지 삭제 DROP TABLE 테이블명 CASCADE CONSTRAINTS; -- 삭제한 테이블을 휴지통에 넣지 않고 삭제 DROP TABLE 테이블명 PURGE; -- 테이블, 데이터, 제약조건 바로 삭제 DROP TABLE 테이블명 CASCADE CONSTRAINTS PURGE;
테이블 변경
테이블 이름 변경
ALTER TABLE 변경전_테이블명 RENAME TO 변경후_테이블명;
컬럼 이름 변경
ALTER TABLE 테이블명 RENAME COLUMN 변경전_컬럼명 TO 변경후_컬럼명;
컬럼 데이터 타입 변경
ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입;
컬럼 추가
컬럼은 맨뒤에 추가된다. 컬럼 사이에 추가하고 싶으면 컬럼을 추가한 후 테이블 복사를 이용한다.
ALTER TABLE 테이블명 ADD 컬럼명 데이터타입;
컬럼 삭제
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
제약조건 추가
-- 컬럼 1개를 대상으로 하더라도 괄호로 감싸야한다 ALTER TABLE 테이블명 ADD CONSTRAINTS 제약조건명 제약조건 (컬럼1, 컬럼2, ...);
제약조건 삭제
-- 제약조건 이름을 검색 -- 오라클의 경우 USER_CONSTRAINTS에 제약조건 정보를 저장하며 -- 조회 조건의 테이블명은 반드시 대문자를 사용해야한다 SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME = '테이블명'; -- 제약조건 삭제 ALTER TABLE 테이블명 DROP CONSTRAINTS 제약조건명;
테이블 복사
테이블 구조 변경전 테스트하기 위해 복사하거나 백업이 필요한 경우
-- 테이블 구조와 데이터 모두 복사 CREATE TABLE 생성할_테이블명 AS SELECT 컬럼1, 컬럼2, ... FROM 복사할_테이블명;
테이블 구조를 변경할때는 테이블을 복사하고 기존 테이블을 삭제한 뒤 복사한 테이블의 이름을 기존 테이블 이름으로 변경한다.
-- 테이블 구조와 데이터 모두 복사 CREATE TABLE new_table AS SELECT 컬럼3, 컬럼1, 컬럼4, ... FROM test_table; -- 기존 테이블 삭제 DROP TABLE test_table CASCADE CONSTRAINTS; -- 복사한 테이블의 이름을 변경 ALTER TABLE new_table RENAME TO test_table;
테이블 생성 예
DROP TABLE table_name CASCADE CONSTRAINTS PURGE; CREATE TABLE table_name ( column1 VARCHAR2(64) , column2 NUMBER(10,0) DEFAULT 0 , column3 DATE DEFAULT SYSDATE , column4 TIMESTAMP(6) DEFAULT SYSTIMESTAMP ) TABLESPACE tablespace_name; ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(column1, column2) USING INDEX TABLESPACE tablespace_name; CREATE INDEX index_name ON table_name(column3, column4) TABLESPACE tablespace_name; COMMENT ON COLUMN table_name.column1 IS 'comment of column1'; COMMENT ON COLUMN table_name.column2 IS 'comment of column2'; COMMENT ON COLUMN table_name.column3 IS 'comment of column3'; COMMENT ON COLUMN table_name.column4 IS 'comment of column4'; COMMENT ON TABLE table_name IS 'comment of table_name';
'DB & SQL' 카테고리의 다른 글
oracle 인덱스 (0) | 2016.02.17 |
---|---|
oracle 뷰 생성, 수정, 삭제 (0) | 2016.02.17 |
oracle 데이터베이스 제약조건 (0) | 2016.02.03 |
oracle 데이터베이스 데이터 타입 (0) | 2016.02.03 |
oracle 데이터베이스 객체 (0) | 2016.02.03 |