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

MySQLのintとintegerの違いは何?実例でわかる両者の関係

MySQLでは、intとintegerはまったく同じ意味を持つ同義語(シノニム)です。MySQL 5.0以降、どちらのキーワードを使っても内部的にはint(11)として扱われ、保存できる値の範囲もまったく同じになります。

この記事では、実際にテーブルを作成して動作を確認しながら、intとintegerの関係を詳しく解説します。

int型でテーブルを作成する

まず、int型のカラムを持つテーブルを作成します。

mysql> create table IntDemo
    -> (
    -> Id int
    -> );
Query OK, 0 rows affected (1.04 sec)

作成したテーブルの構造をdescコマンドで確認してみましょう。

mysql> desc IntDemo;

実行結果は以下のとおりです。

+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| Id    | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.06 sec)

注目すべきは「Type」列です。intと指定したにもかかわらず、内部ではint(11)として表示されています。これはintegerで定義した場合と同じ範囲(-2147483648〜2147483647)の値を格納できることを意味します。

int型カラムへのデータ挿入

次に、int型の最大値と最小値をレコードとして挿入します。

mysql> insert into IntDemo values(2147483647);
Query OK, 1 row affected (0.20 sec)

mysql> insert into IntDemo values(-2147483648);
Query OK, 1 row affected (0.42 sec)

SELECT文ですべてのレコードを表示します。

mysql> select *from IntDemo;

実行結果:

+-------------+
| Id          |
+-------------+
| 2147483647  |
| -2147483648 |
+-------------+
2 rows in set (0.00 sec)

符号付きint型の範囲である-2147483648から2147483647までの値が、問題なく保存できていることがわかります。

integer型でテーブルを作成する

続いて、integer型を使用して同じ構造のテーブルを作成します。

mysql> create table IntegerDemo
    -> (
    -> Id integer
    -> );
Query OK, 0 rows affected (0.93 sec)

こちらもdescコマンドでテーブル構造を確認します。

mysql> desc IntegerDemo;

実行結果:

+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| Id    | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

ここでも重要なポイントがあります。integerで定義したのに、Type列にはint(11)と表示されています。つまり、integerは単なるintの別名であり、MySQL内部では同一のデータ型として扱われるのです。

integer型カラムへのデータ挿入

integer型もint型とまったく同じ範囲の値を受け付けます。最大値と最小値を挿入して確認しましょう。

mysql> insert into IntegerDemo values(2147483647);
Query OK, 1 row affected (0.11 sec)

mysql> insert into IntegerDemo values(-2147483648);
Query OK, 1 row affected (0.27 sec)

SELECT文で全レコードを表示します。

mysql> select *from IntegerDemo;

実行結果:

+-------------+
| Id          |
+-------------+
| 2147483647  |
| -2147483648 |
+-------------+
2 rows in set (0.00 sec)

まとめ:intとintegerに機能上の違いはない

検証結果から、以下のことが明確になりました。

  • intとintegerは完全な同義語であり、どちらを使っても動作に違いはない
  • どちらで定義しても、内部的にはint(11)として認識される
  • 格納できる値の範囲も同一(符号付きの場合:-2147483648〜2147483647)

そのため、SQL文を記述する際は、チームやプロジェクトのコーディング規約に合わせて、どちらか一方に統一して使用するとよいでしょう。一般的には短く書ける「int」が広く使われています。

  1. C++のintとlongの違いとは?サイズ・範囲・使い分けを徹底解説

    はじめにC++には整数を扱うためのデータ型が複数用意されており、その中でも特によく使われるのが「int」と「long」です。どちらも整数値を格納できますが、メモリサイズや扱える数値の範囲が異なります。本記事では、それぞれの特徴と具体的なコード例、そして両者の違いについてわかりやすく解説します。 int型とはint型は整数値を格納するための基本的なデータ型です。符号付き(signed)と符号なし(unsigned)の両方があり、一般的な環境では32ビット(4バイト)です。long型と比べて必要なメモリ領域が小さく、日常的な整数処理で最も広く使われています。変数を宣言する際はキーワード「int」を

  2. C#のintとInt32の違いとは?エイリアスの仕組みと使い分けを解説

    C#では、32ビット整数を扱う方法として「int」と「Int32」の2つの記述があります。一見すると別々の型のように見えますが、実は本質的な違いはほとんどありません。intとInt32の基本的な関係Int32は.NETフレームワークが提供する構造体(System.Int32)であり、intはC#言語においてInt32に付けられたエイリアス(別名)です。Int32 x = 5;int x = 5;上記の2つの宣言は、どちらも同じ32ビット整数を保持します。コンパイルされた結果は完全に同一のコードになるため、実行時のパフォーマンスや動作に一切の違いはありません。唯一の小さな違いわずかな違いとして、