概要 :このチュートリアルでは、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 USACode language: Shell Session (shell)
最後に、Locationsのスキーマを表示します テーブル:
.schema LocationsCode 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をアップグレードして、新しい構文を使用する必要があります。それ以外の場合は、上記の手順に従って列の名前を変更する必要があります。