序文: Integer は MySQL で最もよく使用されるフィールド型の 1 つで、通常は整数を格納するために使用されます。その中でも int は最もよく使用される整数型です。int 型を本当に理解していますか?この記事では、int 型に関連する知識を習得し、他の整数フィールドの使用方法についても紹介します。 1. 整数の分類と格納範囲
テーブルには、フィールド タイプ、占有バイト数、符号付き範囲、符号なし範囲の 4 つの列があります。
次に、int 型が 4 バイトを格納できるという事実に基づいて、int UNSIGNED 型に格納できる最小値は 0 で、最大値は 4294967295 であると計算できます (つまり、4B = 32b、最大値は 32 個の 1 で構成されます。つまり、4294967295 を 2 進数に変換すると 32 個の 1 になります)。 2. 保管範囲テスト mysql> CREATE TABLE test_int ( -> col1 TINYINT, -> col2 SMALLINT, -> col3 MEDIUMINT, -> col4 INT, -> col5 BIGINT -> ) ENGINE = INNODB DEFAULT CHARSET = utf8; クエリは正常、0 行が影響を受けました (0.01 秒) mysql> show create table test_int\G**************************** 1. 行 **************************** テーブル: test_intCreate テーブル: CREATE TABLE `test_int` ( `col1` tinyint(4) DEFAULT NULL, `col2` smallint(6) DEFAULT NULL, `col3` mediumint(9) DEFAULT NULL, `col4` int(11) DEFAULT NULL, `col5` bigint(20) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf81 row in set (0.00 秒) mysql> insert into test_int values (1234,123456,12345678,12345678901,12345678901234567890); クエリは正常、1行が影響を受け、5つの警告(0.00秒) mysql> insert into test_int values (-1234,-123456,-12345678,-12345678901,-12345678901234567890); クエリは正常、1行が影響を受け、5つの警告(0.01秒) mysql> show warnings;+---------+------+----------------------------------------------+| レベル | コード | メッセージ |+---------+------+-----------------------------------------------+| 警告 | 1264 | 行 1 の列 'col1' の値が範囲外です || 警告 | 1264 | 行 1 の列 'col2' の値が範囲外です || 警告 | 1264 | 行 1 の列 'col3' の値が範囲外です || 警告 | 1264 | 行 1 の列 'col4' の値が範囲外です || 警告 | 1264 | 行 1 の列 'col5' の値が範囲外です |+---------+------+-----------------------------------------------+セットに 5 行あります (0.01 秒) mysql> select * from test_int;+------+--------+----------+-------------+--------------+----------------------+| col1 | col2 | col3 | col4 | col5 |+------+--------+----------+-------------+----------------------+| 127 | 32767 | 8388607 | 2147483647 | 9223372036854775807 || -128 | -32768 | -8388608 | -2147483648 | -9223372036854775808 |+------+--------+----------+-------------+----------------------+ 上記のテストから、さまざまな整数型に最大保存範囲がある場合、保存された数値のサイズが保存範囲内にない場合、MySQL はアラームを生成しますが、数値を挿入することはでき、デフォルト値は保存できる最大値または最小値に切り捨てられることがわかります。 3. int(M) の M の意味とゼロフィルの使用 よく次のような文を耳にします。int(M) の M は最大表示幅を表します。「最大表示幅」に対する私たちの最初の反応は、フィールドに格納できる値の最大幅です。int(1) を作成すると、データ 10 を格納できないと考えます。実際、これは意味が異なります。 mysql> CREATE TABLE test_int_zerofill ( -> col1 INT(5) ZEROFILL, -> col2 INT ZEROFILL, -> col3 INT(5) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; クエリは正常、0行が影響を受けました (0.01秒) mysql> show create table test_int_zerofill\G**************************** 1. 行 **************************** テーブル: test_int_zerofillCreate テーブル: CREATE TABLE `test_int_zerofill` ( `col1` int(5) unsigned zerofill DEFAULT NULL, `col2` int(10) unsigned zerofill DEFAULT NULL, `col3` int(5) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf81 row in set (0.00 sec) mysql> insert into test_int_zerofill values (12,12,12); クエリは正常、1行が影響を受けました (0.00 秒) mysql> select * from test_int_zerofill;+-------+------------+------+| col1 | col2 | col3 |+-------+------------+------+| 00012 | 000000012 | 12 |+-------+------------+------+セット内の行が 1 個あります (0.00 秒) ゼロフィルの適用シナリオは何かと尋ねる学生もいるかもしれません。最も一般的なのは、月や日付の前に0を追加して、表示をより標準化することです。 CREATE TABLE `t_zerofill` ( `year` year(4) DEFAULT NULL、 `month` int(2) unsigned zerofill DEFAULT NULL、 `day` int(2) unsigned zerofill DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; mysql> insert into t_zerofill values (2019,6,5); クエリは正常、1行が影響を受けました (0.01秒) mysql> insert into t_zerofill values (2019,6,18); クエリは正常、1行が影響を受けました (0.00 秒) mysql> insert into t_zerofill values (2019,10,1); クエリは正常、1行が影響を受けました (0.00 秒) mysql> insert into t_zerofill values (2019,11,11); クエリは正常、1行が影響を受けました (0.01秒) mysql> select * from t_zerofill;+------+-------+------+| 年 | 月 | 日 |+------+-------+------+| 2019 | 06 | 05 || 2019 | 06 | 18 || 2019 | 10 | 01 || 2019 | 11 | 11 |+------+-------+------+セットに 4 行あります (0.00 秒) 4. タイプの選択 上記の導入後、さまざまな整数フィールドの選択がはるかに簡単になります。もちろん、ストレージを最小化する原則に沿って、SMALLINT よりも TINYINT を選択し、INT よりも MEDIUMINT を選択する必要があります。ただし、すべてはビジネスを満たすという前提の下で行われるべきであり、可能な限り占有バイト数の少ない型を選択する必要があります。正の整数のみを格納するように指定されているフィールドには、unsigned 属性を追加して格納範囲を拡張することができます。たとえば、フィールドに AUTO_INCREMENT 属性がある場合、int 型に unsigned 属性を追加することができます。 上記はMySQL INT型の完全分析の詳細な内容です。MySQL INT型の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: React のグローバル状態管理の 3 つの基本メカニズムの調査
>>: Ubuntu での CUDA と CUDNN のインストールとアンインストールの実装
1. 背景一般的に、データ ウェアハウス環境では、row_number 関数を使用して特定のディメン...
目次1. まずプロジェクトにechartsをインストールします2. echartsに縦棒グラフテンプ...
目次1. Vueの概要Vue公式サイトMVVM アーキテクチャ パターンVue の紹介2. Vueを...
今日は、ネイティブ JS で実装された画像マーキー効果を紹介します。効果は次のとおりです。 実装され...
IEでのRGBAとフィルター値の変換RGBA 透明度値IE フィルター値0.1 19 0.2 33 ...
JS タイマーを使用して、要素に移動する効果のあるメソッドを作成します。実装のアイデアは、まず要素の...
作業の過程で、暗黙的な変換が発生するケースが数多くあります。暗黙的な変換は、クエリの速度低下を引き起...
JS の async 関数と await キーワード 関数ヘルワールド() { 「こんにちは!美しい...
目次環境設定の概要1.K8Sとは何ですか? 2. K8S を使用する理由3. K8S を使用する利点...
サービス.xml Server.xml 構成ファイルは、コンテナー全体を構成するために使用されます。...
バグ図のように、削除文とパラメータをデータベースにコピーして実行し、2つのデータを削除しようとしたの...
実際のプロジェクト開発では、多数のクエリや挿入、特にマルチスレッド挿入など、データベースに大きな負荷...
ここ数日ブログを更新していませんでした。簡単な HTML+CSS プロジェクトを終えたところです。数...
HTML テーブルを使用する場合、行間隔を変更する必要がある場合がありますが、余白、パディング、折り...
制約制約によりデータの整合性と一貫性が確保される制約はテーブルレベルの制約と列レベルの制約に分けられ...