MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLの整数カラムに正の整数制約を追加する方法

MySQLで整数カラムに正の整数のみを許可する方法

MySQLでカラムに負の数を入力できないようにするには、UNSIGNED属性を使用します。UNSIGNEDを指定した整数型カラムは負の値を受け付けず、正の整数と0のみを格納できます。

基本構文

CREATE TABLE yourTableName
(
   yourColumnName INT UNSIGNED
);

テーブル作成の例

実際にテーブルを作成して動作を確認してみましょう。以下のクエリでテーブルを作成します。

mysql> create table OnlyPositiveValue
   - > (
   - > Marks int UNSIGNED
   - > );
Query OK, 0 rows affected (0.58 sec)

厳格モードの設定

データを挿入する前に、以下のクエリでSTRICT_TRANS_TABLESモードを設定しておきます。このモードを有効にしておくと、範囲外の値を挿入しようとした際にエラーが発生し、無効なデータの登録を防げます。

mysql> SET @@SESSION.sql_mode = 'STRICT_TRANS_TABLES';
Query OK, 0 rows affected, 1 warning (0.00 sec)

負の数を挿入した場合のエラー

この状態でINSERTコマンドに負の数を指定すると、以下のようなエラーが表示されます。

mysql> insert into OnlyPositiveValue values(-10);
ERROR 1264 (22003): Out of range value for column 'Marks' at row 1
mysql> insert into OnlyPositiveValue values(-100);
ERROR 1264 (22003): Out of range value for column 'Marks' at row 1

正の数を挿入する

次に、正の数を挿入してみます。0もUNSIGNEDカラムでは有効な値として扱われます。

mysql> insert into OnlyPositiveValue values(0);
Query OK, 1 row affected (0.17 sec)
mysql> insert into OnlyPositiveValue values(10);
Query OK, 1 row affected (0.14 sec)
mysql> insert into OnlyPositiveValue values(100);
Query OK, 1 row affected (0.11 sec)

レコードの確認

SELECT文を使ってテーブル内のすべてのレコードを表示します。

mysql> select *from OnlyPositiveValue;

以下の出力のように、正の数のみが格納されていることが確認できます。

+-------+
| Marks |
+-------+
|     0 |
|    10 |
|   100 |
+-------+
3 rows in set (0.00 sec)

このように、INT UNSIGNEDを使用することで、カラムレベルで負の値の入力を防ぐことができます。ただし、UNSIGNEDは0以上の値を許可するため、厳密に「1以上の正の整数」のみを許可したい場合は、MySQL 8.0.16以降で強制適用されるCHECK制約(例:CHECK (Marks > 0))を併用する方法もあります。

  1. MySQLで列(カラム)の値を置き換える方法|UPDATE文の使い方を解説

    MySQLでテーブルの特定の列(カラム)の値を置き換えたい場合には、UPDATE文を使用します。WHERE句で対象のレコードを指定することで、該当する行だけを安全に更新できます。この記事では、実際のSQLサンプルを使いながら、列の値を置き換える手順を順番に解説していきます。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。以下のクエリを実行します。mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, Score int ); Query

  2. MySQLクエリで列にユーザー定義の値を追加する方法

    MySQLでは、UNION ALLを活用することで、既存の列の値に加えて、ユーザーが自由に定義した値をクエリ結果に追加できます。ここでは、ENUM型の列を持つテーブルを例に、その具体的な手順を解説します。 1. サンプルテーブルの作成 まず、ENUM型のカラムを持つテーブルを作成します。 mysql> create table DemoTable1847      (      GameStatus ENUM(PENDING,COMPLETED,CANCELLED)      ); Query OK