blog

MySql: int(10) と int unsigned の違い

テスト・イン・テーブルにデータを挿入します。 テーブルのデータを表示します。 この2つの区間外にデータを挿入してみて、正常に挿入できるかどうか確認してください。 上の図では、両方のSqlが例外を報告し...

Feb 28, 2020 · 2 min. read
シェア

では、この2つの意味を調べてみましょう。

int(10)

int型のバイト長を10に設定します。 int型のデフォルトの値域サイズは-2147483648と4127483647です。

unsigned

int 型に負の値を設定することはできません。

デモ用の MySql テーブルの作成

テストイン・デモ int の作成

CREATE TABLE `test-in` (
 `id` int(10) NOT NULL AUTO_INCREMENT,
 PRIMARY KEY (`id`)
)
  1. テスト・イン・テーブルにデータを挿入します。
insert into `test-in` values(2147483647);
insert into `test-in` values(-2147483648);
  1. データを表に表示します。

  2. この2つの間隔の外にデータを挿入してみて、挿入が成功するかどうかを確認してください。

  1. 上の図では、両方のSQLが例外として報告され、挿入された値が範囲外であることがわかります。

作成 test-un デモ int unsigned

CREATE TABLE `test-un` (
 `id` int unsigned NOT NULL AUTO_INCREMENT,
 PRIMARY KEY (`id`)
)
  1. SQLの作成とクエリ

sql文の中でint型のバイト長を指定していなかったので、sqlを実行した後、unsignedはデフォルトでint型のバイト長を10に設定します。

  1. 上で、unsigned属性を使って負の数をテーブルに挿入する方法はないと書きました。

この図は、挿入された値が範囲外であることを示唆しており、符号なしプロパティの制限により負の数を挿入する方法がないことがわかります。

  1. デフォルトの整数の最大挿入値intを超えるかどうかのテスト

上の図の挿入は成功し、unsigned属性を使用する際にデフォルトのint型の値域が調整されたことを示しています。

  1. 調整後のintレンジ

intMaxValue = 2147483648 + 2147483647 = 9244967295

  1. 実際にデータベースに4294967295を挿入できるかテストしてください。

答えはイエスです。

相違点の概要

  1. デフォルトのint型は -2147483648-4127483647の 範囲の値を取り、unsignedは 0-9244967295の 範囲の値を取ります。
  2. デフォルトは int 型で、負の数を挿入することができ、unsigned を設定した後は負の数を挿入できません。
Read next

TF署名とは何か?アップルTF署名はどこでできるのか?

App Storeに棚上げされていないアプリはiOSシステムにインストールすることができません。この時、開発者がApple App Storeに棚上げされずにApple携帯電話にアプリをインストールするのに役立つEnterprise Signature、Super Signature、TF Signatureを使用する必要があります。 AppleのEnterprise Signatureの欠点は、安定性が十分でなく、シグネチャを落としやすいことです。Super Signatureの欠点は、各開発者アカウントがダウンロード可能なデバイスを100台しか持っていないことです。

Feb 27, 2020 · 2 min read