「種別」のint、varchar、textって何?

phpMyAdminでテーブルを作成しようとして、「種別」(列のデータ型)の選択メニューにあるint、varchar、textなどから何を選べば良いか迷った方。とりあえず、用途に応じて次の4種類を意識しておけば大丈夫でしょう。

○phpMyAdminでテーブル作成時に選択する典型的な種別(データ型)
数値 — 「int」を選択 → データ番号、数量など
文字列 — 「varchar」を選択して「長さ」に50などと入力 → 名前、タイトル、メルアドなど短い文字列
長い文字列 — 「text」を選択 → ブログ記事本文、メール本文など長い文字列(いわゆる「メモ型」)
日付 — 「datetime」を選択 → 投稿日時、最終更新日時など

あくまでとりあえずの4種類で、他にもデータ型はいくつもありますが、データ型の使い分けについてはいろいろと詳しくなってから検討しても遅くありません。

それぞれの種類ごとに似たような名前のデータ型があり、たとえば、文字列ではvarcharと似た名前のcharもあります。varcharがvar(可変長)+char(文字列)=可変長文字列であるのに対してcharは固定長です。

この意味は、データ型をchar(20)と定義すると常に20文字分の領域が確保されるのに対して、varchar(20)の場合、格納する文字列のサイズに合わせて領域が確保されるということです。

つまり、varcharではデータを格納するスペースを節約(データサイズを小さく)できる効果があります。charの場合は常に一定サイズが確保されるのでサイズの節約には役立ちませんが、項目の長さが一定サイズなのでデータ位置が規則的で探しやすくなり検索が速くなることが期待できます。

日付のデータ型にもいろいろな似たような名前のものがあり、TIMESTAMPという便利なデータ型もあります。データの追加、変更時に自動で日時を更新してくれる種別です。つまり、プログラムの中に「投稿日時の更新」のような処理を組み込む必要はありません。1からプログラミングやデータベースの学習をしたい方にとっては便利すぎるのであまりおすすめしませんが、「楽をしたい」という方は覚えておきましょう。

試しにTIMESTAMPを選んでみると、列のデフォルト値に「CURRENT_TIMESTAMP」、その他に「ON UPDATE CURRENT_TIMESTAMP」と表示されます。これは、データ追加時は現在の日時が追加され、データ変更時もその時点の日時を格納するという意味です。簡単に言えばデータ追加変更時の日時を自動で書き込んでくれるということです。

○phpMyAdminの種別でTIMESTAMPを選択した場合
phpMyAdminの種別でTIMESTAMPを選択した場合

シェアする

  • このエントリーをはてなブックマークに追加

フォローする