【PHP・Mysql】テーブル定義を作る ~データ型についての基本的なことまとめ~
【今回の紹介】
webtodoリストをDBと連携するために、テーブル定義を作成していました。
その過程で、データの型について学習したので紹介します。
【内容】
①データをDBに格納するときに、DBの体系的な型の種類を紹介している良サイト
参考:http://kozy.heteml.jp/pukiwiki/MySQL%2520%25A5%25C7%25A1%25BC%25A5%25BF%25B7%25BF/index.html
参考:http://kaya-soft.com/sqlserver2008-toranomaki/beginner/columntype/
②数値を格納するときのデータ型について
基本的には
・smallint(-32768から+32767)
・integer(-2147483648から+2147483647)
らへんを使うのかなと言う印象を受けました。
※正確な計算が必要な場合は以下のような型を使用するようです。
・numeric型
・decimal型
ちなみに自分の仕事でも大きな金額の計算が必要な場合は、
numeric型を使用していました。
③文字列の格納するときのデータ型について
1.char型とvarchar型の特徴
・charは固定長のデータ型。20ケタはいるところに、10ケタに入れても
データとしては20ケタ確保されている。空白の所に関しては、空白がはいる
・varcharは可変長型。10ケタはいるところに、10ケタに入れると
データとしては10ケタ確保されている。
・単純に入った分だけバイト数確保するvarchar型の方がコンパクトに格納できる
・varchar型は、桁数の増減により、データの格納状態が悪化する恐れがある。
※char(n)・vachar(n)のnはバイト数であり、半角は1バイト、全角は2バイト!
2.char型とvarchar型の使い分け
■char型を使用する場合
・最大文字数が明確
・変更する場合が多い
・文字数がそろいやすい
■varchar型を使用する場合
・変更が少ない(参照メイン)
・格納する文字列が揃わない
3.char型とvarchar型の比較について
文字列の比較などを行う場合、char型は空白がはいっている可能性があるので、trimする必要がある
参考:charとvarcharの違いについて記載
http://itpro.nikkeibp.co.jp/article/COLUMN/20060221/230236/
【成果物】
実際に作成したテーブル定義書を載せておきます。
」
テーブル名 T_001
No 論理名 物理名 データ型 NULLを許有する デフォルト 備考
1 データID id SMALLINT ☓
2 リスト名 name varchar(60) ☓
3 カテゴリー category char(11) ☓
4 削除フラグ del_flg char(1) 0
5 日時 update_time DATETIME