logo

[SQLite] 테이블 수정

SQLite의 ALTER TABLE 명령어는 이미 생성된 테이블의 구조를 수정할 때 사용됩니다. 이 명령어를 사용하여 테이블 이름을 변경하거나, 새로운 열을 추가하고, 열 이름을 변경할 수 있습니다. 그러나 SQLite에서는 모든 ALTER TABLE 작업을 지원하는 것은 아닙니다. 아래에서 ALTER TABLE의 사용 방법과 예시, 그리고 SQLite에서 지원하지 않는 기능에 대해 설명하겠습니다.

 

RENAME TO

RENAME TO는 테이블의 이름을 변경합니다.

ALTER TABLE oldTableName RENAME TO newTableName;

이 명령은 oldTableName이라는 이름의 테이블을 newTableName으로 변경합니다.

 

RENAME COLUMN

RENAME COLUMN은 SQLite 3.25.0 버전부터 사용 가능하며, 테이블 내의 열 이름을 변경합니다.

ALTER TABLE tableName RENAME COLUMN oldColumnName TO newColumnName;

이 명령은 tableName 테이블 내의 oldColumnName이라는 열의 이름을 newColumnName으로 변경합니다.

 

ADD COLUMN

ADD COLUMN은 기존 테이블에 새로운 열을 추가합니다.

ALTER TABLE tableName ADD COLUMN newColumnName TEXT;

이 명령은 tableName 테이블에 newColumnName이라는 새로운 TEXT 타입의 열을 추가합니다.

 

지원하지 않는 기능

SQLite는 직접적으로 열을 삭제하는 DROP COLUMN, 열의 데이터 타입을 변경하는 ALTER COLUMN 타입 변경, 또는 기존 열의 제약 조건을 수정하는 작업을 지원하지 않습니다.

이런 작업을 수행하려면 새 테이블에 기존 테이블의 데이터를 복사한 후, 기존 테이블을 삭제하고 새 테이블의 이름을 기존 테이블의 이름으로 변경하는 방식으로 진행해야 합니다. 예를 들어 다음과 같은 테이블이 있습니다.

CREATE TABLE Employees (
    EmployeeID INTEGER PRIMARY KEY,
    Name TEXT NOT NULL,
    Department TEXT,
    EmailAddress TEXT
);

이 테이블에서 EmailAddress 열을 삭제하는 경우를 예로 들어보겠습니다. 먼저, 기존 테이블을 새로운 테이블로 복사합니다.

CREATE TABLE tempEmployees AS
SELECT EmployeeID, Name, Department FROM Employees;

기존 테이블을 삭제합니다.

DROP TABLE Employees;

새 테이블의 이름을 원래 테이블의 이름으로 변경합니다.

ALTER TABLE tempEmployees RENAME TO Employees;

이 과정을 통해 Employees 테이블에서 EmailAddress 열이 제거된 새로운 Employees 테이블을 얻을 수 있습니다. 이 방식은 원하는 열만 제외하고 모든 데이터를 새 테이블로 옮긴 후, 기존 테이블을 삭제하고 새 테이블의 이름을 기존 테이블의 이름으로 변경하는 방식으로 진행됩니다.

이 방법은 기존 테이블의 인덱스, 트리거, 뷰 등과 같은 관련 객체를 복사하지 않습니다. 따라서 필요한 경우 이러한 객체들을 수동으로 재생성해야 합니다.

또한, 대량의 데이터를 다루는 경우 이 방법은 성능상의 이슈를 야기할 수 있으므로, 작업을 수행하기 전에 데이터베이스의 백업을 수행하는 것이 좋습니다.

가능한 데이터의 무결성을 확인하기 위해 작업 전후로 데이터를 검증하는 과정을 포함하는 것이 좋습니다.

Previous
테이블 삭제
Next
SELECT