#はじめに
データベースのデータ型ってメッチャ種類があって、ややこしいですよね。
当方、まだまだプログラミング駆け出しの身なので、
「えっ、この場合はどれを使えばいいの?」
ってなることが非常に多く、その度にGoogle検索をするのですが、丁度良い解説に巡り会えなかったので、アウトプットも兼ねて記事を書きます!
よろしくお願いします。
#データ型種類一覧
データ型 | 種類 |
---|---|
integer | 整数型(4バイト) |
bigint | 整数型(8バイト) |
decimal | 固定長整数型(精度の高い小数) |
float | 数値(浮動小数点数) |
string | 文字列(1 〜 255文字) |
text | 長い文字列(1 〜 4,294,967,296文字) |
date | 日付(1000-01-01 〜 9999-12-31) |
datetime | 日付と時刻(1000-01-01 00:00:00.000000 〜 9999-12-31 23:59:59.999999) |
time | 時刻 (-838:59:59 〜 838:59:59) |
timestamp | タイムスタンプ ('1970-01-01 00:00:01' UTC ~ '2038-01-19 03:14:07' UTC) |
binary | バイナリ文字列型 |
boolean | 真偽 |
primary_key | プライマリーキー(主キー) |
本当は全てに対して解説をするべきですが、個人的に気になった部分のみ取り上げてます!
載っていない項目に関しては、ご自身でググってみてください。
#integerとbigintってどう違うの?
integer:整数型(4バイト)
bigint:整数型(8バイト)
いきなり最初からよく分かりませんね。
どうやら、昔は整数型といえばintegerのみだったのですが、大規模なSNSサイト等になると、会員数だけでもかなりの数になってしまい、integerでは対応できなくなってしまったのが背景にあるようです。
そこで、Rails5.1からidカラムがbigintに変更になるようになりました。
新規でアプリケーションを作成する際は、特段問題が発生しないのですが、既存のアプリでintegerを使用していた場合、システム補修時にエラーが発生することがあるようです。
#textとstringってどういう風に使い分けるの?
一般的な分類方法では、以下のように使用されるのが多いです。
string(1 〜 255文字)
・名前
・住所
・パスワード
text(1 〜 4,294,967,296文字)
・コメント
・投稿文
作成するサイトによって事情は様々だと思いますので、あくまで一例ということで。
#timestampとdatetimeって何が違うの?
timestamp:タイムスタンプ ('1970-01-01 00:00:01' UTC ~ '2038-01-19 03:14:07' UTC)
datetime:日付と時刻(1000-01-01 00:00:00.000000 〜 9999-12-31 23:59:59.999999)
皆様はご存知でしょうか、2038年問題を!
よく見れば気付く方もいると思いますが、timestampは現状、2038年までしか対応していないのです...
なぜこうなったのかは分かりませんが、日時を記録する時には、datetime
を使うという方向性にシフトしているようです。
2038年は世界が荒れそうですね。
#binaryとは何のこと?
そもそも「バイナリ」とはコンピュータ用語で、データが「0」と「1」で表現されているデータ形式です。
Railsでは、「テキストではない情報でデータが書かれているファイル」という認識になるかもしれません。
バイナリファイルの主なものとしては、
・ 音声ファイル
・ 画像ファイル
・ 圧縮ファイル
などがあります。
バイナリデータは、人間が読み取れる文字で記載してあるわけではありません。
そのため、テキストエディタではバイナリデータを開くこともできません。
使いどころがよく分かりませんね。
#booleanとは?
これもよく分からない概念ですよね。
一般的には、真(true)と偽(false)のような2つの状態を表すデータ型を表します。
#おわりに
データ型だけには、かなりの種類があるんだな、ということを再認識。
こうやって自分でまとめてみないと、なかなか知り得なかったこともあって、非常に勉強になりました。
Comments
Let's comment your feelings that are more than good