概要 :このチュートリアルでは、SQLiteでテーブルの列の名前を変更する方法を段階的に学習します。
SQLite ALTER TABLERENAMECOLUMNステートメントの概要
SQLiteは、バージョン3.25.0以降、ALTER TABLE
を使用して列の名前を変更するためのサポートを追加しました。 次の構文のステートメント:
ALTER TABLE table_name
RENAME COLUMN current_name TO new_name;
Code language: SQL (Structured Query Language) (sql)
この構文では:
- まず、
ALTER TABLE
の後にテーブルの名前を指定します キーワード。 - 次に、
RENAME COLUMN
の後に名前を変更する列の名前を指定します キーワードとTO
の後の新しい名前 キーワード。
SQLite ALTER TABLERENAMECOLUMNの例
ALTER TABLE RENAME COLUMN
の使用例を見てみましょう。 ステートメント。
まず、Locations
という新しいテーブルを作成します :
CREATE TABLE Locations(
LocationId INTEGER PRIMARY KEY,
Address TEXT NOT NULL,
City TEXT NOT NULL,
State TEXT NOT NULL,
Country TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
次に、Locations
に新しい行を挿入します INSERT
を使用したテーブル ステートメント:
INSERT INTO Locations(Address,City,State,Country)
VALUES('3960 North 1st Street','San Jose','CA','USA');
Code language: SQL (Structured Query Language) (sql)
3番目に、列の名前をAddress
に変更します Street
へ ALTER TABLE RENAME COLUMN
を使用する ステートメント:
ALTER TABLE Locations
RENAME COLUMN Address TO Street;
Code language: SQL (Structured Query Language) (sql)
第4に、Locations
からデータをクエリします テーブル:
SELECT * FROM Locations;
Code language: SQL (Structured Query Language) (sql)
出力:
LocationId Street City State Country
---------- --------------------- ---------- ---------- ----------
1 3960 North 1st Street San Jose CA USA
Code language: Shell Session (shell)
最後に、Locations
のスキーマを表示します テーブル:
.schema Locations
Code language: Shell Session (shell)
出力:
CREATE TABLE Locations(
LocationId INTEGER PRIMARY KEY,
Street TEXT NOT NULL,
City TEXT NOT NULL,
State TEXT NOT NULL,
Country TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
列の名前を変更する古い方法
SQLiteはALTER TABLE RENAME COLUMN
をサポートしていませんでした バージョン3.25.0より前の構文。
3.25.0より前のバージョンでSQLiteを使用していて、アップグレードできなかった場合は、次の手順に従って列の名前を変更する必要があります。
- まず、トランザクションを開始します。
- 次に、名前を変更する列を除いて、元のテーブルと同じ構造の新しいテーブルを作成します。
- 3番目に、元のテーブルから新しいテーブルにデータをコピーします。
- 4番目に、元のテーブルを削除します。
- 5番目に、新しいテーブルの名前を元のテーブルに変更します。
- 最後に、トランザクションをコミットします。
列の名前の変更例
次のステートメントは、Locations
を再作成します テーブル:
DROP TABLE IF EXISTS Locations;
CREATE TABLE Locations(
LocationId INTEGER PRIMARY KEY,
Address TEXT NOT NULL,
State TEXT NOT NULL,
City TEXT NOT NULL,
Country TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
そして、このINSERT
ステートメントは、Locations
に新しい行を挿入します テーブル:
INSERT INTO Locations(Address,City,State,Country)
VALUES('3960 North 1st Street','San Jose','CA','USA');
Code language: SQL (Structured Query Language) (sql)
列のAddress
を変更するとします。 Street
へ 。
まず、新しいトランザクションを開始します:
BEGIN TRANSACTION;
Code language: SQL (Structured Query Language) (sql)
次に、LocationsTemp
という新しいテーブルを作成します Locations
と同じ構造です Address
を除くテーブル 列:
CREATE TABLE LocationsTemp(
LocationId INTEGER PRIMARY KEY,
Street TEXT NOT NULL,
City TEXT NOT NULL,
State TEXT NOT NULL,
Country TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
3番目に、テーブルLocations
からデータをコピーします LocationsTemp
へ :
INSERT INTO LocationsTemp(Street,City,State,Country)
SELECT Address,City,State,Country
FROM Locations;
Code language: SQL (Structured Query Language) (sql)
第4に、Locations
を削除します テーブル:
DROP TABLE Locations;
Code language: SQL (Structured Query Language) (sql)
5番目に、テーブルの名前をLocationsTemp
に変更します。 Locations
へ :
ALTER TABLE LocationsTemp
RENAME TO Locations;
Code language: SQL (Structured Query Language) (sql)
最後に、トランザクションをコミットします:
COMMIT;
Code language: SQL (Structured Query Language) (sql)
Locations
をクエリする場合 表を見ると、Address
列が表示されます。 Street
に名前が変更されました :
SELECT * FROM Locations;
Code language: SQL (Structured Query Language) (sql)
出力は次のとおりです:
概要
-
ALTER TABLE RENAME COLUMN
を使用します テーブルの列の名前を変更します。 - SQLite 3.25.0を使用している場合は、SQLite 3.25.0をアップグレードして、新しい構文を使用する必要があります。それ以外の場合は、上記の手順に従って列の名前を変更する必要があります。