programing

오라클에서 열의 데이터 유형 변경

bestprogram 2023. 6. 11. 11:07

오라클에서 열의 데이터 유형 변경

다음 표를 만들었습니다.

CREATE TABLE PLACE(
  POSTCODE VARCHAR(10) PRIMARY KEY,
  STREET_NAME VARCHAR(10),
  COUNTY VARCHAR(10),
  CITY VARCHAR(10));  

변경하고 싶습니다.name,county그리고.city부터varchar(10)로.varchar(20).그걸 어떻게 하는 거죠?

ALTER TABLE place
  MODIFY( street_name VARCHAR2(20),
          county      VARCHAR2(20),
          city        VARCHAR2(20) )

데이터 유형도 다음에서 변경합니다.VARCHAR로.VARCHAR2좀 더 상투적으로 말하면요.의 동작을 통해 현재 둘 사이에는 기능적인 차이가 없습니다.VARCHAR앞으로 SQL 표준에 맞게 변경될 수 있습니다.

아래의 열 유형만 변경하려면 다음을 사용합니다.

ALTER TABLE <table_name> MODIFY (<column_name> <new_Type>)
in your case:    
ALTER TABLE place MODIFY (street_name VARCHAR2(20),
                          county      VARCHAR2(20),
                          city        VARCHAR2(20))

테이블에 데이터가 있는 경우 다음 작업을 수행할 수 있습니다.

  1. 테이블에 새 유형의 열을 추가합니다.
  2. 이전 열에서 새 열로 데이터를 복사합니다.
  3. 오래된 열을 삭제합니다.
  4. 새 열 이름을 이전 열로 변경합니다.

열 이름을 변경하려면 아래를 사용합니다.

ALTER TABLE <table_name> rename column <column_name> to <new_column_name>

이와 같은 작업을 수행하기 위한 매우 일반적인 예가 여기 있습니다.

표:

CREATE TABLE TABLE_NAME(
  ID NUMBER PRIMARY KEY,
  COLUMN_NAME NUMBER NOT NULL,   -- Modify with varchar2(20) NOT NULL
  .
  .
  .  
);

COLUMN_NAME의 데이터 유형NUMBER에서 VARCHAR2로 수정하는 단계

단계:

--Step 1: Add a temp column COLUMN_NAME_TEMP in table TABLE_NAME to hold data temporary
ALTER TABLE TABLE_NAME
ADD( COLUMN_NAME_TEMP           varchar2(20) );

--Step 2: Update temp column COLUMN_NAME_TEMP with Old columns COLUMN_NAME data
UPDATE TABLE_NAME
SET COLUMN_NAME_TEMP   = COLUMN_NAME;

--Step 3: Remove NOT NULL constrain from old columns COLUMN_NAME
ALTER TABLE TABLE_NAME MODIFY (COLUMN_NAME NULL);

--Step 4: Update old columns COLUMN_NAME data with NULL
UPDATE TABLE_NAME SET COLUMN_NAME  = NULL;

--Step 5: Alter table old columns COLUMN_NAME to new data type varchar2(20)
ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME varchar2(20);

--Step 6: Update old columns COLUMN_NAME with data from temp columns COLUMN_NAME_TEMP
UPDATE TABLE_NAME
SET COLUMN_NAME  = COLUMN_NAME_TEMP;

--Step 7: Add NOT NULL constrain from old columns [COLUMN_NAME]
ALTER TABLE TABLE_NAME MODIFY (COLUMN_NAME NOT NULL);

--Step 8: Drop the temp column [COLUMN_NAME_TEMP]
alter table TABLE_NAME drop column COLUMN_NAME_TEMP;

NOT NULL 제약 조건이 존재하지 않는 경우 3단계 및 7단계 생략

Oracle 10G 이상

ALTER TABLE table_name
MODIFY column_name datatype;
Alter table placemodify(street name varchar2(20),city varchar2(20)

테이블에 레코드가 이미 있는 경우 테이블의 데이터 유형을 수정할 수 없습니다.

먼저 열의 테이블 레코드를 비운 다음(데이터 유형을 수정하려는 경우) 다음 명령을 사용해야 합니다.

alter table place
modify ( street_name varchar2(20), country varchar2(20), city varchar2(20) );

틀림없이 효과가 있을 것입니다!

언급URL : https://stackoverflow.com/questions/10321775/changing-the-data-type-of-a-column-in-oracle