English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MySQL データ型

以下の各セクションでは、MySQLがサポートするデータ型について説明します。

MySQLデータ型

MySQLは3種類のデータ型をサポートしています:文字列数字および日付/時間データ型。

文字列データ型

文字列データ型は、名前、住所、説明、またはアルファベットと数字を含む値、例えば画像やオーディオファイルなどのバイナリデータを保存するために通常使用されます。

CHARとVARCHAR型

CHARデータ型は最大255文字の固定長文字列です。一方、VARCHARデータ型は最大65FLOAT(535文字の可変長文字列(MySQL 5.0.3以前は255文字)。

CHARとVARCHARデータ型の宣言長さは、保存したい最大の文字数を示します。例えば、CHAR(5)まで最大で5文字。

CHARとVARCHARデータ型の主な違いはデータの保存方法です。値がCHARカラムに保存される場合、指定された長さのスペースで右詰めされますが、VARCHARカラムに値を保存する場合は詰められません。これは、値「ab」CHARが、4)に保存されます。4)カラムに格納された場合、その値は「ab」として保存されますが、同じ値は「ab」として保存されます。

ヒント:国や他の固定長の値を保存するためにCHARデータ型を使用します。/地域コード。長さが可変の名前やタイトルなどの値に対して、VARCHARはスペースを節約できます。

注意:VARCHARの有効な最大長さは、最大行サイズ65FLOAT(535バイト(すべての列で共有)と使用するキャラクタセットの制限により、VARCHARの有効な最大長さが決定されます。

BINARYとVARBINARYタイプ

BINARYとVARBINARYタイプは、CHARとVARCHARに似ていますが、これらは二進位文字列を含んでいるため、非二進位文字列を含むものとは異なります。   BINARYとVARBINARYの最大許容長は、CHARとVARCHARと同じですが、BINARYとVARBINARYの長さはバイト単位で、文字単位ではありません。

TEXTとBLOBタイプ

TEXTとBLOBデータ型は、大量のデータを保存するために特別に用意されています。TEXTデータ型は、説明やブログのコメントなどの長い文字列を保存するために使用されます。

BLOBは、可変数のデータを格納できる二進位大オブジェクトです。データベース内にバイナリメディアファイル(例えば、画像やオーディオファイル)を格納する必要がある場合、この機能は特に有用です。

4つのBLOBタイプは、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOBです。これらの違いは、格納できる値の最大長さだけです。同様に、これらの4つのテキストタイプは、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXTです。これらは、同じ最大長さとストレージ要件を持つ4つのBLOBタイプに対応しています。

以下の表は、対に並ぶMySQL文字列データ型を示しています。バイナリまたは非バイナリのいずれのタイプでも、最大長さはバイト単位で示されます。

二進位データ型非二進位データ型最大長度
BINARYCHAR255
VARBINARYVARCHAR65FLOAT(535
TINYBLOBTINYTEXT255
BLOBTEXT65FLOAT(535
MEDIUMBLOBMEDIUMTEXT16FLOAT(777FLOAT(215
LONGBLOBLONGTEXT4FLOAT(294FLOAT(967FLOAT(295

注意:非二進位文字列データ型の場合、列の長さの値は通常、バイト数ではなく文字数と呼ばれます。これは、多バイト文字を含む文字列の最大文字数が少ないことを意味します。

エンマージ(ENUM)タイプ

ENUMデータ型は、列に格納できる可能性のある値のリストを指定することができます。例えば、'male'、'female'と指定された性別ENUM(NOT) NULLのカラムは以下のいずれかの値を持つことができます:''、'male'または'female'。ENUMリストに最大で指定できます。65FLOAT(535個の異なる値。 ENUMカラムに無効な値(許可された値リストに存在しない文字列)を挿入すると、空文字列が挿入されます。

SETタイプ

SETデータ型は、カラムに挿入する値のリストを指定することを許可します。たとえば、列挙。ただし、一つの値を選択することが許されるENUMデータ型とは異なり、SETデータ型は指定された値のリストから複数の値を選択することができます。

たとえば、option SET('one', 'two') NOT NULLとして指定されたカラムは、以下のいずれかの値を格納できます: 'one'、'two'または'one,two'。カンマで区切られた複数の値(カンマ、)。SETデータ型では、最大で指定できます。64個の異なる値。

数値データ型

数値データ型は、価格、給与などのデータを格納するために通常使用されます。

INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINTタイプ

MySQLはSQL標準の整数型INTEGER(またはINT)とSMALLINTをサポートしています。MySQLはまた、SQL標準を拡張した整数型TINYINT、MEDIUMINT、BIGINTをサポートしています。以下のテーブルは、各整数型の範囲を示しています。

データ型範囲(符号付き)範囲(無符号)
TINYINT-128 から 1270 から 255
SMALLINT-32768 から 327670 から 65535
MEDIUMINT-8388608 から 83886070 から 16777215
INT-2147483648 から 21474836470 から 4294967295
BIGINT-9223372036854775808 から 92233720368547758070 から 18446744073709551615

数値データ型にはSIGNED(符号)とUNSIGNED(無符号)の追加属性があります。数値データ型はデフォルトで符号付きであり、範囲は負から正に向かって広がります。符号付き属性を追加することで数値カラムには負数を使用することができず、範囲は最小値が0から始まるように変更されます。

DECIMAL、NUMERICタイプ

DECIMALとNUMERICデータ型は正確な数値を格納するために使用されます。これらのデータ型は「固定小数点」や「正確値」タイプとも呼ばれ、たとえば製品価格のような通貨データを正確な精度を保つために使用されます。MySQLではNUMERICはDECIMALとして実装されています。

DECIMALまたはNUMERICカラムを宣言する際には、精度と小数桁数を指定できます。たとえば、DECIMAL(P、S)またはNUMERIC(P、S)で、Pは精度、Sは小数桁数です。 精度はカラムに格納できる最大桁数(小数点以下の桁数も含む)を指定し、小数桁数は小数点以下に格納できる桁数を示します。 たとえば、価格としてDECIMAL(6FLOAT(2)カラムは、六桁の数字と二桁の小数を持つどんな値も格納できます。-9999。99まで9999。99の値。

FLOAT、DOUBLEタイプ

FLOATおよびDOUBLEは近似的数値データ値を表します。これが「浮動小数点型」または「近似値型」として呼ばれる理由です。

MySQLがサポートする構文:FLOAT(M、D)またはDOUBLE PRECISION(M、D)。 (M、D)は、合計でM桁の値を保存できることを意味し、D桁は小数点以下にあります。例えば、表示される形式はFLOAT(7FLOAT(3)を表示すると、-9999。999.00   )の列を「9999MySQLは値を保存する際に四捨五入を行います。したがって、9.0007FLOAT(3,9999)。近似結果は1.00

注意:”。

浮動小数点値を比較すると問題が発生する可能性があります。なぜなら、これらは近似値であり、正確な値ではないからです。したがって、比較に使用できる値(例えば、price、salaryなど)を保存するために、DECIMALデータタイプを使用してください。

日期(DATE)と時間(TIME)データタイプ

データベース内でデータを保存するためには、生年月日、雇用日、テーブル内でレコードを作成または更新した際の日時など、通常データを保存するために使用されます。

DATEタイプ-MM-DATEデータタイプは、日付を保存するために使用されます。MySQLのDATEは以下の「YYYY 1000-01-01DD'形式で値を保存および検索します。YYYY、MM、DDは時間の年、月、日部分です。サポートされる範囲は「 9999-12-31”から“

」。

時間(TIME)タイプ-838:59:59」。TIMEデータタイプは、日または時間間隔を保存するために使用できます。MySQLのTIMEは以下の「HH:MM:SS」形式で値を保存および検索します。HH、MM、SSは時間の時間、分、秒部分(または「HHH:MM:SS」の大時間の形式)です。サポートされるTIME値の範囲は「838:59:59」。

時間部分が大きい可能性があります。なぜなら、MySQLのTIMEタイプは、一日の中の時間(少なくとも)を保存するだけでなく、24時間),また、経過時間や2つのイベント間の時間間隔(おそらく非常に大きい)にも使用できます。24時間、負の時間も含まれます)。

注意:デフォルトでは、TIME範囲を超えても有効な値は範囲の最も近い端点に切り取られます。例えば、「 860:00:00”は「 838:59:59”。無効なTIME値は「00:00:00」に変換されます。

DATETIMEおよびTIMESTAMPタイプ

DATETIMEおよびTIMESTAMPデータタイプは「YYYY-MM-DD HH:MM:SS'形式で合計の日時値を保存します。これらのデータタイプは、配達オーダーの日時、テーブル内で行を作成または修正した際のデータなど、通常日時を保存するために使用されます。

これらのデータタイプは多くの面で似ているが、いくつかの違いがあります。DATETIMEは以下の範囲をサポートしています「1000-01-01 00:00:00'から「9999-12-31 23:59:59しかし、タイムスタンプの範囲は「1970-01-01 00:00:01' UTCから'2038-01-19 03:14:07UTC。

TIMESTAMPとDATETIMEは特別な自動初期化および自動更新属性も持ちますが、これらの属性はMySQLには適用されません 5。6。5以前のDATETIMEM。

注意: MySQLはTIMESTAMP値を現在の時区からUTCに変換して保存し、UTCから現在の時区に変換して取得します。

年齢(YEAR)データ型

YEARデータ型は四桁の年齢値YYYY形式で保存するために使用されます。

それをYEARまたはYEAR(4)。サポートされるYEAR値の範囲は1901から2155。無効なYEAR値は0000に変換されます。

注意:より古いMySQLバージョンでは、二桁の年齢値YEAR(2)ですが、現在は廃止され、MySQL 5。7。5中でそのサポートは削除されました。