リスを倒す 『初めてのPHP,MySQL,JavaScript&CSS』

『初めてのPHP,MySQL,JavaScript&CSS』勉強奮闘記

8-3. MySQL入門③データ型

コマンドプロンプトの画面というか、黒い画面に何か打ち込んでると、なんとなくそれっぽくて高まります。

MySQLばりばり進めますー


1-1. VARCHARデータ型とCHARデータ型


8-2. MySQL入門②MySQLのコマンドの最後に、テーブルを作成しました。
f:id:taro-blog2323:20160831095328p:plain

その際に、テーブルの3つのフィールドに「VARCHAR」というデータ型を与え、1つのフィールドに「CHAR」というデータ型を与えました。
これは、フィールドに保持的ルストリングの最大の長さ(最大長)をMySQLに伝える数値を取ります。
データ型を使用することにより、MySQLに前もってデータベースのサイズを想定させ、検索の実行が容易になるというメリットがあります。
逆にデメリットとしては、指定した長さより長くなってしまった場合に最大値に切り取られてしまうことです。

◎VARCHAR型とCHAR型

データ型 使用されるバイ
VARCHAR(n) nまで(65535まで) VARHAR(100):"Greetings"で9バイトと記憶領域に必要な1バイトを使用)
CHAR(n) きっかりn(255まで) CHAR(10):"Hello"で10バイト使用

VARCHARとCHARは両方ともテキストストリングを取り、フィールドのサイズを制限します。
2つの違いは、VARCHARフィールドは挿入されたテキストがきっちり収まるようにフィールドのサイズが変更されます。CHARフィールドは、ストリングのサイズは一定です。

1-2.BINARY型


BINARYデータ型は、関連づけられた文字セットを持たない、すべてがバイトであるストリング(バイナリデータ)の保持に使用されます。
たとえばGIFイメージの保持に使用できます。

◎BINARY型

データ型 使用されるバイ
VARBINARY(n) nまで(65535まで) BARCHARに似ているが、バイナリデータを含む
TEBINARYXT(n) きっかりn(255まで) CHARに似ているが、バイナリデータを含む

1-3.TEXTデータ型


TEXTデータ型は、VARCHAR型と似ていますが、フィールド内の何文字めまでしか検索しないと設定するときに有効です。
中身全体を検索する必要がある際は、VARCHAR型が適しています。

◎TEXT型

データ型 使用されるバイ
TINYTEXT(n) nまで(255まで) 文字セットを持つストリングとして扱われる
TEXT(n) nまで(65535まで) 文字セットを持つストリングとして扱われる
MEDIUMTEXT(n) nまで(16777215まで) 文字セットを持つストリングとして扱われる
LONGTEXT(n) nまで(4294967295まで) 文字セットを持つストリングとして扱われる

1-4.BLOBデータ型


BLOBはBinary Large OBject(バイナリの大きなオブジェクト)の略語で、サイズが65,536バイトを超えるバイナリデータに有用です。

◎BLOB型

データ型 使用されるバイ
TINYBLOB(n) nまで(255まで) 文字セットを持たないストリングとして扱われる
BLOB(n) nまで(65535まで) 文字セットを持たないストリングとして扱われる
MEDIUMBLOB(n) nまで(16777215まで) 文字セットを持たないストリングとして扱われる
LONGBLOB(n) nまで(4294967295まで) 文字セットを持たないストリングとして扱われる

1-5.数値データ型


MySQLでは、1バイトから倍精度浮動小数点まで、さまざまな数値のデータ型がサポートされています。データ型は予想される最大値が処理できる最小のデータ型を選択するのが良いそうです。

◎数値データ型

データ型 使用されるバイ 最小値(符号つき/符号なし) 最大値(符号つき/符号なし)
TINYINT 1 -128/0 127/255
SMALLINT 2 -32768/0 32767/65535
MEDIUMINT 3 -8388608/0 8388607/16777215
INTまたはINTEDER 4 -2147483648/0 2147483647/4294967295
BIGINT 8 -9223372036854775808/0 9223372036854775807/18446744073709551615
FLOAT 4 -3.402823466E+38/符号なしはなし 3.402823466E+38/符号なしはなし
DOUBLEまたはREAL 8 -1.7976931348623157E+308/符号なしはなし 1.7976931348623157E+308/符号なしはなし

符号つきの数は、取りうる値の範囲が負の値から、0、正の値までの数で、符号なしの数は、値の範囲が0から正の値をいいます。

1-6.DATEデータ型とTIMEデータ型


日付と時刻を表示する際にはDATEデータ型とTIMEデータ型を使用します。

◎DATEとTIME型

データ型 時刻/日付のフォーマット
DATETIME '0000-00-00 00:00:00'
DATE '0000-00-00'
TIMESTAMP '0000-00-00 00:00:00'
TIME '00:00:00'
YEAR 0000(0000と1901から2155まで)

TIMESTAMPのほうが1970年から2037年までと扱える範囲が狭く、DATETIMEはほぼ指定通りの日付が保持できます。


いじょーー