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
プログラマー
いつでも転職希望の業務経験7年目(2023時点)のエンジニアです。 仕事の合間にすこしずつ転職活動はしていますが、条件が合う場合ぜひTwitterなどでご連絡頂けると嬉しいです。 希望条件は基本的に残業は1日x1h程度。収入は一旦現状維持。 ある程度で構わないので、保守運用が管理されていて、精神的に安心して働ける環境が良いです。 経験言語はHTML、CSS、javascript、PHP、MySQL、Docker、Vuejs、Laravel このブログは完全に自作で静的ジェネレータで作りました。 この範囲で言えば React.js Gatsby.js GraphQLも経験があります。 最近はAIがどう社会に受け入れられ、日常になっていくのかの行く末が気になっています。 今までの人生で一番変化を感じて不思議な感覚です。