logo

SQL |チェック制約

CHECKSQL の制約は、挿入または更新できるデータを制限することによって、列の値にルールを適用します。値が指定された条件を確実に満たすようにします。値が条件に違反する場合、操作は拒否されます。CHECKテーブルの作成または変更中に追加できます。

CHECK 制約の構文

CHECK制約 テーブルの作成時に定義することも、後で ALTER ステートメントを使用して追加することもできます。

1. CREATE TABLE での CHECK の使用 :

CREATE TABLE table_name (  
column1 datatype
column2 datatype CHECK (condition)
...
);

2. ALTER TABLE での CHECK の使用

ALTER TABLE table_name  
ADD CONSTRAINT constraint_name CHECK (condition);

CHECK 制約に関する重要なポイント:



アプレット
  • ドメインの整合性: これにより、列の値が指定された条件を確実に満たすため、データベース内の有効なデータを維持することができます。
  • CREATE または ALTER とともに使用します。 CHECK 制約は、テーブルの作成時に定義することも、既存のテーブルに追加することもできます。
  • 他の制約と組み合わせることができます。 CHECK は、次のような他の制約とともに使用できます。 主キー FOREIGN KEY と NOT NULL を使用して、テーブル データのより包括的なルールを定義します。
  • 行レベルの制約: 個々の列に影響を与える列レベルの制約とは異なり、CHECK 制約は必要に応じて複数の列に一度に適用できます。

CHECK 制約の使用例

CHECK 制約がどのように機能するかをよりよく理解するために、いくつかの実践的な例を見てみましょう。 SQL

例 1: 単一列に CHECK を適用する

この例では、18 ~ 120 の値を含める必要がある Age 列を含む Customers テーブルを作成します。CHECK 制約により、テーブルに無効な年齢が挿入されないことが保証されます。

クエリ:

CREATE TABLE Customers (  
CustomerID INT PRIMARY KEY
Name VARCHAR(50)
Age INT CHECK (Age >= 18 AND Age <= 120)
);


-- Valid insert
INSERT INTO Customers (CustomerID Name Age)
VALUES (1 'John Doe' 25);

-- Invalid insert
INSERT INTO Customers (CustomerID Name Age)
VALUES (2 'Jane Smith' 15); -- This will fail due to the CHECK constraint

Age 列には、値が 18 ~ 120 であることを保証する CHECK 制約があります。この範囲外の年齢を挿入しようとすると、データベースはエラーをスローします。

例 2: 複数の列を含む CHECK 制約

複数の列にわたって CHECK 制約を使用することもできます。たとえば、 従業員テーブルでは、給与がプラスであり、年齢が 18 歳以上であることを確認したいと考えています。

クエリ:

CREATE TABLE Employee (  
EmployeeID INT PRIMARY KEY
Name VARCHAR(50)
Age INT
Salary DECIMAL(10 2)
CHECK (Age >= 18 AND Salary > 0)
);


-- Valid insert
INSERT INTO Employee (EmployeeID Name Age Salary)
VALUES (1 'Alice Johnson' 30 50000);

-- Invalid insert (age < 18)
INSERT INTO Employee (EmployeeID Name Age Salary)
VALUES (2 'Bob Lee' 16 45000); -- This will fail due to the CHECK constraint

CHECK 制約により、両方の条件が満たされることが保証されます。従業員は 18 歳以上であり、給与は 0 より大きい必要があります。この種の制約は、ルールに複数の列が含まれる場合に便利です。

例 3: ALTER TABLE を使用した CHECK 制約の追加

ALTER TABLE ステートメントを使用して、既存のテーブルに CHECK 制約を追加できます。

クエリ:

ALTER TABLE Employee  
ADD CONSTRAINT chk_salary CHECK (Salary >= 30000);

これにより、chk_salary という名前の CHECK 制約が Employee テーブルに追加され、Salary 列の最小値が 30000 になることが保証されます。給与が 30000 より低いレコードを挿入または更新しようとすると、操作は失敗します。

おすすめのクイズ クイズの編集 5 つの質問

CHECK 制約は SQL で何を保証しますか?

  • 列はルールなしで値を受け入れます

    Linuxファイルシステムとは何ですか
  • B

    列は一意の場合にのみ値を受け入れます

  • C

    列は null 以外の場合にのみ値を受け入れます

  • D

    列は指定されたルールに一致する値を受け入れます

説明:

CHECK は、定義されたルールに違反するデータを拒否する列の値に条件を適用します。

SQL が CHECK を使用した INSERT を妨げるのはどのような場合ですか?

  • カラム内の値が重複している場合

  • B

    値が定義された条件に違反した場合

    Linux変更ファイル
  • C

    テーブルに主制約がない場合

  • D

    値が NULL で、列が NULL を許可する場合

説明:

挿入または更新されたデータが CHECK 条件を破ると、SQL は操作をキャンセルします。

CHECK 制約はどこで定義できますか?

  • SELECT クエリ構文内のみ

    うんち
  • B

    主キーが宣言された後のみ

  • C

    テーブルの作成時または変更時

  • D

    範囲のある数値列のみ

説明:

CHECK は、テーブルの作成中、または後で ALTER TABLE ステートメントを使用して追加できます。

複数列の CHECK 制約では何が起こるでしょうか?

  • 条件は 1 つの列のみを参照できます

    メインメソッドJava
  • B

    条件は複数の列を参照できます

  • C

    条件は数値列に対してのみ機能します

  • D

    挿入時に条件が値を無視する

説明:

CHECK では、2 つ以上の列を使用してルールを適用し、組み合わせた検証を強制できます。

CHECK (年齢 ≥ 18) 制約に失敗する挿入はどれですか?

  • 15歳未満の年齢値

  • B

    年齢値はちょうど 18 に等しい

  • C

    年齢値が 25 歳を超える

  • D

    NULL 値として保存された年齢値が許可される

説明:

18 未満の値は CHECK ルールに違反し、挿入が失敗します。

SQL |チェック制約クイズは正常に完了しました スコア :  2/5正確さ : 0%ログインして説明を見る 1/5 1/5 < Previous 次へ >