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_DATE、CURRENT_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 。