君は心理学者なのか?

大学時代に心理学を専攻しなぜかプログラマになった、サイコ(心理学)プログラマかろてんの雑記。

データベースの「データ型」とは何か?(その1)

はじめに

皆さん、データベースのデータ型について意識した事はありますか?

「データ型って何?」って思ったそこのRails使いの方!

rails db
postgres=# \d table_name

を叩いてみましょう。

※ table_nameは存在する適当なテーブル名

すると、以下のテーブルがあらわれます。

  Column    |            Type             |                    Modifiers                      
------------+-----------------------------+----------------------------------------------------
 id         | integer                     | not null default nextval('blogs_id_seq'::regclass)
 title      | character varying           | 
 content    | text                        | 
 created_at | timestamp without time zone | not null
 updated_at | timestamp without time zone | not null
 user_id    | integer                     | 

この「integer」「character varying」「text」などが、

「データ型」です。

データ型とは

データ型は、

「テーブルのカラムにどういうデータが入るか」を指定します。

先ほどの例では、

* idカラムにはinteger(整数)

* titleカラムにはcharacter varying(制限付き可変長文字列)

* contentカラムにはtext(制限なし可変長)

という感じですね。

なので、idカラムに文字列を入れようとするとエラーがおきます。

データ型は、想定していない変なデータがカラムに入ることを防いでくれる

なんだか厳格なヤツなのです。

データ型にもいろいろある

先ほど上げたのはpostgresqlのデータ型ですが、

MySQLOracle Database、SQL Serverなど使用するRDMSによって若干異なります。

MySQLの場合はintegerじゃなくてint型だったり、

smallint, tinyint, bigintなんて型があったりします(格納可能な数値の範囲が異なる)

データ型を知っておくと良いこと

DB設計をするときには必須の知識です。

データ型の決定時にミスすると、

サーバのディスク容量を無駄に使用しすぎてしまったり、

本来入れたい値を入れることができなくなったりします。

これはなかなか困ります。

また、アプリケーション開発中、

データベース側でエラーが起きたときに直ぐに原因が特定でき、

デバッグが早くなります(多分)。

これから

気が向いたときにMySQLpostgresqlのデータ型について

まとめていこうと思います。お待ち下さいm( )m