MySQL4.0.27です。
最近、MySQLの勉強を始めました。
PHPと合わせて、試行錯誤を繰り返していますが、どうしてもカラム型が理解できずにいます。
いろいろ調べましたがよくわかりませんでしたので、教えてください。
例えば、VARCHAR(100)というカラム型を設定すると、全角文字が33文字と半角文字が1文字入るようです。
次に、TINYTEXT(100)とすると、上記よりもっと長く格納できるようです。(文字数は未確認)
他にもBLOBやBINARYなどたくさんあり、どれを使うべきかわかりません。
以下のような場合、どの型をどれくらいの長さで設定するのが一般的なのでしょうか?
・住所などのように、比較的短いことが予想される文字列
・メッセージなどのように、数十文字から数千文字までが予想される文字列
・整数部3桁、小数部20桁程度の小数点数
上記3点について、一般的な型と長さを教えてください。
No.1ベストアンサー
- 回答日時:
MySQL 4.0.27とのことですが、MySQL 4.1以降に上げることはできないでしょうか?
MySQL 4.1やMySQL 5.0で、多くの機能追加や一部の仕様変更があります。
>例えば、VARCHAR(100)というカラム型を設定すると、全角文字が33文字と半角文字が1文字入る
VARCHAR(n)は、MySQL 4.0まではnバイトまで格納できました。MySQL 4.1以降では、1バイト文字・2バイト文字に関係なく、n文字まで格納できるように仕様変更されています。
>TINYTEXT(100)とすると、上記よりもっと長く格納できるようです
TINYTEXTには、(100)といった指定はできないはずです。TEXT(100)の誤りでしょうか?(n)を指定した場合、「指定された値を格納できる十分な領域を確保する」となっており、4KBや8KBくらいは最低でも確保されるのかも知れません。
>他にもBLOBやBINARYなどたくさんあり
BLOBは、画像データ等を格納することを想定したデータ型です。
>住所などのように、比較的短いことが予想される文字列
文字数が固定ならchar(n)、文字数が可変で255文字までならvarchar(n)といった感じです。
インデクスを付けたり、order byやgroup byを指定する場合、MySQL 4.0くらいだと、長さ制限があったように思います。
その後のバージョンでこれら制限のいくつかは緩和されましたが、やはりオーバヘッドがあると思います。
>メッセージなどのように、数十文字から数千文字までが予想される文字列
上述のように、検索の条件にしたり、order byやgroup byで指定される可能性のある列は、なるべくvarcharにした方が良いでしょう。
そういった操作をすることがなく、最大長の予測が困難な場合は、textを選択するしかありません。
>整数部3桁、小数部20桁程度の小数点数
小数点以下が20桁というのは、あまり一般的なデータとは言えないと思いますが?どういったデータなのでしょうか?
小数部も高精度で維持する必要があるなら、decimalを使うしか選択肢はありません。dec(23,20)といった指定になります。
詳しくは、マニュアルの以下の記述を、参照してみてください。
http://dev.mysql.com/doc/refman/4.1/ja/column-ty …
http://dev.mysql.com/doc/refman/4.1/ja/silent-co …
丁寧なご回答ありがとうございます。
DBのバージョンですが、レンタルサーバーなので、バージョンを換えるには契約しなおすしかないかもしれません。(未調査)
さらにこの契約で、別のシステムも稼働中ですので、あまり動かしたくないのが本音です。
ですので、しばらくは4.0で利用することになります。
TINYTEXT(100)は当方の間違いでした。(^^ゞ
今回は、VARCHAR(n)とTEXTを使おうと思います。(TEXTは、コメント部なので、ORDER BYなどは不要です。)
小数点数は、地図データの緯度経度を格納する予定です。
小数第15位くらいまでは必要のようです。
こちらはDECIMALを使おうと思います。整数部は3桁以上にはなりませんので、(23,20)でいけると思います。
ご提示いただいたマニュアルも読んだのですが、日本語が難しく苦労してます。(^^ゞ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- UNIX・Linux sedでの正規化 2 2022/05/10 11:39
- Java Java 南京錠 2 2023/02/04 11:46
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- 大学受験 小論文の採点について質問です。 先日、推薦入試があり第一志望校の入学試験を受けてきました。 試験内容 2 2022/11/28 17:56
- その他(ソフトウェア) ソースネクストアプリをインストールし、製品登録で半角英数字が入力できない 5 2022/07/03 22:44
- Excel(エクセル) セルに入力した小文字アルファベット、数字を大文字表示させるには? 3 2022/07/13 10:01
- Excel(エクセル) エクセルにおいてセル内の文字を出来るだけ大きく表示する方法を教えてください。 4 2022/07/30 08:08
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLのVARCHARとVARCHAR2の違い
-
プライマリーキーの昇順でソー...
-
INT型は金額の型に使用するべき...
-
AccessからOrcleのODBCリンクテ...
-
VBAで変数内に保持された二次配...
-
データベースのフィールドのデ...
-
Float型の時の計算結果がおかしい
-
postgreSQLのデータ型
-
接続ができません
-
MySQLカラム名は日本語と英数字...
-
副問合せにLIKE文を使う方法は...
-
mysqldumpでリストアし一部外字...
-
Column '' not found.
-
ODP.NETのバージョン確認
-
文字コードMS932(Windows-31J...
-
Btrieveのコンバートしたいので...
-
MYSQLで日本語が入力できない
-
show databasesコマンドが効かない
-
列数が多いと結果が行単位に改...
-
SQL開発環境ソフトウェアである...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLのVARCHARとVARCHAR2の違い
-
VBAで変数内に保持された二次配...
-
INT型は金額の型に使用するべき...
-
プライマリーキーの昇順でソー...
-
Float型の時の計算結果がおかしい
-
ヌル値は記憶容量を必要としな...
-
MySQLの型のサイズ指定で速度は...
-
データベースのフィールドのデ...
-
postgreSQLのデータ型
-
TRUE/FALSEのデータ型
-
ハングル文字が入らない。
-
オラクルのデータ型・通貨について
-
Excel VBA SelectedItems
-
MysqlにURLを登録する方法
-
postgresQL に格納した画像ファ...
-
DB2 INSERT時の格納順序
-
[SQLserver]長文に適したデータ...
-
-3.34 が -3.3399999999999999 ...
-
AccessからOrcleのODBCリンクテ...
-
insertでのエラーについて
おすすめ情報