MySQLデータ型について
文字
3バイト文字の場合 | |||
CHAR(m) | 固定長文字型(文字数指定) | 0~255文字 | 255 |
VARCHAR(m) | 可変長文字型(文字数指定) | 0~65535バイト | 2万1845 |
TYNYTEXT | テキスト型 | 0~255バイト | 85 |
TEXT | テキスト型 | 0~65535バイト | 2万1845 |
MEDIUMTEXT | テキスト型 | 0~16777215バイト | 55万92405 |
LONGTEXT | テキスト型 | 0~4294967295バイト | 14億31655765 |
VARCHAR型とTEXT型
innodbではvarcharもtextも768バイト(約221字)まではレコード内に保存され、効率的に処理される。それ以上の場合、レコードとは別に保存され、データベースにはそのポインターのみが保存されます。
VARCHAR型では、文字列がデータベースに直接保存されます。TEXT型の文字列は、データベースとは別に保存され、データベースにはそのポインターのみが保存されます。そのため処理速度等の問題から、短い文字列であればVARCHARを使った方が、効率的に処理できると言えます。(isam)
MySQLのインデックス長は767バイトまで
utf8mb4は1文字ごとに最大4バイト使用する
1バイト a-zA-Z0-9記号(ascii)
2バイト アラブ文字・ギリシア文字など
3バイト 半角カタカナ・全角英数字
3バイト ひらがな・カタカナ・漢字
4バイト マイナーな漢字
4バイト 絵文字
数値
最大数 | UNSIGNED | サイズ | ||
TINYINT | -128~127 | 0~255 | 1 | |
SMALLINT | 32768~32767 | 3万 | 0~65535 | 2 |
MEDIUMINT | -8388608~8388607 | 838万 | 0~16777215 | 3 |
INT(INTEGER) | -2147483648~2147483647 | 21億 | 0~4294967295 | 4 |
BIGINT | -9223372036854775808~9223372036854775807 | 922京 | 0~18446744073709551615 | 8 |
INT(m)のmは最大表示幅(表示桁数)なのでZEROFILLを指定している時以外は関係ない
少数
型 | 範囲 | UNSIGNED | サイズ |
FLOAT | -3.402823466E+38 から -1.175494351E-38 0 | 1.175494351E-38 から 3.402823466E+38 0 | 4 |
DOUBLE, REAL | -1.7976931348623157E+308 から -2.2250738585072014E-308 0 | 2.2250738585072014E-308 から 1.7976931348623157E+308 0 | 8 |
DECIMAL, NUMERIC | 変動 |
日付
型 | 例 | サイズ |
---|---|---|
YEAR | 2018 (1901~2155) |
1 バイト |
DATE | 2022-11-07 | 3 バイト |
TIME | 22:07:17 | 3 バイト + 小数秒ストレージ |
DATETIME | 2022-11-07 22:07:17 | 5 バイト + 小数秒ストレージ |
TIMESTAMP | 166780264 | 4 バイト + 小数秒ストレージ |