1. 컬럼 추가 

 alter table 테이블 add(필드 number(10));

2. 컬럼명 변경 
alter table 테이블 rename column   현재이름  to 변경이름;


3.데이터 타입 변경 
alter table 테이블 modify(필드명 varchar(10));


4.컬럼삭제

alter table 테이블 drop(필드);


쿼리보기하여 릴레이션 이름을 찾은후  constrain_name에서 찾아본다. 

select CONSTRAINT_NAME, TABLE_NAME, R_CONSTRAINT_NAME

from user_constraints
where CONSTRAINT_NAME = 'R_101' /* 에러 코드에 나와있는 릴레이션  이름 */
-- DB 테이블 스키마 가져오기.
SELECT  B.COLUMN_NAME  AS 컬럼명
        , B.DATA_TYPE AS 테이터타입,
        B.DATA_LENGTH     AS 길이,
        B.NULLABLE AS NULL구분,
        B.COLUMN_ID AS 컬럼순서,
        A.COMMENTS AS 설명
FROM    USER_COL_COMMENTS A, USER_TAB_COLUMNS B
WHERE  B.TABLE_NAME = A.TABLE_NAME
    AND B.COLUMN_NAME = A.COLUMN_NAME
    AND B.TABLE_NAME LIKE '테이블명'
ORDER BY B.COLUMN_ID;
 

테스트용 테이블 만들때 유용하게 쓸수 있죠..

CREATE TABLE TEST_MEMBER AS SELECT * FROM MEMBER

 

검색을 걸어서 필요한 데이타만 복사할수도 있죠.

CREATE TABLE TEST_MEMBER AS SELECT * FROM MEMBER WHERE IDX<10000

 

테이블 구조만 복사하고 싶다면..

CREATE TABLE TEST_MEMBER AS SELECT * FROM MEMBER WHERE 1=2

검색조건을 이렇게 한다면 테이타는 복사가 안되겠죠..

 

테이블이 이미 만들어진 경우는

INSERT INTO TEST_MEMBER SELECT * FROM MEMBER


주의할점은 테이블구조만 복사된다는 것이다.

프라이머리키나 인덱스등은 복사가 안돼니 따로 설정해 주어야 한다.


-- 추가


테이블을 다른 테이블스페이스로 지정하고 미리 생성해 둡니다.
CREATE TABLE COPY_TB
(A NUMBER,
 B VARCHAR2(10))
TABLESPACE COPY_TBS

그리고 기존 테이블의 내용을 새로 생성한 테이블에 쑤셔 넣습니다.
INSERT INTO COPY_TB SELECT * FROM ORI

이게 이상해 보이지만... exp/imp로 하는 방법도 있습니다.
요기에 대해서는.. 패스 ㅡㅡ;

9i 이상에서는 단 한줄로 테이블이 속한 테이블스페이스를 옮길 수 있습니다.
요렇게

ALTER TABLE copy_tb MOVE TABLESPACE users;

인덱스도 옮길 수 있다. 테스트용 scott꺼를 옮겨 보기로 하자.

alter index PK_EMP rebuild tablespace users

--BEAN CLASS 만들기

select

    'private String ' || lower(SUBSTR(a.COLUMN_NAME, 1,1))||SUBSTR(replace(INITCAP(lower(a.COLUMN_NAME)), '_',''), 2) || ' = "";'

    || '    //' || NVL(b.COMMENTS, '')

    as 빈소스

FROM USER_TAB_COLS a

   , USER_COL_COMMENTS b

WHERE a.TABLE_NAME = b.TABLE_NAME

and a.COLUMN_NAME = b.COLUMN_NAME

AND a.TABLE_NAME=upper('ez_user');

 

 

 

--SELECT 만들기

select  decode(rownum, 1, 'SELECT ' ||  CHR(13))

     || '' || upper(COLUMN_NAME)     

     || ' as ' ||lower(SUBSTR(COLUMN_NAME, 1,1))||SUBSTR(replace(INITCAP(lower(COLUMN_NAME)), '_',''), 2)    

     || decode(rownum, (COUNT(*) OVER()), CHR(13)

            || ' FROM '|| TABLE_NAME ||'  ' ||'  ;', ',   ')

    as 조회쿼리

FrOm USER_TAB_COLS --ALL_TAB_COLS, USER_TAB_COLS

where  TABLE_NAME=upper('CORP_OPER_DAY');-- and OWNER='MYEZWEL';

 

 

 

--INSERT 쿼리 만들기

select

    TABLE_NAME,

    '          '||decode(rownum, 1,'',',')||COLUMN_NAME as 컬럼,

    '          '||decode(rownum, 1,'',',')||'#'||lower(SUBSTR(COLUMN_NAME, 1,1))||SUBSTR(replace(INITCAP(lower(COLUMN_NAME)), '_',''), 2) || '#' as 세팅부

FrOm USER_TAB_COLS

where  TABLE_NAME=upper('EZ_EC_ACTING');

 

 

 

--UPDATE 쿼리 만들기

select

    TABLE_NAME||' Z',

    '          '||'<isNotEmpty prepend="," property="'||lower(SUBSTR(COLUMN_NAME, 1,1))||SUBSTR(replace(INITCAP(lower(COLUMN_NAME)), '_',''), 2)||'">'||

    'Z.'||COLUMN_NAME || '='||

    '#'||lower(SUBSTR(COLUMN_NAME, 1,1))||SUBSTR(replace(INITCAP(lower(COLUMN_NAME)), '_',''), 2) || '#' ||

    '</isNotEmpty>'

     as 수정세팅부

FrOm USER_TAB_COLS

where  TABLE_NAME=upper('EZ_EC_ACTING');