Oracle SQL 강좌
테이블의 관리 41 22 99,999+

by 김정식 ALTER TABLE DROP TABLE TRUNCATE ADD MODIFY MOVE TABLESPACE TRUNCATE [2002.01.20]


테이블 컬럼의 관리

테이블의 컬럼은 ADD, MODIFY, DROP연산자를 통해서 관리 할 수 있습니다.

ADD 연산자

테이블에 새로운 컬럼을 추가 할 때 사용 한다.

 
-- VARCHAR2의 데이터 형을 가지는 addr 컬럼을 emp 테이블에 추가
SQL> ALTER TABLE emp ADD (addr VARCHAR2(50));    
    

MODIFY 연산자

테이블의 컬럼을 수정 하거나 NOT NULL컬럼으로 변경 할 수 있으며, 컬럼이 이미 테이터를 가지고 있을 경우 다른 데이터형으로 변경이 불가능 하다.

 
-- ename 컬럼을 VARCHAR2 50자리로 수정한 예제.
SQL> ALTER TABLE emp MODIFY (ename VARCHAR2(50));
SQL> ALTER TABLE emp MODIFY (ename VARCHAR2(50) NOT NULL); 
    

DROP 연산자

테이블 컬럼을 삭제 하거나, 테이블의 제약 조건을 삭제 할 때 사용 한다.

 
-- 컬럼의 삭제 문법 
SQL> ALTER TABLE table_name DROP COLUMN column_name

-- 제약 조건의 삭제 예제
SQL> ALTER TABLE emp DROP PRIMARY KEY ;

-- CASCADE 연산자와 함께 사용하면 외래키에 의해 참조되는 기본키도 삭제 할 수 있다.
SQL> ALTER TABLE emp DROP CONSTRAINT emp_pk_empno CASCADE;
    

기존 테이블의 복사

- 기존 테이블을 부분, 또는 완전히 복사할 때에 서브쿼리를 가진 CREATE TABLE 명령어를 사용해서 쉽게 복사 할 수 있다.

- 하지만 제약 조건, 트리거, 그리고 테이블 권한은 새로운 테이블로 복사되지 않는다.

- 제약조건은 NOT NULL 제약 조건만 복사 된다.

기존 테이블의 복사

  
-- 한번 실습해 보세요.
SQL> CREATE TABLE emp2
     AS SELECT * FROM emp;
    

테이블의 테이블스페이스 변경

Oracle 8i부터는 ALTER TABLE ~ MOVE TABLESPACE 명령어로 쉽게 테이블의 테이블스페이스를 변경 할 수 있다.

테이블의 테이블스페이스 변경

  
-- 한번 실습해 보세요. (test라는 테이블스페이스가 있어야 겠죠)
SQL> ALTER TABLE emp
     MOVE TABLESPACE test;
    

테이블의 TRUNCATE

  • - 테이블을 Truncate하면 테이블의 모든 행이 삭제되고 사용된 공간이 해제 된다.
  • - TRUNCATE TABLE은 DDL명령이므로 롤백 데이터가 생성되지 않는다.
  • - DELETE명령으로 데이터를 지우면 롤백명렁어로 복구 할 수 있지만, TRUNCATE로 데이터를 삭제하면 롤백을 할 수가 없다.
  • - 행당 인덱스도 같이 잘려 나간다.
  • - 외래키가 참조중인 테이블은 TRUNCATE할 수 없다.
  • - TRUNCATE 명령을 사용하면 삭제 트리거가 실행되지 않는다.

테이블의 TRUNCATE

테이블의 삭제 (DROP TABLE)

테이블의 테이블스페이스 변경

  
-- emp 테이블 삭제
SQL> DROP TABLE emp;

-- CASCADE CONSTRAINT는 외래키에 의해 참조되는 기본키를 포함한 테이블일 경우 
-- 기본키를 참조하던  외래 키 조건도 같이 삭제 한다.
SQL> DROP TABLE emp CASCADE CONSTRAINT;
    

관련자료

- 강좌 URL : http://www.gurubee.net/lecture/1014

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by smile [2005.11.09 20:43:44]
퍼갑니다. ^^

by 옥스 [2005.12.29 22:31:04]
9i에서 not null 제약조건 복사 되는 데요??ㅎㅎ

by 看書癡 [2006.07.20 18:13:13]
※컬럼이 이미 테이터를 가지고 있을 경우 다른 데이터형으로 변경이 불가능
-> 그럼 동일한 데이터형이면, 컬럼 크기는 변경 가능? or 불가능?
-> 테스트 해보니 변경가능하긴 한데..

by 김정식 [2006.07.21 18:59:55]
rename old_table to new_table;

by Moon [2006.08.01 17:54:07]
동일 data일 경우는 가능합니다.
글구 컬럼의 길이 줄이는 것도 modify로 가능합니다, 글구 당연한 말이지만 입력된 data의 길이보다 작게는 불가능하구요

by 음. [2006.08.01 18:01:13]
불가능한듯.

by 악천이 [2007.02.26 11:09:54]
데이터는 원하는 부분만 삭제가능하던데요..테이블은 DROP으로 통째로 삭제하는 법 말고 원하는 컬럼명만 삭제하거나 수정하는 법은 없는건가요?

by 현 [2007.02.27 08:12:44]
위에 내용중에 컬럼명만 삭제하는 방법 나와있잖아요...
ALTER TABLE table_name DROP COLUMN column_name

by 하늘호수 [2007.06.12 11:37:46]
Alter Table시에 가능 옵션으로 그림상에선 intrans, maxtrans를 주셨는데 설명에는 MINEXTENTS, MAXEXTENTS를 설명했습니다.
이 옵션은 PARTITION TALBLE에 대한 PARTITION내용을 수정할 때 ALTER TABLE이 가능한걸로 알고 있습니다.

by 김정식 [2007.08.17 21:11:49]
drop table test purge : 영구적으로 삭제

by 명지영 [2007.09.06 11:06:27]
수업이 재미 없다

by 오명진 [2007.10.30 19:43:49]
전 재미있는데용.

by 그좌식 [2008.03.07 19:10:01]
난 어렵다 했다하면 에러나는데... ㅡ,.ㅡ

by beliet [2008.03.14 17:17:07]
저렁게 변경하고 확인은 어떻게 하죠??

by elitepro [2009.01.13 13:36:35]
Move Tablespace 명령어를 쓰려면....
아래의 권한을 먼저 부여 해야 합니다

GRANT UNLIMITED TABLESPACE TO USER-NAME;

by jjangna [2009.03.18 15:20:00]
아..........ㅡㅡ;;;

by 김x현 [2009.03.18 15:24:31]
잘 읽고 있어요 ㅎㅎ
교제대신 사용 하는데 어찌나 좋은지
ppt 준비할 시간에 발성 연습 하고 있어요 ^^
애들이 어찌나 호응이 좋은지 ...ㅋㅋ 숙면을 취하더라구요 ㅋㅋ

by 우쭈주 [2011.01.06 15:51:35]
항상 여러 가지 정보 얻어 갑니다 ㅎㅎ

by 김정식 [2011.07.06 10:59:46]
컬럼명 변경
ALTER TABLE 테이블 RENAME column OLD_COLUMN to NEW_COLUMN

by 돌이맹이 [2012.02.23 16:59:07]
쉽게 설명 잘 되어 있네요^^

by 비로로 [2013.03.04 13:46:27]

test라는 테이블 스페이스가 없다고 나와요 ..
test 라는 테이블 스페이스 생성방법좀 알려주세요.

by 키티마징가 [2014.05.27 23:47:20]

굿

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입