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」が広く使われています。
-
C++のintとlongの違いとは?サイズ・範囲・使い分けを徹底解説
はじめにC++には整数を扱うためのデータ型が複数用意されており、その中でも特によく使われるのが「int」と「long」です。どちらも整数値を格納できますが、メモリサイズや扱える数値の範囲が異なります。本記事では、それぞれの特徴と具体的なコード例、そして両者の違いについてわかりやすく解説します。 int型とはint型は整数値を格納するための基本的なデータ型です。符号付き(signed)と符号なし(unsigned)の両方があり、一般的な環境では32ビット(4バイト)です。long型と比べて必要なメモリ領域が小さく、日常的な整数処理で最も広く使われています。変数を宣言する際はキーワード「int」を
-
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ビット整数を保持します。コンパイルされた結果は完全に同一のコードになるため、実行時のパフォーマンスや動作に一切の違いはありません。唯一の小さな違いわずかな違いとして、