sql >> データベース >  >> RDS >> SQLite

SQLiteの既存のテーブルに列を追加する

    SQLiteでは、ALTER TABLEを使用できます 既存のテーブルに列を追加するステートメント。

    これは、実際にはALTER TABLEで実行できる数少ないことの1つです。 SQLiteのステートメント。 ALTER TABLEでできることは SQLiteのステートメントは、テーブルの名前を変更し、列の名前を変更し、既存のテーブルに新しい列を追加することです。

    例1

    次の表があるとします。

    CREATE TABLE Cats( 
        CatId INTEGER PRIMARY KEY, 
        CatName
    );

    次に、 DOBという列を追加します。 。次のコードを使用してそれを行うことができます:

    ALTER TABLE Cats ADD COLUMN DOB;

    それと同じくらい簡単です。

    制限

    制約などの他の仕様を定義に提供することもできますが、いくつかの制限があります。

    特に:

    • 新しい列にPRIMARY KEYを含めることはできません またはUNIQUE 制約。
    • 新しい列のデフォルト値をCURRENT_TIMEにすることはできません 、CURRENT_DATECURRENT_TIMESTAMP 、または括弧内の式。
    • NOT NULLの場合 制約が指定されている場合、列にはNULL以外のデフォルト値が必要です。 。
    • 外部キー制約が有効で、REFERENCESの列がある場合 句が追加された場合、列のデフォルト値はNULLである必要があります 。
    • 新しい列が生成された列の場合、STOREDにすることはできません 桁。 VIRTUALにすることができます コラムですが。

    例2

    別の例を次に示します。今回は、新しい列の定義にさらにいくつかの仕様を追加します。

    CREATE TABLE Dogs( 
        DogId INTEGER PRIMARY KEY, 
        DogName
    );

    次に、 DOBという列を追加します。 。次のコードを使用してそれを行うことができます:

    ALTER TABLE Dogs 
    ADD COLUMN Score NOT NULL DEFAULT 0;

    変更を確認する

    SQLiteでテーブルの構造をチェックする方法はいくつかあります。

    1つの方法は、PRAGMA table_info()を使用することです。 ステートメント。

    PRAGMA table_info(Dogs);

    結果:

    cid  name     type     notnull     dflt_value  pk
    ---  -------  -------  ----------  ----------  --
    0    DogId    INTEGER  0                       1 
    1    DogName           0                       0 
    2    Score             1           0           0 

    新しい列が表示され、NOT NULLがあることがわかります。 制約があり、デフォルト値は 0


    1. PostgreSQLでのJSONBの使用:PostgreSQLでJSONデータを効果的に保存およびインデックス付けする方法

    2. XMLシリアル化のためのStringWriterの使用

    3. OracleでのページングのためのLIMITおよびOFFSETの代替

    4. PostgreSQLのカスタムトリガーベースのアップグレード