Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

新人プログラマーの軌跡 #6 MySQLの型

More than 3 years have passed since last update.

初めて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の型について紹介いたしました。
調べてみると、差異の影響が予想できないものが多く
実際に使ってみないと分からないというのが本音です。

けど、様々な型が用意されているのはそれが便利だから。
意味が分からなくても辛抱強く頑張ろっと

pythago
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away