2009-08-13 8 views
13

免責事項:私はSQLとデータベースには一般的に新しいです。[My] SQL VARCHARのサイズとヌル終了


私は、最大32文字のテキストデータを格納するフィールドを作成する必要があります。 "VARCHAR(32)"は私のデータにが正確に32文字あることを意味しますか?ヌル終了のために余分な文字を予約する必要がありますか?

私は単純なテストを行いました。これはWYSIWYGバッファーのようです。しかし、実際に何をしているのかを実際に知っている人々から具体的な回答を得たいと思っていました。


私はC [++]バックグラウンドを持っているので、この質問は私の頭の中で警鐘を起こしています。

答えて

24

はい、使用できる文字数は32文字です。 SQLはいくつかのプログラミング言語のようにnulで終了する文字列には関係しません。

+0

ありがとう、それは安堵です。 –

1

VARCHARの指定サイズは、データの最大サイズです(この場合は32文字です)。ただし、VARCHARSは動的なフィールドなので、実際に使用される物理ストレージはデータのサイズと1〜2バイトだけです。

10文字の文字列をVARCHAR(32)に入れると、物理ストレージは11または12バイトになります(マニュアルでは正確な式がわかります)。

しかし、MySQLが結果セット(SELECTの後)を処理している場合、各レコードの32バイトがそのフィールドのメモリに割り当てられます。

+0

+1フィールドの選択時のメモリ割り当ての説明。 TEXTフィールドとBLOBフィールドでどのように動作するのだろうか... – Leonel

関連する問題