SQLのINT型カラムに制約を設定して値の範囲を制限する方法

SQLでデータベースを設計する際、INT型カラムの値の範囲を制限したいケースは多々あります。例えば、年齢を0から150の範囲で保存したい、評価点数を1から5までの整数に限定したいなど、ビジネスロジックに応じて制約を設定したい場面があります。この記事では、SQLでINT型カラムに制約を設定する手法について、具体例を交えて解説します。

目次

なぜ制約を設定するのか

制約を設定する主な理由はデータの整合性を保つことです。制約がないと、誤って不正な値が入力される可能性があります。これがビジネスロジックに影響を及ぼす場合もあり、問題を未然に防ぐためには制約設定が重要です。

制約の種類

SQLで設定できる制約にはいくつかの種類があります。今回の主題である値の範囲制限に焦点を当てると、主に以下の2つの方法が考えられます。

方法説明
CHECK制約カラムに挿入される値が特定の条件に一致することを確認します。
ENUMカラムに挿入できる値を事前に定義した選択肢から選ばせる。
制約の種類と説明

CHECK制約の設定方法

CHECK制約は、特定の条件に合致するデータだけがカラムに挿入されるように制限します。具体的なSQL文の形式と使用例を以下に示します。

基本形式

CREATE TABLE テーブル名 (
  カラム名 INT CHECK (条件)
);

使用例

例として、年齢を0から150までの範囲で制限するSQL文は以下のようになります。

CREATE TABLE persons (
  age INT CHECK (age >= 0 AND age <= 150)
);

ENUMの設定方法

ENUMは、カラムに挿入できる値を事前に定義した選択肢から選ばせます。これは評価点数など、特定の選択肢から値を選ばせたい場合に便利です。

基本形式

CREATE TABLE テーブル名 (
  カラム名 ENUM('選択肢1', '選択肢2', ...)
);

使用例

例として、評価点数を1から5までの整数に限定するSQL文は以下のようになります。

CREATE TABLE reviews (
  rating ENUM('1', '2', '3', '4', '5')
);

まとめ

INT型カラムに制約を設定する方法は主に2つ、CHECK制約とENUMがあります。CHECK制約は条件式で範囲を制限し、ENUMは事前に定義した選択肢から選ばせます。どちらの方法もデータの整合性を保ち、ビジネスロジックに即した制約を設定するために重要です。

コメント

コメントする

目次