1. ホーム
  2. mysql

3. MySQL データ型

2022-02-21 15:04:54
<パス

MySQLのデータ型

MySQL のデータフィールドのタイプを定義することは、データベースを最適化するために非常に重要です。

MySQLは様々な型をサポートしており、大きく分けて、数値型、日付/時刻型、文字列(キャラクタ)型の3つがあります。

数値の種類

(1) 整数型

  • 整数型の数値は、デフォルトで正の整数と負の整数の両方を表すことができます(この場合、符号付き数値と呼びます)。0と正の整数だけを表現したい場合は、unsignedキーワード "unsigned"を使用して整数型を変更することができます。
  • 各クラスの記憶容量と値の範囲。
<テーブル タイプ サイズ 範囲(符号付き) レンジ(符号なし) 使用方法 TINYINT 1バイト (-128, 127) (0, 255) 小さな整数値 SMALLINT 2バイト (-32 768, 32 767) (0, 65 535) 大きな整数値 メディアミント 3バイト (-8 388 608, 8 388 607) (0, 16 777 215) 大きな整数値 INTまたはINTEGER 4バイト (-2 147 483 648, 2 147 483 647) (0, 4 294 967 295) 大きな整数値 BIGINT 8バイト (-9,223,372,036,854,775,808, 9 223 372 036 854 775 807) (0, 18 446 744 073 709 551 615) 非常に大きな整数値

(2) 10進数型

  • decimal(length, precision) は,精度が決定される(小数点以下の桁数が決定される)小数の種類を表すために用いられる。lengthは小数の最大桁数を決定し,precisionは精度(小数点以下の桁数)を設定するために用いられる。
  • 例:10進数(5,2)は、10進数の値域:999.99~999.99 10進数(5,0)は、-9999~999999 整数という意味です。
  • 各カテゴリーの記憶容量と値の範囲。
<テーブル タイプ サイズ 範囲(符号付き) レンジ(符号なし) 使用方法 フロート 4バイト (-3.402 823 466 e+38, -1.175 494 351 e-38), 0, (1.175 494 351 e-38, 3.402 823 466 351 e+38) 0, (1.175 494 351 e-38, 3.402 823 466 e+38) 単精度
浮動小数点数 DOUBLE 8バイト (-1.797 693 134 862 315 7 e+308, -2.225 073 858 507 201 4 e-308), 0, (2.225 073 858 507 201 4 e-308, 1.797 693 134 862 315 7 e+308) 0, (2.225 073 858 507 201 4 e-308, 1.797 693 134 862 315 7 e+308) 倍精度
浮動小数点数 デシマル DECIMAL(M,D)の場合、M>DならM+2、そうでなければD+2 MとDの値による M と D の値に依存する。 小さい値

日付と時刻のタイプ

時刻の値を表す日付と時刻の型は、DATETIME、DATE、TIMESTAMP、TIME、YEARです。

各時間型には有効な値の範囲と、MySQL が表現することが合法でない値を指定するときに使用する "ゼロ" 値があります。

TIMESTAMP型は、後述する独自の自動更新機能を備えています。

<テーブル タイプ サイズ
(バイト) 範囲 フォーマット 使用方法 日付 3 1000-01-01/9999-12-31 YYYY-MM-DD 日付の値 時間 3 '-838:59:59'/'838:59:59' HH:MM:SS 時間値または持続時間 年 1 1901/2155 YYYY 年 値 データタイム 8 1000-01-01 00:00:00/9999-12-31 23:59:59 yyyy-mm-dd hh:mm:ss 日付と時刻の混在した値 タイムスタンプ 4 1970-01-01 00:00:00/2038
終了時刻は、最初の 2147483647 秒、日本標準時 2038-1-19 11:14:07 日本時間2038年1月19日午前03時14分07秒 yyyymmdd hhmmss 日付と時刻の混在した値、タイムスタンプ

文字列の種類

文字列型とは、CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM、SETを指します。このセクションでは、これらの型の動作とクエリでの使用方法について説明します。

<テーブル タイプ サイズ 使用 CHAR 0〜255バイト 固定長文字列 VARCHAR 0-65535バイト 可変長文字列 TINYBLOB 0〜255バイト 最大255文字までのバイナリ文字列 TINYTEXT 0〜255バイト 短いテキスト文字列 BLOB 0-65 535バイト バイナリ形式の長いテキストデータ テキスト 0-65 535バイト 長いテキストデータ メディアムブロック 0~16 777 215 バイト バイナリ形式の中長テキストデータ MEDIUMTEXT 0~16 777 215 バイト 中長テキストデータ LONGBLOB 0-4 294 967 295 バイト バイナリ形式の極めて大きなテキストデータ LONGTEXT 0-4 294 967 295 バイト 非常に大きなテキストデータ

備考 : char(n) や varchar(n) の括弧内の n はバイト数ではなく文字数を表し、例えば CHAR(30) は 30 文字を格納します。

CHAR型とVARCHAR型は似ていますが、保存と取り出しの方法が異なります。また、最大長や末尾の空白を保存するかどうかの点でも異なります。保存や取り出しの際に大文字と小文字の変換は行われません。

BINARYとVARBINARYはCHARとVARCHARに似ていますが、非バイナリ文字列の代わりにバイナリ文字列を含むという点が異なります。つまり、文字列の代わりにバイト文字列を格納します。つまり、文字セットを持たず、列の値であるバイトに基づいて数値のソートと比較を行います。

BLOBは、可変量のデータを保持できる大きなバイナリオブジェクトである。BLOBには4つのタイプがある。TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOBの4種類があり、それぞれ保持できるストレージの範囲が異なる。

TEXTは4種類あります。TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXTの4つのBLOBタイプに対応し、状況に応じて保存できる最大長が異なる。