データ型

テキスト型 てきすとがた

文字列VARCHARCHARTEXTデータベース文字コード
テキスト型について教えて

簡単に言うとこんな感じ!

テキスト型は「文字を入れておく引き出し」だよ!数字や日付じゃなく、名前・住所・コメントみたいな「文章や言葉」を保存するためのデータ型なんだ。「数字の1」と「文字の1」は全然別モノ扱いになるのがポイント!


テキスト型とは

テキスト型(文字列型 とは、データベースプログラミング言語において「文字や文章を格納するためのデータ型」のことです。人名・住所・商品説明・メールアドレスなど、計算に使わない情報を扱うときに使います。

数値型(整数・小数)や日付型と並ぶ、最も基本的なデータ型のひとつです。一口にテキスト型といっても、最大文字数の上限固定長か可変長かによってさらに細かく種類が分かれており、用途に合わせて使い分けることがシステム設計の要になります。

実務では「このフォームの入力欄のデータをDBにどう持つか」という場面で必ず登場します。適切な型を選ばないと、ストレージの無駄遣いや検索速度の低下、文字化けといったトラブルに直結するため、発注・設計の段階でエンジニアと確認しておきたいポイントです。


テキスト型の種類と使い分け

データベース(SQL)でよく登場するテキスト型を整理します。

型名特徴最大長の目安主な用途
CHAR(n)固定長。nに満たない場合はスペース埋め〜255文字郵便番号・国コードなど長さが決まっているもの
VARCHAR(n)可変長。実際の長さ分だけ保存〜65,535バイト氏名・メールアドレス・タイトルなど
TEXT非常に長い文章を保存できる大容量型〜65,535バイト本文・コメント・ログなど
MEDIUMTEXTTEXTより大きい〜16MByte長文記事・設定ファイルなど
LONGTEXT最大級のテキスト〜4GByte大量ログ・丸ごとHTMLなど

覚え方:「CHAR は定員固定の席、VARCHAR は来た人数分だけ椅子を用意」

CHAR(10) は「常に10席用意する」イメージ。3文字しか入れなくても7席分のスペースが消費されます。VARCHAR(10) は「最大10席まで対応できるけど、来た人数分だけ用意する」イメージです。

固定長 vs 可変長の比較

CHAR(10) に "ABC" を保存:
  [ A ][ B ][ C ][   ][   ][   ][   ][   ][   ][   ]
  └─ 常に10文字分のスペースを消費 ─────────────────┘

VARCHAR(10) に "ABC" を保存:
  [ A ][ B ][ C ]
  └─ 3文字分だけ消費 ┘

歴史と背景

  • 1960年代 — COBOL などの初期言語でも「英数字項目」として文字列の概念が登場。固定長が主流だった
  • 1970年代 — E.F.コッドがリレーショナルデータベース理論を提唱。テーブルのカラムに型を持つ設計が広まる
  • 1980年代 — SQL標準(ANSI SQL)が策定され、CHARVARCHAR が正式に定義される
  • 1990年代 — インターネット普及でメール・Web掲示板など長文データが急増。TEXT 型の重要性が増す
  • 2000年代Unicode(UTF-8) の普及により、日本語・中国語・絵文字まで1つのエンコードで扱えるようになる。文字コード問題が大きな設計課題に
  • 2010年代〜NoSQLJSONカラムの登場で、テキスト型に構造化データを詰め込むケースも増加。型の境界が柔軟になってきた

テキスト型にまつわる重要な概念

文字コードとエンコーディング

テキスト型を語るうえで外せないのが 文字コード(エンコーディング) です。コンピュータは文字を数値として保存するため、「どの数値がどの文字に対応するか」の変換表が必要です。

文字コード特徴注意点
UTF-8現在の世界標準。英数字は1バイト、日本語は3バイトほぼこれ一択でOK
Shift-JIS日本語Windows環境で長く使われた古いシステムとの連携時に文字化けの元
EUC-JP旧来のUnix/Linux環境で普及現在はほぼ見かけない
latin1MySQLのデフォルト設定が長い間これだった絵文字が保存できない落とし穴あり

テキスト型と数値型の違い

「電話番号」や「郵便番号」は数字だけで構成されますが、テキスト型で保存するのが正解です。

❌ 数値型で保存した場合:
   電話番号 "090-1234-5678" → ハイフンが保存できない
   郵便番号 "0120-xxx-xxx" → 先頭の0が消える(数値は先頭の0を省略する)

✅ テキスト型で保存した場合:
   "090-1234-5678" → そのまま保存OK
   "012-3456"      → 先頭の0もハイフンも保存OK

SQLとプログラミング言語での対応関係

テキスト型の言語間対応マップ SQL (DB) CHAR(n) VARCHAR(n) TEXT MEDIUMTEXT LONGTEXT Python str str str str str JavaScript string string string string string SQLの複数種類も、多くの言語では「文字列型ひとつ」に集約される

SQLはデータベースの都合上、細かく型を使い分けますが、PythonJavaScriptなどのアプリ側の言語では「文字列は全部 str / string のひとつ」で済むのが特徴です。


関連する規格・RFC

規格番号内容
ISO/IEC 9075SQL標準規格。CHARVARCHARCHARACTER VARYING などテキスト型の定義を含む
RFC 3629UTF-8エンコーディングの仕様。テキストデータの文字コード標準として広く参照される

関連用語

  • 数値型 — 整数・小数など計算に使う数を格納するデータ型
  • 日付型 — 日付・時刻を格納するデータ型
  • NULL — 値が存在しないことを表す特殊な状態
  • 主キー — テーブルの各行を一意に識別するためのカラム
  • インデックス — 検索を高速化するためのデータ構造。テキスト型カラムへの適用が重要
  • 文字コード — 文字と数値の対応表。UTF-8・Shift-JISなど
  • データベース — データを構造化して保存・管理するシステム
  • スキーマ — データベースのテーブル構造・型定義をまとめた設計図