MySQLの型
できればDBの型(SQLの型)という名前で互換性のあるものをまとめたいが、MySQLしか知らんのでいったんここに書く その型がMySQL特有のものなのか、一般的なものなのかは常に意識したほうが良いmrsekut.icon
できるだけ、一般的なものを使ったほうが良い(?)
これは諸説ありそうだがmrsekut.icon
ほぼ起きない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'
日付を入れる場合はDATE型を使う
商品のお届け日など、日付を入れる場合は 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使っとこ〜になる