8-3. MySQL入門③データ型
コマンドプロンプトの画面というか、黒い画面に何か打ち込んでると、なんとなくそれっぽくて高まります。
MySQLばりばり進めますー
1. データ型
1-1. VARCHARデータ型とCHARデータ型
1-2.BINARYデータ型
1-3.TEXTデータ型
1-4. BLOBデータ型
1-5.数値データ型
1-6.DATEデータ型とTIMEデータ型
1-1. VARCHARデータ型とCHARデータ型
8-2. MySQL入門②MySQLのコマンドの最後に、テーブルを作成しました。
その際に、テーブルの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はほぼ指定通りの日付が保持できます。
いじょーー