ホームページ > データベース > mysql チュートリアル > char、varchar、nchar、nvarchar、text の違いは何ですか?

char、varchar、nchar、nvarchar、text の違いは何ですか?

一个新手
リリース: 2017-10-18 10:00:06
オリジナル
1558 人が閲覧しました

char、varchar、nchar、nvarchar、textの違い

1. varプレフィックスが付いているものは、実際の記憶領域が可変長であることを意味します、varchar、nvarchar

いわゆる固定length は長さです。入力データ長が指定した長さに達しない場合、入力した文字数がより大きい場合は、その後に自動的に英語のスペースが埋め込まれます。例外として、テキストも可変長で格納されます。

2.n は Unicode 文字を表します。つまり、すべての文字が 2 バイトを占め、nchar、nvarchar、

文字、英語の文字は 1 バイトのストレージのみで十分ですが、中国語の文字がたくさんあります。 Unicode 文字セットは、文字セットの非互換性の問題を解決するために作成されました。すべての文字は 2 バイトで表されます。つまり、英語の文字も2バイトで表現されます

3 上記2点を踏まえて、フィールドの容量を見てみましょう

char(n), varchar(n)up英語 8000 文字、中国語 4000 文字まで n は、入力データの実際のバイト長を表します nchar(n)、nvarchar(n) は、英語または中国語の文字に関係なく、4000 文字を格納できます n文字数を表します

4. 使用方法 (個人的な好み)

a. データ量が非常に大きい場合、長さが 100% 決定され、ANSI 文字のみが保存される場合は、char

b.決定されているが必ずしも ANSI 文字であるとは限りません。 または、nchar を使用します。 c. 記事コンテンツなどの非常に大きなデータの場合は、nText を使用します。 1.CHAR。 CHAR は固定長データを格納するのに非常に便利です

例えば、char(10) を定義すると、格納するデータが到達するかどうかに関係なく、 10 バイトの場合は、10 バイトのスペースを占有する必要があります。

2、VARCHAR。可変長データ

を格納しますが、格納効率は CHAR ほど高くありません。フィールドに取り得る値が固定長でない場合、それが 10 文字を超えることができないことだけがわかります。 、VARCHAR (10) が最もコスト効率が高いと定義します。 VARCHAR 型の実際の長さは、その値の実際の長さに 1

を加えたものです。なぜ「+1」なのでしょうか?このバイトは、実際に使用される長さを保存するために使用されます。 スペースの観点からは varchar が適切ですが、効率の観点からは char が適切です。重要なのは、実際の状況に基づいてトレードオフ ポイントを見つけることです。 3. テキスト。 text には、最大長 2^31-1 (2,147,483,647) 文字の可変長の非 Unicode データが格納されます。 4、NCHAR、NVARCHAR、NTEXT。これら 3 つのタイプには、前の 3 つよりも名前に「N」が追加されています。 char と varchar と比較すると、nchar と nvarchar は英語でも中国語でも最大 4000 文字を保存できますが、char と varchar は英語で 8000 文字、中国語で 4000 文字まで保存できます。 nchar および nvarchar データ型を使用すると、入力文字が英語か中国語かを気にする必要がなく便利であることがわかりますが、英語を格納する場合は量が若干失われます。

したがって、一般的に言えば、中国語の文字が含まれる場合は nchar/nvarchar を使用し、純粋な英語と数字が含まれる場合は char/varchar を使用します。

以上がchar、varchar、nchar、nvarchar、text の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート