오라클에서 열의 데이터 유형 변경
다음 표를 만들었습니다.
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))
테이블에 데이터가 있는 경우 다음 작업을 수행할 수 있습니다.
- 테이블에 새 유형의 열을 추가합니다.
- 이전 열에서 새 열로 데이터를 복사합니다.
- 오래된 열을 삭제합니다.
- 새 열 이름을 이전 열로 변경합니다.
열 이름을 변경하려면 아래를 사용합니다.
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
'programing' 카테고리의 다른 글
XLS(Excel) 파일에서 데이터를 읽는 방법 [Java, Android] (0) | 2023.06.11 |
---|---|
Firestore 컬렉션에서 문서 ID를 가져오는 중 (0) | 2023.06.11 |
Twiny를 사용할 때 Python Matplotlib 그림 제목이 축 레이블과 겹칩니다. (0) | 2023.06.11 |
UI 탭 표시줄 항목 이미지를 아래로 이동하시겠습니까? (0) | 2023.06.11 |
백분율 계산 (0) | 2023.06.11 |