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は事前に定義した選択肢から選ばせます。どちらの方法もデータの整合性を保ち、ビジネスロジックに即した制約を設定するために重要です。
created by Rinker
¥4,554
(2024/11/22 10:55:01時点 Amazon調べ-詳細)
コメント