【MySQL】char と varchar について色々調べてみた。

公開日: : MySQL , , , , ,

MySQL の設定をしていて、char にするべきか varchar にするべきか、また、() で指定する文字数は何が最適なのか分かっていなかったので、色々と調べてみたときのメモです。

char

char 型は、文字列を格納する固定長のデータ型となります。

固定長なので、例えば car(10) とすると必ず 10 バイト分の領域が確保されます。で、実際のデータが格納されるときは、10 バイトのうちの空いた部分(文字列以外)にはスペースが格納されることになります。また、文字数は 0 ~ 255 まで設定可能となります。

そのため、データの長さがある程度決まっているもの(氏名やIDなど)に対しては 、char 型を使う方が良いみたいです。

varchar

varchar 型は、文字列を格納する可変長のデータ型となります。

可変長なので、例えば varchar(11) としても、実際の文字列が入ったバイト数しか確保されません。ただし、1 バイト分は文字数を格納するために使われます。そのため、最大 10 文字のデータの場合、varchar(11) として設計し、1バイト余分に必要となります。また、文字数は 0 ~ 65535 まで設定可能となります。

なので、データの長さがばらばらのものを扱う場合は、varchar 型を使う方が良いみたいです。

文字数の指定について

char 型 と varchar 型 の文字数の指定についてです。今まで何が最適なのか悩むことが多かったのですが、かなりシンプルでした。

char 型は、対象データの最大文字数を指定

char 型は、固定長なので、対象データの取りうる最大値のぎりぎりの値を指定するのが良いです。

varchar 型は、varchar(255) と指定

varchar 型は、254文字までのデータなら varchar(255) としておけば問題ないようです。それは、可変長のため、実際に入ったデータ分しか容量を消費しないので、長めに文字数を指定しても大丈夫だからです。

varchar(255)と varchar(256) の違いについて

varchar(255) と varchar(256) の違いについても調べてみました。

varchar の説明のところで、「1 バイト分は文字数を格納するために使われます」と書きましたが、 varchar(256) とすると、その文字数を格納するために、2 バイト分必要になるようです。なので、varchar(256) とすると varchar(255) より 1バイト分長く容量を消費するにもかかわらず、実際に格納できる文字数はどちらも 254文字となります。

そのため、ほとんど違いはありませんが、特に理由がなければ varchar(255) としておくのが良いみたですね。

関連記事

【MySQL】Windows にインストール時のエラー対処方法。

Windows7 に MySQL の最新版(当時 ver 5.6.23) をインストールする際にエラ

記事を読む

【MySQL】データベースをバックアップしてデータ移行する方法【dump】

MySQL でデータをバックアップ(保存)し、復元したときのメモです。 バックアップ(保存) 全

記事を読む

【MySQL】 文字コードを utf-8 に変更する方法。

Windows の MySQL の文字コードを UTF-8 に変更した際のメモです。 なぜ u

記事を読む

【MySQL Workbench】複数のデータベースをまとめて移行する方法。

MySQL の GUIツールである「MySQL Workbench」を使って、データベースをそのまま

記事を読む

【MySQL】パス(PATH)を通す。

MySQL のパス(PATH)を通したときのメモです。 MySQLをコマンドプロンプトでどこの

記事を読む

【MySQL】データベースを作成し、テーブルを追加する方法。

Windows 環境で MySQL のデータベースを作成し、ユーザを作成し、テーブルを追加したときの

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

【MT4】日付と時間を指定してPCを自動起動させる方法【DELL】

今回は、日付と時間を指定してPCを自動的に起動させる方法について紹介し

【MT4】PCが再起動しても自動的に起動させる方法【FX自動売買】

今回は、FX 自動売買用のツールの MT4 で、実行しているPCが再起

【MT4】複数口座を同時に起動させる方法【FX・CFD】

今回は、MT4(メタトレーダー4)で複数口座を同時にログインし、起動さ

【MQL4】スプレッドを取得する方法【MT4】

今回は、MQL4 で対象通貨ペアのスプレッドを取得する方法について紹介

【楽天CFD】取引口座を開設してみた【MT4】

今回は、楽天CFDの取引口座(本番口座)の開設方法について紹介します。

→もっと見る

PAGE TOP ↑