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

MySQLのint(5)とint(10)の違いとは?表示幅とzerofillの仕組みを解説

MySQLのint(5)とint(10)の違いとは?

MySQLにおけるint型の括弧内の数値は、表示幅を指定するためのものであり、格納できる値の範囲には一切影響しません。int(5)は表示幅が5、int(10)は表示幅が10であることを意味します。

特にzerofillオプションと組み合わせた場合、実際の値の桁数が指定した表示幅に満たないときは、先頭が0で埋められて表示されます。ここでは、異なる表示幅を設定したint型の動作を具体例で確認してみましょう。

テーブルの作成

まず、int(11)とint(13)を設定したテーブルを作成します。以下がテーブル作成のクエリです。

mysql> create table intVsIntAnyThingDemo
-> (
-> Number1 int(11) unsigned zerofill,
-> Number int(13) unsigned zerofill
-> );
Query OK, 0 rows affected (1.17 sec)

レコードの挿入

次に、insertコマンドを使ってテーブルにレコードを挿入します。クエリは以下の通りです。

mysql> insert into intVsIntAnyThingDemo values(12345,6789);
Query OK, 1 row affected (0.44 sec)

mysql> insert into intVsIntAnyThingDemo values(3,2);
Query OK, 1 row affected (0.20 sec)

mysql> insert into intVsIntAnyThingDemo values(12,89);
Query OK, 1 row affected (0.15 sec)

mysql> insert into intVsIntAnyThingDemo values(123,6789);
Query OK, 1 row affected (0.17 sec)

mysql> insert into intVsIntAnyThingDemo values(1234,6789);
Query OK, 1 row affected (0.14 sec)

レコードの表示とzerofillの確認

select文ですべてのレコードを表示します。クエリは以下の通りです。

mysql> select *from intVsIntAnyThingDemo;

以下の出力結果を見ると、int型に設定された表示幅に合わせて、桁数が足りない部分の先頭が0で埋められている(zerofill)ことが確認できます。

+-------------+---------------+
| Number1 | Number |
+-------------+---------------+
| 00000012345 | 0000000006789 |
| 00000000003 | 0000000000002 |
| 00000000012 | 0000000000089 |
| 00000000123 | 0000000006789 |
| 00000001234 | 0000000006789 |
+-------------+---------------+
5 rows in set (0.00 sec)

まとめ

int(5)とint(10)の違いは、格納できる数値の範囲ではなく、表示幅の指定だけです。zerofillを指定すると、値が表示幅に満たない場合に先頭が0で埋められて表示されます。なお、MySQL 8.0.17以降では整数型の表示幅指定は非推奨となっており、将来的に削除される予定があるため、新規の開発では表示幅を指定しないint型の利用が推奨される点にも注意しましょう。

  1. MySQLでINT型フィールドを更新する方法

    ```html MySQLでは、UPDATE文を使ってテーブル内のINT型フィールド(数値データ)を簡単に更新できます。この記事では、サンプルテーブルを作成し、既存の数値を基準にINT型カラムを更新する具体的な手順を実行例とともに解説します。 1. サンプルテーブルの作成 まず、以下のクエリでテーブルを作成します。 mysql> create table DemoTable702 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(100), StudentScore

  2. 【MySQL】INT型のyyyymmdd形式の数値を日付(DATE)に変換する方法

    MySQLでは、INT型で保存された「yyyymmdd」形式の数値(例:20190108)を日付型に変換したいケースがよくあります。このような場合、DATE()関数を使うことで簡単に変換できます。本記事では、実際にテーブルを作成し、サンプルデータを用いてDATE()関数による変換手順を解説します。1. サンプルテーブルの作成まず、INT型のカラムを持つテーブルを作成します。mysql> create table DemoTable ( Number int ); Query OK, 0 rows affected (0.48 sec)2. サンプルデータの挿入INSERT文を使っ