SQL における CHAR と VARCHAR の違い
CHAR と VARCHAR はどちらも SQL で文字列を格納するために使用されますが、ストレージ、パフォーマンス、および使用方法の点で大きく異なります。詳細な比較は次のとおりです:
1.定義
2.保管動作
-
CHAR:
- すべての値に定義された最大サイズを割り当てます。
- 保存された文字列が定義されたサイズより短い場合は、残りのスペースを埋めるためにスペースが埋め込まれます。
- 例: CHAR(10) は、文字列が "Hello" (5 バイト) であっても、常に 10 バイトを使用します。
-
VARCHAR:
- 文字列に必要なだけのストレージを使用し、さらに文字列の長さを格納するために 1 バイトまたは 2 バイトを追加します。
- 例: "Hello" (5 バイト) を格納する VARCHAR(10) は、6 または 7 バイト (文字列の 5、長さの 1/2) を使用します。
3.パフォーマンス
-
CHAR:
- 長さが事前に決定されており、データ取得中に可変長を管理する必要がないため、固定長文字列の方が高速です。
- 郵便番号や国番号など、一貫した長さのデータを保存するのに最適です。
-
VARCHAR:
- 可変長データのストレージという点では効率的ですが、長さを管理するオーバーヘッドのため、操作が若干遅くなります。
4.使用例
-
CHAR:
- 次のような固定長データに最適です。
- 国コード (例: "US"、"UK")
- 郵便番号
- 製品コード
- 一貫した保管と取得を保証します。
-
VARCHAR:
- 次のような可変長データに適しています。
- 名前 (例: "John"、"Alexander")
- メールアドレス
- 説明またはコメント
5.最大長
-
CHAR:
- 最大 255 文字をサポートします (データベース システムによって異なります)。
-
VARCHAR:
- 一部のデータベース システム (MySQL など) では最大 65,535 文字を保存できますが、実際の最大値は行サイズとデータベース エンジンによって異なります。
6.例
CHAR の使用:
CREATE TABLE countries (
country_code CHAR(3) NOT NULL
);
INSERT INTO countries (country_code) VALUES ('US'), ('UK'), ('IN');
ログイン後にコピー
- "US"を格納しても3バイト('US'はパディングあり)となります。
VARCHAR の使用:
CREATE TABLE users (
username VARCHAR(50)
);
INSERT INTO users (username) VALUES ('Alice'), ('Alexander');
ログイン後にコピー
-
「Alice」は 6 バイト (長さの文字列 1 は 5 バイト) を占め、「Alexander」は 10 バイトを占めます。
7.概要表
Aspect |
CHAR |
VARCHAR |
Length |
Fixed-length |
Variable-length |
Storage |
Always uses the defined size. |
Uses only the required size length metadata. |
Performance |
Faster for fixed-length strings. |
Slightly slower due to length management. |
Padding |
Pads with spaces for shorter data. |
No padding; stores exact string. |
Use Case |
Fixed-length data. |
Variable-length data. |
Max Length |
255 characters. |
Up to 65,535 characters. |
アスペクト |
CHAR
|
VARCHAR |
長さ
|
固定長 |
可変長 |
ストレージ
|
常に定義されたサイズを使用します。 |
必要なサイズ長メタデータのみを使用します。 |
パフォーマンス |
固定長文字列の場合は高速です。 |
長さの管理のため、少し遅くなります。 |
パディング
|
短いデータの場合はスペースを埋め込みます。 |
パディングなし。正確な文字列を保存します。 |
使用例 |
固定長データ。 |
可変長データ。 |
最大長
|
255 文字。 |
最大 65,535 文字。 |
結論
サイズの一貫性が重要であり、ストレージ効率が主な関心事ではない固定長データには、CHAR を使用します。
可変長データには VARCHAR を使用して、記憶域スペースを節約し、柔軟な文字列長を処理します。
こんにちは、アバイ・シン・カタヤットです!
私はフロントエンドとバックエンドの両方のテクノロジーの専門知識を持つフルスタック開発者です。私はさまざまなプログラミング言語やフレームワークを使用して、効率的でスケーラブルでユーザーフレンドリーなアプリケーションを構築しています。
ビジネス用メールアドレス kaashshorts28@gmail.com までお気軽にご連絡ください。
以上がSQL における CHAR と VARCHAR: 主な違いの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。