SQL制約 に不可欠な要素です リレーショナルデータベースの設計 それは、 誠実さ 正確さ そして 信頼性 データベースに保存されているデータのこと。 SQL 制約は、テーブル列に特定のルールを適用することで、データの一貫性を維持し、無効なデータ エントリを防ぎ、クエリのパフォーマンスを最適化します。
この記事では、最も一般的な SQL 制約について、明確な例を示して詳しく説明し、それらを効果的に実装する方法を説明します。
SQL制約とは何ですか?
SQL制約 に適用されるルールです 列 または テーブル で リレーショナルデータベース 使用できるデータの種類を制限するには 挿入された 更新されました または 削除されました 。これらのルールにより、データが有効で一貫性があり、ビジネス ロジックに準拠していることが保証されます。 データベース要件 。制約は、テーブルの作成中または後で使用して強制できます。 ALTER TABLE 声明。これらはデータベースの品質と整合性を維持する上で重要な役割を果たします。
SQL制約の種類
SQL には、データ整合性のさまざまな側面を管理するためにいくつかのタイプの制約が用意されています。これらの制約は、データが要件を確実に満たすために不可欠です。 正確さ 一貫性 そして 有効 。それぞれの詳細な説明と例を見てみましょう。
1. NOT NULL 制約
の NULLではありません 制約により、列に NULL 値を含めることができなくなります。これは、レコードの識別や計算の実行に値が不可欠な列の場合に特に重要です。列が次のように定義されている場合 NULLではありません すべての行にはその列の値が含まれている必要があります。
例:
CTC 完全形式
CREATE TABLE Student
(
ID int(6) NOT NULL
NAME varchar(10) NOT NULL
ADDRESS varchar(20)
);
説明: 上の例では、両方ともIDそしてNAME列は次のように定義されます。 NULLではありません 制約とは、すべての生徒がIDそしてNAME価値。
2. 一意の制約
の 個性的 制約は、列内のすべての値がテーブル内のすべての行にわたって異なることを保証します。とは異なり、 主キー これは一意性を必要とし、NULL を許可しません。UNIQUE 制約は NULL 値を許可しますが、非 NULL エントリには一意性を強制します。
例:
CREATE TABLE Student
(
ID int(6) NOT NULL UNIQUE
NAME varchar(10)
ADDRESS varchar(20)
);
説明 : ここにID列には一意の値を指定する必要があり、2 人の学生が同じ値を共有できないようにする必要があります。ID。複数を持つこともできます 個性的 テーブル内の制約。
3. 主キー制約
あ 主キー 制約は次の組み合わせです。 NULLではありません そして 個性的 制約。テーブル内の各行を一意に識別します。テーブルには 1 つだけ含めることができます 主キー また、NULL 値を受け入れることはできません。これは通常、レコードの識別子として機能する列に使用されます。
例:
CREATE TABLE Student
(
ID int(6) NOT NULL UNIQUE
NAME varchar(10)
ADDRESS varchar(20)
PRIMARY KEY(ID)
);
説明: この場合、ID列は主キーとして設定され、各生徒の ID が一意であり、NULL にならないことが保証されます。
4. 外部キー制約
あ 外部キー 制約は、1 つのテーブル内の列をテーブルにリンクします。 主キー 別のテーブルで。この関係は維持に役立ちます 参照整合性 の値を確保することで、 外部キー 列は、参照先テーブル内の有効なレコードと一致します。
注文テーブル:
| O_ID | 注文_いいえ | C_ID |
|---|---|---|
| 1 | 2253 | 3 |
| 2 | 3325 | 3 |
| 3 | 4521 | 2 |
| 4 | 8532 | 1 |
顧客テーブル:
| C_ID | 名前 | 住所 |
|---|---|---|
| 1 | ラメシュ | デリー |
| 2 | スレシュ | ノイダ |
| 3 | ダーメッシュ | グルガオン |
明らかにわかるように、フィールドは C_ID で 注文テーブル です 主キー Customers テーブルの各行を一意に識別します。 お客様 テーブル。したがって、これは Orders テーブルの外部キーになります。
例:
CREATE TABLE Orders
(
O_ID int NOT NULL
ORDER_NO int NOT NULL
C_ID int
PRIMARY KEY (O_ID)
FOREIGN KEY (C_ID) REFERENCES Customers(C_ID)
)
説明: この例では、C_IDの列Orderstable は、C_IDの列Customersテーブル。これにより、有効な顧客 ID のみをOrdersテーブル。
5. チェック制約
の チェック 制約を使用すると、データがテーブルに挿入される前に満たさなければならない条件を指定できます。これは、列の値が特定の基準を満たしていることを確認するなどのルールを適用するために使用できます (例: 年齢は 18 歳以上である必要があります)。
例:
CREATE TABLE Student
(
ID int(6) NOT NULL
NAME varchar(10) NOT NULL
AGE int NOT NULL CHECK (AGE >= 18)
);
説明: 上の表では、 チェック 制約により、18 歳以上の学生のみをテーブルに挿入できるようになります。
6. デフォルトの制約
の デフォルト 制約は、挿入時に値が指定されなかった場合に列のデフォルト値を提供します。これは、ユーザーが値を指定しなくても、特定の列が常に意味のある値を持つようにするのに役立ちます。
例:
CREATE TABLE Student
(
ID int(6) NOT NULL
NAME varchar(10) NOT NULL
AGE int DEFAULT 18
);
説明: ここで値が指定されていない場合は、AGE挿入中に、デフォルト値の 18 が自動的に割り当てられます。
SQL で制約を指定する方法
制約は、テーブル作成プロセス中に次のコマンドを使用して指定できます。 CREATE TABLE 声明。さらに、制約を変更したり、既存のテーブルに追加したりすることもできます。ALTER TABLE声明。
制約を作成するための構文:
CREATE TABLE テーブル名
(
列 1 のデータ型 [制約名]
列2のデータ型 [制約名]
列3のデータ型 [制約名]
...
);
テーブルの作成後に制約を追加または削除することもできます。
制約を追加する例:
Java配列リストのソート
ALTER TABLE Student
ADD CONSTRAINT unique_student_id UNIQUE (ID);
結論
SQL 制約は保守のために不可欠です データの整合性 リレーショナル データベースの一貫性を確保します。これらの制約を理解し、効果的に実装することは、エラーのない堅牢なデータベースの設計に役立ちます。活用することで NULL ではない 一意の主キー 外部キー デフォルトとインデックスを確認してください データベースが最適化されていることを確認できます。 正確さ そして パフォーマンス 。
クイズの作成