English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
制約は、テーブルのデータ列に対して実行されるルールです。これらは、テーブルにデータが入る際のデータ型を制限するために使用されます。これにより、データベース中のデータの正確性と信頼性が確保されます。
制約は列レベルまたはテーブルレベルで指定できます。列レベルの制約は一つの列にのみ適用され、テーブルレベルの制約はテーブル全体に適用されます。
以下はSQLiteで使用できる一般的な制約です。
NOT NULL 制約は、列がNULL値を持つことができないことを確実にします。
DEFAULT 制約は、指定されない場合、列にデフォルトの値を提供します。
UNIQUE 制約は、列の値がすべて異なることを確実にするために使用されます。
PRIMARY Key −データベーステーブルの各行を一意に識別します/記録。
CHECK 制約は、列の値が特定の条件を満たすことを確実にするために使用されます。
デフォルトでは、列はNULL値を保存できます。特定の列にNULL値を持たせたくない場合は、その列にこのような制約を定義し、現在の列はNULLを受け入れないことを指定する必要があります。
NULLはデータがないことを意味し、未知のデータを代表します。
以下のSQLite文は、COMPANYという名前の新しいテーブルを作成し、5つの列を追加します。そのうちの3つの列(ID、NAME、AGE)はNULLを受け入れません。
CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL );
INSERT INTO文に特定の値が提供されない場合、DEFAULT制約が列にデフォルトの値を提供します。
以下のSQLite文は、COMPANYという名前の新しいテーブルを作成し、5つの列を追加します。ここでは、SALARY列はデフォルトで設定されています。5000.00、したがって、INSERT INTO文にこの列に対して値を提供しない場合、デフォルトでこの列は設定されます。5000.00。
CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL DEFAULT 50000.00 );
UNIQUE制約は特定の列で2つのレコードが同じ値を持つことを防ぎます。例えば、COMPANYテーブルでは、2人以上の人間が同じ年齢を持つことを防ぐことができます。
例えば、以下のSQLite文は新しいテーブルCOMPANYを作成し、5つの列を追加します。ここでは、AGE列がUNIQUEに設定されており、同じ年齢を持つ2つのレコードを持つことはできません。-
CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL UNIQUE, ADDRESS CHAR(50), SALARY REAL DEFAULT 50000.00 );
PRIMARY KEY制約はデータベースのテーブルの各レコードを一意に識別します。他のUNIQUE列がいくつかあっても、テーブルには1つの主キーしかありません。データベーステーブルの設計では、主キーが非常に重要です。主キーはユニークなIDです。
これらを使用してテーブル行を参照します。テーブル間で関係を構築する際には、主キーが他のテーブルの外部キーになります。長期的なコーディング監視により、SQLiteの主キーはNULLになることができますが、他のデータベースではこのようにではありません。
主キーはテーブルのフィールドであり、データベースのテーブルの各行を一意に識別します。/レコード。主キーはユニークな値を含む必要があります。主キーのコラムはNULL値を持つことはできません。
テーブルは1つの主キーしか持てず、それは1つのまたは複数のフィールドで構成されることができます。複数のフィールドが主キーとして使用される場合、それらはcomposite key。
テーブルが他のテーブル上で主キーフィールド(s)を定義している場合、同じ値のフィールド(s)を持つ2つのレコードが存在することはできません。
上記の例で、IDが主キーのCOMPANYテーブルを作成する多くの例を目にしました。
CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL );
CHECK制約は、レコードに記入される値を確認する条件を提供します。条件の計算結果がfalseの場合、レコードは制約に違反し、テーブルに記入されません。
例えば、以下のSQLiteは新しいテーブルCOMPANYを作成し、5つの列を追加します。ここでは、SALARYにCHECK列を追加しており、SALARY 0を持つことはできません。
CREATE TABLE COMPANY3( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL CHECK(SALARY > 0) );
SQLiteはALTER TABLEの有限子集をサポートしています。SQLiteのALTER TABLE命令は、ユーザーがテーブルの名前を変更したり、既存のテーブルに新しい列を追加するのに許可されています。列の名前を変更したり、列を削除したり、テーブルに制約を追加したり削除したりすることはできません。