MySQLの型
できれば
DBの型(
SQLの型)という名前で互換性のあるものをまとめたいが、MySQLしか知らんのでいったんここに書く
その型がMySQL特有のものなのか、一般的なものなのかは常に意識したほうが良い

できるだけ、一般的なものを使ったほうが良い(?)
これは諸説ありそうだが

ほぼ起きないDBの変更のために、型を緩めるべきか微妙だと思うし
大きく分けると以下の3つ
文字
時刻
文字列
n
は文字列の長さ
もし文字列が n
よりも短かった場合、文字列の右側の末尾にスペースで補完される
0文字以上255文字以下
CHAR型と違って、 n
よりも短かった場合、データに合わせた文字列として可変長で保存される
BINARY
TINYBLOB
BLOB
MEDIUMBLOB
LONGBLOB
VARBINARY
BLOB
TEXT
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
SET
時刻系
DATE
日付値のみ
時刻部分が不要な場合に使用する
format
'YYYY-MM-DD'
範囲
'1000-01-01'
〜 '9999-12-31'
> 商品のお届け日など、日付を入れる場合は DatetimeやTimestamp型ではなくDATE型を使うようにします。DatetimeやTimestampはタイムゾーンの影響を受けるためです。 ref
DATETIME
日付と時刻の両方を必要とするときに使用する
format
'YYYY-MM-DD HH:MM:SS'
範囲
'1000-01-01 00:00:00'
〜 '9999-12-31 23:59:59'
TIMESTAMP
insertまたはupdate操作に対して、現在の日付と時刻を自動的に指定することができる。TIMESTAMP型のカラムが複数ある場合は、最初のカラムのみが自動で更新される。
形式は表示サイズによって異なる・・・だったんだけど4.1系以降では'YYYY-MM-DD HH:MM:SS'の形式となり、タイムスタンプ長のサポートは中止されている
TIME
YEAR
サイズを無駄に大きく取ることのデメリットは?
dbに限った話ではないが
それを知らないと、もしもめっちゃ増えたときのために、intじゃなくて、bigint使っとこ〜になる