の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 ルールに違反し、挿入が失敗します。
クイズは正常に完了しました スコア : 2/5正確さ : 0%ログインして説明を見る 1/5 1/5 < Previous 次へ >