Latest web development tutorials

SQLiteの制約

制約は、施行のデータリスト上のルールです。 これらは、テーブルデータ型に挿入することができる制限するために使用されます。 これは、データベース内のデータの正確性と信頼性を確保します。

制約は、列または表レベルにすることができます。 列レベルの制約が列のみに適用され、テーブルレベルの制約は、テーブル全体に適用されます。

以下は、一般的にSQLiteの制約で使用されています。

  • NOT NULL制約:列がNULL値を持つことができないことを確認してください。

  • DEFAULT制約:列の値が指定されていない場合、列のデフォルト値が提供さ。

  • UNIQUE制約:列のすべての値が異なっていることを確認します。

  • 主キー制約:一意のデータベーステーブル/レコード内の各ローを識別します。

  • CHECK制約:CHECK制約は、列のすべての値が一定の条件を満たしていることを保証します。

NOT NULL制約

デフォルトでは、列はNULL値を保持できます。 あなたは列がNULL値を持っていたくない場合は、この列にNULL値を許可しない指定された列に、この制約を定義する必要があります。

NULL、ノーデータが同じではありません、それは未知のデータを表します。

たとえば、次の文は、新しいSQLiteのテーブルCOMPANYを作成し、ID、NAMEおよびNULL値を受け入れない指定AGE 3を含む5、追加します。

(表会社を作成
   ID INT PRIMARY KEY NOT NULL、
   名前テキスト、NOT NULL、
   AGEのINT NOT NULLと、
   ADDRESSのCHAR(50)、
   SALARYのREAL
);

DEFAULT制約

INSERT INTO文のDEFAULT制約は、デフォルト値を持つカラムの特定の値を提供していません。

たとえば、次の文は、新しいSQLiteのテーブルCOMPANYを作成し、5を追加しました。 ここでは、SALARY列のデフォルト値は5000.00に設定されています。 INSERT INTO文が列の値を提供していないときに、列は5000.00に設定されます。

(表会社を作成
   ID INT PRIMARY KEY NOT NULL、
   名前テキスト、NOT NULL、
   AGEのINT NOT NULLと、
   ADDRESSのCHAR(50)、
   SALARYのREALのDEFAULT 50000.00
);

UNIQUE制約

UNIQUE制約は、2つのレコードの存在が特定の列に同じ値を持つ防ぎます。 COMPANYテーブルでは、たとえば、2人以上が同じ年齢を持っていないようにしたいことがあります。

たとえば、次の文は、新しいSQLiteのテーブルCOMPANYを作成し、5を追加しました。 ここでは、UNIQUEにAGE列には、あなたが同じ年齢レコードの2を持つことはできません。

(表会社を作成
   ID INT PRIMARY KEY NOT NULL、
   名前テキスト、NOT NULL、
   AGE INT NOT NULL UNIQUE、
   ADDRESSのCHAR(50)、
   SALARYのREALのDEFAULT 50000.00
);

PRIMARY KEY制約

PRIMARY KEY制約は一意にデータベーステーブル内の各レコードを識別する。 テーブルには複数のUNIQUE列が、1つのプライマリキーを持つことができます。 データベースのテーブルの設計では、主キーは非常に重要です。 主キーは固有のIDです。

私たちは、参照されるテーブルの行に主キーを使用します。 他のテーブルの外部キーに主キーによってテーブル間のリレーションシップを作成します。 SQLiteの中で「長年のコーディング監督」として、主キーは、別の場所で他のデータベースである、NULLにすることができます。

主キーは一意にデータベーステーブル/レコード内の各行を識別するテーブル内のフィールドです。 主キーは、一意の値が含まれている必要があります。 主キー列はNULL値を持つことはできません。

表に1つの主キーを持つことができ、それは、1つまたは複数のフィールドから構成されてもよいです。 場合、それらは複合キー主キーとして複数のフィールドと呼ばれます

任意のフィールド上の表に主キーが定義されている場合は、これらのフィールドに同じ値を持つ2つのレコードを持つことはできません。

私たちは、プライマリ・キー・テーブルとび様々な例としてIDを使用して作成さ見てきました:

(表会社を作成
   ID INT PRIMARY KEY NOT NULL、
   名前テキスト、NOT NULL、
   AGEのINT NOT NULLと、
   ADDRESSのCHAR(50)、
   SALARYのREAL
);

CHECK制約

CHECK制約を使用すると、条件値を確認したいレコードを入力することが可能となります。 条件がfalseの場合、レコードが制約に違反して、テーブルに入力することはできません。

たとえば、次の表では、新しいSQLiteの会社を作成し、5を追加します。 ここでは、SALARY列のチェックを追加しますので、賃金はゼロにすることはできません。

(表COMPANY3をCREATE
   ID INT PRIMARY KEY NOT NULL、
   名前テキスト、NOT NULL、
   AGEのINT NOT NULLと、
   ADDRESSのCHAR(50)、
   SALARY REAL CHECK(SALARY> 0)
);

制約を削除します

SQLiteは、ALTER TABLEの限定されたサブセットをサポートしています。 SQLiteのではALTER、中TABLEコマンドは、ユーザがテーブルの名前を変更することを可能にする、または既存のテーブルに新しい列を追加します。 列の名前を変更し、1を落としたり、テーブル制約から、追加または削除することは不可能です。