📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
ページの作成:「== 概要 == <u>※注意</u><br> <u>各データ型を選択する場合において、以下に示す事柄を考慮すること。</u><br> * ストレージ効率 *: 必要最小限のサイズを選択する。 * パフォーマンス *: 検索や演算の頻度を考慮する。 <br><br> == 数値型 == データの正確性において、数値型では、DECIMAL型とFLOAT / DOUBLE型の選択が重要となる。<br> <br> ==== 整数型 ==== * TINYINT *: -…」 |
|||
| (同じ利用者による、間の4版が非表示) | |||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
MySQLのデータ型は、データの性質と用途に応じて適切に選択する必要がある。<br> | |||
効率的なデータベース設計のために、データの特性を理解して、最適なデータ型を選択することが重要である。<Br> | |||
<br> | |||
整数値を扱う場合、TINYINTからBIGINTまでの範囲から、データの大きさに応じて選択する。<br> | |||
例えば、年齢を格納する場合はTINYINT型で十分であるが、ユーザIDなどの連番には一般的にINT型やBIGINT型を使用する。<br> | |||
<br> | |||
小数を扱う場合は、精度の要件に着目する。<br> | |||
金額計算等の高い精度が求められる場合はDECIMAL型を使用する。<br> | |||
一方、科学的な計算や精度よりも処理速度が重要な場合は、FLOAT / DOUBLE型が適している。<Br> | |||
<br> | |||
文字列データは、固定長あるいは可変長という特性で大きく分かれる。<br> | |||
パスワードのハッシュ値のように長さが決まっているデータにはCHAR型が適しているが、ユーザ名や住所などの可変長データにはVARCHAR型が適している。<br> | |||
<br> | |||
また、大量のテキストデータを扱う場合、TEXT型のファミリー (TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT) から適切なものを選択する。<br> | |||
例えば、ブログの投稿内容等には一般的にTEXT型が使用される。<br> | |||
<br> | |||
日付や時刻のデータは、用途に応じて適切な型を選択する。<br> | |||
単純な日付にはDATE型、時刻のみの場合はTIME型、両方必要な場合はDATETIME型を使用する。<br> | |||
また、タイムゾーンを考慮する必要がある場合は、TIMESTAMP型を使用する。<br> | |||
<br> | |||
特殊なデータの取り扱いにおいて、限られた選択肢から値を選ぶ場合、ENUM型やSET型が有効である。<br> | |||
例えば、商品のサイズ (S、M、L) 等はENUM型で効率的に管理することができる。<br> | |||
<br> | |||
最近のWebアプリケーション開発では、JSON型の活用が増えている。<br> | |||
柔軟なデータ構造を持つ情報を格納する場合に有効である。<br> | |||
<br> | |||
画像やその他ファイル等のバイナリデータは、BLOB型のファミリーを使用して格納する。<br> | |||
ただし、大きなファイルはファイルシステムに保存して、データベースにはパスを格納する方法も一般的である。<br> | |||
<br> | |||
空間データの取り扱いにおいて、地理的な情報を扱う必要がある場合、GEOMETRY型とその関連型を使用する。<br> | |||
これは、地図アプリケーションや位置情報サービスの開発で活用されている。<br> | |||
<br> | |||
パフォーマンスとストレージの最適化を考慮する場合、データ型の選択は、データベースのパフォーマンスとストレージ効率に大きく影響する。<br> | |||
必要以上に大きなデータ型を選択すると、ストレージの無駄遣いになるだけでなく、検索やソートの性能にも影響を与える可能性がある。<br> | |||
<br> | |||
文字列型は、適切な文字セットの選択も重要となる。<br> | |||
UTF-8であればutf8mb4を使用するのが一般的である。<br> | |||
これにより、絵文字を含むあらゆる文字を正しく扱うことができる。<br> | |||
<br> | |||
したがって、MySQLのデータ型は、データの特性、用途、パフォーマンスの要件に応じて適切に選択することが重要となる。<br> | |||
<br> | |||
<u>※注意</u><br> | <u>※注意</u><br> | ||
<u>各データ型を選択する場合において、以下に示す事柄を考慮すること。</u><br> | <u>各データ型を選択する場合において、以下に示す事柄を考慮すること。</u><br> | ||
| 56行目: | 96行目: | ||
*: 固定長文字列 (最大255文字) | *: 固定長文字列 (最大255文字) | ||
*: 指定した長さより短い文字列は空白で埋められる。 | *: 指定した長さより短い文字列は空白で埋められる。 | ||
<br> | |||
==== 可変長 ==== | |||
* VARCHAR(N) | * VARCHAR(N) | ||
*: 可変長文字列 ( | *: 可変長文字列 (最大65535文字) | ||
*: 実際のデータ長だけを使用。 | *: 実際のデータ長だけを使用。 | ||
*: <br> | |||
*: ただし、実際の最大文字数は文字セットによって変わる。 | |||
** utf8mb4の場合 | |||
**: 最大16383文字 | |||
** utf8の場合 | |||
**: 最大21844文字 | |||
*: <br> | |||
* TINYTEXT | * TINYTEXT | ||
*: 最大255文字 (1バイト + データ長) | *: 最大255文字 (1バイト + データ長) | ||
| 68行目: | 116行目: | ||
* LONGTEXT | * LONGTEXT | ||
*: 最大4294967295文字 (4バイト + データ長) | *: 最大4294967295文字 (4バイト + データ長) | ||
<br> | |||
選択の目安<br> | |||
* VARCHAR: | |||
*: 最大長が予測できる場合 | |||
*: 検索やソートが頻繁に必要な場合 | |||
*: <br> | |||
* TEXT | |||
*: 最大長が不明または非常に長いテキストを扱う場合 | |||
*: ブログの記事本文やドキュメントの内容等 | |||
<br> | |||
<syntaxhighlight lang="mysql"> | |||
-- TEXT型の使用例 | |||
CREATE TABLE articles ( | |||
id INT PRIMARY KEY, | |||
content TEXT, -- 通常の長いテキスト | |||
description MEDIUMTEXT, -- より長いテキスト | |||
full_content LONGTEXT -- 非常に長いテキスト | |||
); | |||
-- VARCHAR型の使用例 | |||
CREATE TABLE messages ( | |||
id INT PRIMARY KEY, | |||
message VARCHAR(10000) -- 最大10000文字まで | |||
); | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
| 101行目: | 174行目: | ||
*: 年 (4桁) | *: 年 (4桁) | ||
*: 範囲 : 1901〜2155 | *: 範囲 : 1901〜2155 | ||
<br> | |||
<syntaxhighlight lang="mysql"> | |||
-- 日時でソートする例 | |||
SELECT * FROM t_sample ORDER BY ctime DESC; | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||