SQLite の 2つの列の間に新しい列を追加する

Junaid Khan 2023年6月21日
  1. 既存の SQLite データベースに新しい列を追加する
  2. 列を更新して新しいテーブルを作成する
  3. さまざまなデータベースでのALTER TABLE ADD COLUMNアプローチ
SQLite の 2つの列の間に新しい列を追加する

SQLite データベースでは、テーブル内にデータを格納します。 各テーブルには、データを維持するための行と列が含まれています。

列はデータベースの属性を表し、行は各行のレコードを表します。 データベースのライフサイクル中に、既存のデータベースに新しい列を挿入または追加する場合、それを採用して作業するための複数のオプションがあります。

オプションの 1つは、既存のデータベースに新しい列を挿入するか、更新された列で新しいテーブルを作成し、行内のデータをコピーして前のテーブルを削除することです。

既存の SQLite データベースに新しい列を追加する

データベースに新しい列を挿入するには、ALTER TABLE コマンドの次の構文を使用して、目的の結果を取得します。 ここでは、テーブルの名前と、新しい列を追加したいことを言及する必要があります。

次の行では、ADD COLUMN コマンドの後に列定義を指定する必要があります。

ALTER TABLE name_of_the_table
ADD COLUMN new_column type_of_column;

列定義は次のように定義されます。

name_of_the_column type_of_data constraint;

上記の SQL ステートメントを見ると、データベースに 1つの列が追加されています。 ただし、複数の新しい列を SQL テーブルに追加する場合は、次の SQL コマンドを使用します。

ALTER TABLE name_of_the_table
ADD COLUMN new_column1_definition,
ADD COLUMN new_column2_definition;

顧客のテーブルの例を見てみましょう。このテーブルには、主キーとしての customer_id、顧客の c_first_namec_last_name、および c_email という 4つの列があります。 顧客のテーブルの説明は次のとおりです。

CREATE TABLE customers (
    customers_id INT PRIMARY KEY,
    c_first_name VARCHAR(40) NOT NULL,
    c_last_name VARCHAR(40) NOT NULL,
    c_email VARCHAR(100) NOT NULL UNIQUE
);

新しい要件は、新しい列 phone_numbercustomers テーブルに追加することです。 このタスクを実行するには、ALTER TABLE コマンドを使用してテーブルの名前を指定し、新しい列を追加する必要があります。

次の行では、列名とそのタイプを含む新しい列定義を追加するために ADD COLUMN コマンドが必要です。

ALTER TABLE customers
ADD COLUMN phone_number VARCHAR(35);

同様に、複数の新しい列を SQL データベースに挿入する場合は、新しい列ごとに ADD COLUMN コマンドを明示的に使用する必要があります。 ここでは、customers データベースに 3つの新しい列を追加しました: c_mailing_addressc_dob,、および c_social_media_account

この方法では、現在の列の間ではなく、テーブルの最後に新しい列を追加します。

アプローチは同じですが、異なるデータベースで ALTER TABLE コマンドを使用するための異なる構文があることを覚えておいてください。

ALTER TABLE customers
ADD COLUMN c_mailing_address VARCHAR(155),
ADD COLUMN c_dob DATE,
ADD COLUMN c_social_media_account VARCHAR(255);

列を更新して新しいテーブルを作成する

2 番目のオプションは、不足している列と一時的な名前を使用して新しいテーブルを作成することです。 このアプローチにより、列が正しい位置と順序で配置されます。

次に、前のテーブルのすべてのレコードを新しいテーブルにコピーし、前のテーブルを削除します。 後で、新しいテーブルの名前を削除したテーブル名に変更します。

一時的な名前でテーブルを作成する

最初のステップは、前のテーブル列と同じ列名を持つ一時的な名前で新しいテーブルを作成することです。 すべてのレコードを古いテーブルから新しいテーブルにコピーする必要があるため、同じ列名が必要です。

CREATE TABLE {NewTableTemporaryName}
(n_name TEXT, COLNew {type} DEFAULT {defaultValue}, quantity INTEGER, n_rate REAL);

古いテーブルからデータをコピーする

2 番目のステップでは、古いテーブルのレコードを、同じ列を持つ新しく作成されたテーブルにコピーする必要があります。 INSERT INTO コマンドは、SELECT 句が提供するすべてのデータを挿入するのに役立ちます。

INSERT INTO {NewTableTemporaryName}
(n_name, n_quantity, n_rate) SELECT n_name, n_quantity, n_rate FROM Old_Table;

古いテーブルを削除または削除する

次のステップでは、すべてのレコード (行) を古いテーブルから新しいテーブルにコピーしたら、古いテーブルを削除または削除する必要があります。 その理由は、古いテーブル レコードが不要になったためです。

DROP TABLE Old_Table;

新しいテーブルの名前を古いテーブル名に変更する

最後の手順は、新しいテーブルの名前を古いテーブル名に変更することです。 要件に応じてすべての名前を変更できるため、これははるかに優れたアプローチです。

最後のステップの後、必要な名前、更新された列、およびその中のすべてのレコードを持つテーブルができました。

ALTER TABLE {NewTabletemporaryName} RENAME TO Old_Table;

さまざまなデータベースでのALTER TABLE ADD COLUMNアプローチ

ADD COLUMN コマンドを使用して列を既存のテーブルに挿入する方法についてはすでに説明しました。 このセクションでは、さまざまなデータベースで ALTER TABLE ADD COLUMN 構文を使用する方法について詳しく説明します。

これらのデータベースには、PostgreSQL、MYSQL、Oracle、SQL Server、SQLite、および BD2 が含まれます。

PostgreSQL

ALTER TABLE name_of_the_table
ADD COLUMN column_definition;

MySQL

ALTER TABLE name_of_the_table
ADD [COLUMN] column_definition;

オラクル

ALTER TABLE name_of_the_table
ADD column_definition;

SQLサーバー

ALTER TABLE name_of_the_table
ADD column_definition;

SQLite

ALTER TABLE name_of_the_table
ADD COLUMN column_definition;

DB2

ALTER TABLE name_of_the_table
ADD column_definition;
著者: Junaid Khan
Junaid Khan avatar Junaid Khan avatar

Hi, I'm Junaid. I am a freelance software developer and a content writer. For the last 3 years, I have been working and coding with Python. Additionally, I have a huge interest in developing native and hybrid mobile applications.

LinkedIn