MinEMemO
🏷️「MySQL(MariaDB) 」Tag 記事一覧(1 post)
【MySQL(MariaDB)】intの桁設定について

2020-05-19

はじめに 先日ひさしぶりにデータベースのテーブル作成をしたときに INT の桁数ってどういう意味だったけ?となったので調べました。 先に答えをいうと  ZEROFILLを設定した場合に有効な表示桁数  ということになります。 INT型には、TINYINT、SMALLINT、MEDIUMINT、BIGINT等いくつかありますが、本記事はよく使うINTのみ記載しています。 上記とINTの違いは保存できる数値の大きさになります。 INT型の桁数について まずサンプルで以下のような設定でテーブルを作成しました。 table_kouzou 今回気になったのは (3) の部分。 調べてすぐ出てくるのは 桁数という回答。 実際に3桁になるのか登録して確認。 table_data01 うん。4桁入ってしまっている。 こうなると(3)の桁数の意味がわからない。 実際何なのかしらべたら、(3)は 表示桁数 とのこと。 表示桁数っていっても実際は4桁はいってる!ってなりますが、この桁数の設定は ZEROFILLという0埋めを設定 したときに始めて意味があるものらしいです。 なるほど..さっそく試してみよう! 構造>>変更 から 属性を「UNSIGNED ZEROFILL」  に変えます。 table_data02 すると3桁もないデータ「1」は以下のように3桁で0埋めになります。 table_data03 上記画像のとおり、(3)は 「UNSIGNED ZEROFILL」を適用したときの桁数 ということだったんですね。 じゃあINTはどこまでの数値が入るの? という疑問ですが、初期設定では 4バイトの「-2,147,483,648 ~ 2,147,483,647」の範囲 が入ります。 2,147,483,647を超えた場合は2,147,483,647 で登録されます。 試しに2147483647+1の2147483648をINSERTしてみます。 SQL INSERT INTO ` int_test ` ( ` test ` ) VALUES ( 2147483648 ) 結果は 2147483648 は 2147483647 で登録されています。 table_data04 これで(3)の桁数の意味がわかってすっきりしました。 なお桁数を設定しなかった場合は(11)で設定されます。 (11)はデフォルトらしいのですが、個人的には正直ZEROFILLを使うことは少なそうなので(11)でいいか。という結論になりました。 またZEROFILLを設定した場合はかならずUNSIGNED になります。 以下参考までに。 UNSIGNEDとは INTの初期設定では4バイトの「-2,147,483,648 ~ 2,147,483,647」の範囲で数値の登録が可能です。 UNSIGNEDを設定した場合は  「0 ~ 4,294,967,295」の範囲  で登録が可能になります。 データーベース系は意外とネット上に情報が少ないので、難しいです! 日々精進!!
profile_icon
taka
プログラマー
2017年11月から業務でPHPを触りだしたエンジニアです。 業務経験8年程度。 2022年から「要求整理→設計→実装→テスト→リリース」と開発のステップをきちんと経験したく、 様々な会社を経験しました。 現職が自社案件枯渇、本社エリア以外のSES案件の繋がりがなしと急に発覚し、急遽強制的に転職活動中。 現職をやめるつもりはなかったし、転職は本当に最後にしたいのでもしよければお声がけください。 【GitHub コードサンプル】 https://github.com/tm-qc - Docker、MVC、CRUD、認証、テストなどのサンプルコード(Laravel、ASP.NET CORE) - 経験PJ詳細まとめ