データベースの「データ型」とは何か?(その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のデータ型ですが、
MySQLやOracle Database、SQL Serverなど使用するRDMSによって若干異なります。
MySQLの場合はintegerじゃなくてint型だったり、
smallint, tinyint, bigintなんて型があったりします(格納可能な数値の範囲が異なる)
データ型を知っておくと良いこと
DB設計をするときには必須の知識です。
データ型の決定時にミスすると、
サーバのディスク容量を無駄に使用しすぎてしまったり、
本来入れたい値を入れることができなくなったりします。
これはなかなか困ります。
また、アプリケーション開発中、
データベース側でエラーが起きたときに直ぐに原因が特定でき、
デバッグが早くなります(多分)。
これから
気が向いたときにMySQLやpostgresqlのデータ型について
まとめていこうと思います。お待ち下さいm( )m