FOR SE

文系の学部から新卒でメーカー系のSIerに就職。技術・スキルがないためブログを通して勉強。その後、IT業界の業界知識が活かせる人材業界に就職

このエントリーをはてなブックマークに追加

【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

.hatena-module:nth-of-type(10) { background: transparent; } .hatena-module:nth-of-type(10) .hatena-module-title{ display: none; } .hatena-module:nth-of-type(10) .hatena-module-body { padding: 0; }