初めてMySQLを触って3週間。
触らなくなって1週間が経ちました。
このままではせっかく入れた知識が抜けていってしまいます・・・
そこで記憶が行方不明になってしまわぬ為にも、
基礎的なMySQLの型について復習しておきます。
MySQL
数値型
int
- 整数を格納する。
- 他にも4種(tinyint・smallint・mediumint・bigint)あり、格納可能な数字の範囲が異なる。
- unsignedで整数のみの指定で範囲は正に限定される。また数値の範囲は不変。
- zerofillで足りない桁数分、0を追加する。 ※zerofillはunsignedの拡張である。
接尾語としてintがついているので覚えやすい。
double
- 小数を格納する。
- floatもあるが格納範囲が異なる、doubleの方が大きい。
- double(α,β)の形で指定。αは全体の桁数、βは小数点以下の桁数。
- 指定した小数の桁数以上を格納してもエラーは出ないが、整数部分の桁数が格納可能桁数より大きい場合はエラーとなる。
- unsigned・zerofillあるが範囲は減少する。
日付・時間型
5種類(timestamp・time・year)あるが、2種類を扱う。
date
- フォーマット: 'YYYY-MM-DD'
datetime
- フォーマット: 'YYYY-MM-DD HH:MM:SS'
範囲はどちらも1000年 - 9999年までである。ちなみに '2016-06-26 05:16:09' を '2016-6-26 5:16:9' と書くことも出来るので、状況によって使い分けたほうが簡略化できる。
網羅する範囲が広く、他の3種類はそこまでの網羅性がないので上の2つを使えばよいのかなと。
文字列型
char・varchar
- varはvaryからきており変化を意味する。→ charは固定長・varcharは可変長である。
- 表示されるときは変わらない。
- charは指定した固定長より、小さなデータを格納すると末尾にスペースを自動的に挿入する。
- データ容量から見ればvarcharに分があるのだが、charは全て同じ容量で扱うために、処理スピードの向上が見込める。
- charやvarcharの後ろには文字セットと照合順序を記述することが出来る。
-
SHOW CHARACTER SET;
で文字セット一覧を参照。 -
mysql> show collation like 'utf8%';
で照合順序を参照できる。
似た型としてtextがある。
text
- varcharのバイト数を指定しなかったものと変わりない。
binary・varbinary
-どちらもバイナリデータとして格納されている。
似た型としてblobがある。
blob
- varbinaryのバイト数を指定しなかったものと変わりない。
enum・set
- 選択数の違いがあり、enumは1つ・setは複数選択することが出来る。
- {}内の選択肢に''を付け忘れるとエラー。(このせいで3時間も悩んでいたので、もう忘れないです。)
まとめ
MySQLの型について紹介いたしました。
調べてみると、差異の影響が予想できないものが多く
実際に使ってみないと分からないというのが本音です。
けど、様々な型が用意されているのはそれが便利だから。
意味が分からなくても辛抱強く頑張ろっと