質問
SQLのCHECK制約について解説してください |
解答
SQLの `CHECK` 制約は、テーブルの列に格納されるデータの値に制限(条件)を設けるための仕組みです。 これにより、不正なデータの挿入や更新を防ぐことができます。 ■ CHECK制約の基本構文 ```sql CREATE TABLE テーブル名 ( 列名 データ型 CHECK (条件式) ); ``` または、テーブル定義の最後に列をまたいだ条件を指定することも可能です。 ```sql CREATE TABLE テーブル名 ( ... CHECK (条件式) ); ``` ■ 具体例 ① 年齢を0〜150歳に制限する ```sql CREATE TABLE Person ( name VARCHAR(100), age INT CHECK (age >= 0 AND age <= 150) ); ``` → これにより、マイナスの年齢や151歳以上は登録できません。 ② 商品価格が0以上であることを保証 ```sql CREATE TABLE Product ( id SERIAL PRIMARY KEY, name TEXT NOT NULL, price NUMERIC(10, 2) CHECK (price >= 0) ); ``` → `price` 列にマイナスの価格は入力不可。 ③ 複数列を使った条件(例:割引価格は通常価格以下) ```sql CREATE TABLE Item ( name TEXT, price INT, discount_price INT, CHECK (discount_price <= price) ); ``` ■ ALTER TABLEで後から追加も可能 ```sql ALTER TABLE Person ADD CHECK (age <= 150); ``` ■ 注意点・制約
■ 対応している主なRDBMS
■ まとめ * `CHECK` 制約は列の値に条件を付けるための機能。 * 整合性を保つために重要だが、他のテーブルとの関係は定義できない。 * NULLには制限がかからないことに注意。 * RDBMSによってはサポート状況に違いがあるため、使う際は確認が必要。 |
|
|
ラベル:check TABLE SQL create null 制約 テーブル 制限 RDBMS INT MySQL 不正 CHECK制約 年齢 マイナス 登録 text Alter 無視 格納 仕組み 挿入 更新 データ型 テーブル定義 指定 AND 商品価格 保証 PRODUCT SERIAL Primary Key Not 価格 入力不可 割引価格 ADD データ整合性 確保 評価 ロジック chatgptに質問
【下記、広告です。クリックいただけると励みになります。】
【関連する記事】
- B-Treeインデックスをわかりやすい例で説明してください。
- PostgresSQLは他のDBと何が違いますか?
- データベースの三層スキーマ構造とは
- ボイスコッド正規化とは
- スロークエリログとは
- DBのVACUUMとはなんですか
- データベースにおけるHAVING句の使い方
- データベースにおけるJOIN句の使い方をマスターしたいです。
- データベースを正規化する理由を説明してください。
- データベースにおけるGROUP BY句の使い方をマスターしたいです。
- データベースのインデックス機能がより効果を発揮するのはどのような場面ですか?
- グラフデータベースってなんぞや
- web上で無料で使えるDBはありますか。
- NoSQLとNewSQLについて
- SQLiteはどのような特徴がありますか。
- ストアドプロシージャは具体的にどういった場面で使用されますか
- SQLの実行計画をテキストで取得したい。
- DBの種類について




