jumper

コラム

MySQLのデータ型

MySQLのデータ型

MySQLのみならず、データベースにはフィールドを作成するごとにデータ型を設定します。
フィールドごとに格納される型が決まっていることで、誤った用法を防ぐためであり、処理速度を速めるためです。適切な型の設定はデータベース設計の基本です。

また、MySQLにはMyISAMやInnoDBという他のデータベースとは違うエンジンが用意されています。
WEBを主な活動の舞台として発展してきたMySQLには、同じRDBでも他とは違う特有の型がありますので、合わせて確認していきましょう。

MySQL特有の主なデータ型

まずはMySQLの主なデータ型と特有のデータ型をみてみます。

数値型
整数、少数、浮動小数点などを格納する型になります。MySQLでは型について曖昧な利用を許しています。例えばSIGNEDのTYNYINTでは本来-128~127までが対象ですが、実際は128以上であっても格納されます。
BOOLEAN型
本来はTRUE/FALSE、つまり0か1が対象となりますが、MySQLではTYNYINT(1)の別名として動作しています。そのため0、1以外の値が入ることができます。真偽判定の際に思わぬ挙動を引き起こすことになりますので、その扱いには注意が必要です。
文字型
大文字、小文字の扱いが同一として動作します。文字列比較の際には大文字・小文字を別物とする場合はバイナリ型などを活用するなど、工夫が必要になります。
日付型
MySQLでは過去のデータをゼロで扱います。0000-00-00が最小日付となるので、プログラムする際には注意が必要です。本来は日付として判断できないデータなので、プログラミング時にはその挙動を念頭に工夫してください。
空間データ型

ENUM、SETの使い方

ENUM型もSET型もリストを扱うための型です。

ENUM型
ENUM型では事前にフィールド(カラム)に格納するリストが設定されています。例えば赤・青・黄色というリストが用意されていて、それ以外の値は格納できません。また、格納できる値はひとつだけになります。有効でない値が代入された場合は空白として処理されます。
SET型
SET型もリスト形式の値を扱っていますが、ENUM型と違ってひとつ以上のリストを格納します。つまり指定できるリストの組み合わせを格納できます。例えば「赤・青」とか「赤・黄色」のような組み合わせです。

空間データ型を使って位置情報を格納して検索する

MySQLは5.6から空間データを扱うgeometry型が導入されました。5.6ではMyISAMのみインデックスが張れますが、5.7以降はInnoDBでもインデックスを張れます。値を入れる場合はGeomFromText関数を使って幾何値を作成し、その数値を格納します。Geometry型にはPOINT形式、LINESTRING形式、POLYGON形式で格納できます。空間検索には、MBR系の関数を使い検索します。MBRContains関数、MBRIntersects関数などで位置情報を取得することが可能です。

まとめ

MySQLはその始まりがライトウェイトなWEBで手軽に使えるデータベースとして登場しました。その後、バージョンを重ねるごとにオラクルやMSSQLサーバなどと同等の機能を拡張し続けて発展してきました。空間データも扱える現在の最新バージョンでは、ますますその活動の領域を広げています。

CONTACT

製品・サービスに関するご質問、お見積もり、お問い合わせなど、お気軽にご連絡ください。

 050-5505-5509

受付時間 9:30 - 12:00, 13:00 - 17:00
(土日祝および年末年始を除く)