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

MySQLのTINYINT(2)とTINYINT(1)の違いとは?ZEROFILLで理解する表示幅の意味

TINYINT(2)とTINYINT(1)の基本的な違い

MySQLにおけるTINYINT型の括弧内の数値、たとえばTINYINT(2)の「2」やTINYINT(1)の「1」は、表示幅(display width)を指定するものです。この数値が異なっても、格納できる値の範囲や使用されるストレージ容量に違いはありません。

つまり、TINYINT(1)とTINYINT(2)の違いは表示幅のみであり、データそのものには何ら影響を与えません。両者の違いを明確に確認したい場合は、ZEROFILLオプションを使用すると分かりやすくなります。

  • TINYINT(1) ZEROFILL
  • TINYINT(2) ZEROFILL

TINYINT型は符号付きの場合 -128 ~ 127、符号なし(UNSIGNED)の場合 0 ~ 255 の範囲の整数を格納できます。これは表示幅の指定に関係なく共通です。

ZEROFILLを使った検証テーブルの作成

まず、動作を確認するためのテーブルを作成します。テーブル作成のクエリは以下のとおりです。

mysql> create table tinyIntDemo
    -> (
    -> Number1 tinyint(1) zerofill,
    -> Number2 tinyint(2) zerofill
    -> );
Query OK, 0 rows affected (0.62 sec)

レコードの挿入

次に、INSERT文を使ってテーブルにレコードを挿入します。

mysql> insert into tinyIntDemo values(1,1);
Query OK, 1 row affected (0.12 sec)

SELECT文での確認

SELECT文でテーブル内のレコードを表示します。

mysql> select *from tinyIntDemo;

以下が出力結果です。両者の違いに注目してください。

+---------+---------+
| Number1 | Number2 |
+---------+---------+
|       1 |      01 |
+---------+---------+
1 row in set (0.00 sec)

結果の解説

出力結果を見ると、TINYINT(1)のカラムNumber1には「1」とそのまま表示されているのに対し、TINYINT(2)のカラムNumber2には「01」と表示されています。これは、ZEROFILLオプションによって指定された表示幅に満たない桁数の値が、先頭にゼロを埋められて表示されるためです。

つまり、表示幅の指定はZEROFILLと組み合わせた場合にのみ見た目上の差として現れるものであり、実際に保存される数値の内容や計算結果に影響を与えることはありません。

  1. MySQLのTINYINT(1)とブール型(BOOLEAN)の違いとは?

    結論から言うと、TINYINT(1)とブール型(BOOLEAN)の間に違いはありません。MySQLでは、BOOLまたはBOOLEANというキーワードは内部的にTINYINT(1)へと変換されます。つまり、BOOLやBOOLEANはTINYINT(1)の別名(シノニム)として扱われるのです。それでは、実際にテーブルを作成して確認してみましょう。BOOLEAN型でテーブルを作成するmysql> create table DemoTable ( isMarried Boolean ); Query OK, 0 rows affected (1.77 sec)次に、作成したテーブルの構造

  2. MySQLにおける「!=NULL」と「IS NOT NULL」の違いとは?

    MySQLでは、値を!=NULLと比較すると、結果は必ずNULLになります。つまり、!=NULLという比較は意味を持ちません。NULLは「不明な値」を表すため、通常の比較演算子では判定できないのです。NULL値を判定するには、専用の演算子であるIS NOT NULLを使用します。ここでは、!=NULLとIS NOT NULLの違いを実際に確認するために、まずテーブルを作成します。テーブルの作成まず、次のコマンドでテーブルを作成します。mysql> create table DemoTable1970     (