테이블 수정하기: ALTER TABLE
테이블 생성 후, 수정이 필요할 때 사용하는 명령어가 바로 ALTER TABLE이다. 기존의 테이블을 그대로 두고 필요한 부분만 수정할 수 있어, 데이터 손실 없이 변경할 수 있다. 아래 그림은 지난 시간에 생성했던 MEMBER 테이블인데 테이블을 보면 몇 가지 수정이 필요하다는 것을 알 수 있다.
ID 컬럼 수정
현재 ID 컬럼이 VARCHAR2로 설정되어 있는데, 다국어를 지원하기 위해 NVARCHAR2로 변경하는 것이 더 바람직할 것 같다.
AGE 컬럼 삭제
생년월일(BIRTHDAY) 정보가 이미 있기 때문에 나이(AGE)를 별도로 받는 것은 불필요하다.
EMAIL 컬럼 추가
이메일 주소를 입력받기 위해 추가한다.
컬럼 데이터 타입 수정(MODIFY)
그래서 아래 그림처럼 수정할 것이다. 먼저 ID 컬럼의 자료형을 수정해보자. 컬럼의 자료형을 변경할 때는 "ALTER TABLE" 명령어와 "MODIFY" 옵션을 사용한다. 즉 "ALTER TABLE MEMBER MODIFY ID NVARCHAR2(50);"를 실행하면 ID 컬럼이 NVARCHAR2 타입으로 수정된다.
직접 쿼리를 실행해보면 ID컬럼의 데이터 타입이 "VARCHAR2"에서 "NVARCHAR2"로 잘 변경된것을 확인할 수 있다.
ALTER TABLE 사용 시 주의사항
ALTER TABLE을 사용하여 테이블의 컬럼을 수정할 때 몇 가지 주의해야 할 사항이 있다. 컬럼의 데이터 타입을 변경하거나 크기를 조정할 때, 기존 데이터와의 호환성을 항상 고려해야 한다.
데이터 타입 변경 시 호환성 확인
예를 들어, 컬럼의 데이터 타입을 VARCHAR2에서 NUMBER로 변경하려고 할 때, 기존 데이터가 숫자로 변환 가능한 값들로만 구성되어 있어야 한다. 그렇지 않으면 변환 시 오류가 발생하게 된다.
데이터 크기 축소 시 데이터 손실 위험
예를 들어, VARCHAR2(50)을 VARCHAR2(10)으로 크기를 줄이려 할 때, 기존 데이터 중 길이가 10자를 초과하는 값이 있다면, 변환이 불가능하고 오류가 발생한다.
따라서 변경 전 " SELECT * FROM MEMBER WHERE LENGTH(ID) > 10;"처럼 쿼리를 먼저 실행해 데이터 변환이 가능한지 확인 후 변경하는것이 바람직하다.
컬럼 삭제(DROP COLUMN)
ALTER TABLE을 사용하여 컬럼을 삭제할 떄는 추가 옵션으로 DROP COLUMN을 사용한다. "ALTER TABLE MEMBER DROP COLUMN AGE;"를 실행해보면 AGE 컬럼이 삭제된 것을 확인할 수 있다.
컬럼 추가(ADD)
ALTER TABLE을 사용하여 컬럼을 추가할 떄는 추가 옵션으로 ADD를 사용한다. "ALTER TABLE MEMBER ADD EMAIL VARCHAR2(200);"를 실행해보면 EMAIL컬럼이 추가된 것을 확인할 수 있다.
GUI 툴 활용
사실 ALTER와 같은 DDL 쿼리는 사용 빈도가 낮아 많이 사용하지 않는다. 그리고 DBMS마다 추가 옵션에 대한 내용이 조금씩 달라서 헷갈리거나 기억이 안 날 수가 있다. 그래서 많은 현업 개발자들은 GUI 툴을 자주 사용한다. 아래 좌측 그림에서 빨간박스를 클릭해보면 오른쪽 그림과 같이 편집 도구를 통해 테이블 수정이 간편하게 가능하다.
참고자료
[1] 유튜브 채널 뉴렉처 - 테이블 수정하기(ALTER TABLE)
'💾 Database > Oracle' 카테고리의 다른 글
[오라클] 9.DML(Update, Delete) (2) | 2024.09.09 |
---|---|
[오라클] 8.DML(Select, Insert) (0) | 2024.09.09 |
[오라클] 6.SQL 데이터 타입(숫자형) (0) | 2024.08.31 |
[오라클] 5.SQL 데이터 타입(문자열) (2) | 2024.08.30 |
[오라클] 4.사용자 계정, 데이터베이스, 테이블 생성 (0) | 2024.08.27 |