MySQLのINT(7)はどういう意味?表示幅とZEROFILLの仕組みをわかりやすく解説
MySQLのINT(7)の「7」が意味するもの
INT(7)のように整数型の後ろに括弧で数値を指定した場合、この数値は「表示幅」を示します。ここで重要なのは、表示幅の指定はデータの保存サイズには一切影響しないという点です。INT型は常に4バイトで格納され、扱える値の範囲も -2147483648 ~ 2147483647 で固定されています。
つまり、INT(7)とINT(11)では、保存できる値の範囲も消費ストレージもまったく同じです。違いがあるのは、値を表示するときの扱いだけです。
ZEROFILLを使ったINT(7)の動作確認
INT(7)の実際の挙動を理解するために、ZEROFILLオプションを付けたカラムを持つテーブルを作成してみましょう。ZEROFILLを指定すると、値の桁数が表示幅に満たない場合、左側がゼロで埋められて表示されます。
テーブル作成のクエリは以下のとおりです。
mysql> create table DisplayInt
-> (
-> Number int(7) zerofill
-> );
Query OK, 0 rows affected (1.25 sec)
次に、INSERTコマンドを使っていくつかのレコードを挿入します。
mysql> insert into DisplayInt values(1);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DisplayInt values(12);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DisplayInt values(1234);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DisplayInt values(12345);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DisplayInt values(1234567);
Query OK, 1 row affected (0.18 sec)
SELECT文でテーブル内の全レコードを表示してみます。
mysql> select *from DisplayInt;
実行結果は以下のとおりです。
+---------+
| Number |
+---------+
| 0000001 |
| 0000012 |
| 0001234 |
| 0012345 |
| 1234567 |
+---------+
5 rows in set (0.00 sec)
ご覧のとおり、7桁に満たない値(1、12、1234、12345)は左側がゼロで埋められ、7桁ちょうどの「1234567」はそのまま表示されました。これがINT(7)における「表示幅」の実際の働きです。
注意:MySQL 8.0以降では非推奨
なお、表示幅(display width)の指定およびZEROFILLは、MySQL 8.0.13以降では非推奨(Deprecated)となっており、将来のバージョンで削除される予定です。新規のプロジェクトでは、これらの機能に依存しない設計を心がけることが推奨されます。表示の整形が必要な場合は、アプリケーション側やLPAD関数などで対応するのが安全です。
-
拡張ネットワーク(Extended Network)とは?意味・仕組み・料金をわかりやすく解説
拡張ネットワーク(Extended Network)とは、携帯電話会社が、自社の基地局がカバーしていないエリアでもユーザーに通信サービスを継続的に提供するために採用している一般的な仕組みです。契約中の通信事業者のネットワーク範囲外に移動すると、スマートフォンは自動的に、自社が提携関係を結んでいる他社のネットワークへ切り替わります。この切り替えは完全にシームレスに行われ、ほとんどの場合、追加料金は発生しません。ただし、拡張ネットワーク経由ではデータ通信速度が遅くなることが多い点には注意が必要です。Extended Network LTE(拡張ネットワークLTE)とは?「Extended Netw
-
LTEとは?意味や特徴、4G・5Gとの違いをわかりやすく解説
LTEとは?基本的な意味LTE(Long Term Evolution)は、WiMAXや3Gといった従来の技術に代わる4G無線ブロードバンド規格です。3Gより高速ですが、真の4Gや現行の最新規格である5Gと比べると速度は劣ります。LTEは、スマートフォンやタブレットなどのモバイルデバイスが、Wi-Fi接続の代わりに利用する技術です。3Gや4Gと同様に、モバイルデバイスが基地局を経由してインターネットに接続する仕組みを定めた技術標準となっています。実は「LTE」は、4Gへの進化を示すためのマーケティング用語としての側面が強い言葉です。LTEや4Gに該当するかどうかを裁定する国際的な規制機関は存在