ホームページ >データベース >mysql チュートリアル >mysqlのデータ型は何ですか?

mysqlのデータ型は何ですか?

青灯夜游
青灯夜游オリジナル
2020-09-27 17:00:4872470ブラウズ

Mysql データ型には、BOOL、TINY INT、INT、BIG INT、FLOAT、DOUBLE、DECIMAL、CHAR、VARCHAR、TINY TEXT、TEXT、Date、DateTime、TimeStamp、 Year などがあります。

mysqlのデータ型は何ですか?

1. MySQL データ型

主に次の 5 つのカテゴリが含まれます:

整数型: BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、INT、BIG INT

浮動小数点型: FLOAT、DOUBLE、DECIMAL

文字列型: CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、 TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB

日付型: Date、DateTime、TimeStamp、Time、 Year

その他のデータ型: BINARY、VARBINARY、ENUM、SET、Geometry、Point、 MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection など

1. 整数型

MySQL データ型 意味 (符号付き)
tinyint(m) 1 バイト範囲 (-128~127)
#smallint (m) 2 バイト範囲 (-32768~32767)
mediumint(m) 3 バイト範囲 (-8388608~8388607)
int(m) 4 バイト範囲 (-2147483648~2147483647)
bigint(m) 8 バイト範囲 (-9.22*10 の 18 乗)
##数値範囲 符号なしを加算した場合、最大値は 2 倍になります。 tinyint unsigned の値は (0~256) です。

int(m) の m は、SELECT クエリ結果セットの表示幅を表します。実際の値の範囲や表示幅には影響しません。この m の用途がわかりません。

2. 浮動小数点型 (float および double)

##MySQL データ型float(m,d)#double(m,d)倍精度浮動小数点型 16 ビット精度 (8 バイト) m 合計数、d 小数点以下桁数 ##仮定しますフィールドは float(6,3) として定義されており、数値 123.45678 が挿入された場合、データベースに格納される実際の数値は 123.457 ですが、合計数値は実際の数値、つまり 6 桁の影響を受けます。整数部分の最大値は 3 桁です。数値 12.123456 を入力した場合、格納される数値は 12.1234 になります。12.12 を入力した場合、格納される数値は 12.1200 になります。
意味
単精度浮動小数点型 8 ビット精度 (4 バイト) m 総数、d 小数点以下

3、固定小数点数値

浮動小数点型はデータベースに近似値を保存しますが、固定小数点型はデータベースに正確な値を保存します。

decmal(m,d) パラメータ m

4.文字列 (char、varchar、_text)

##MySQL データ型意味固定長、最大 255 文字固定長、最大 65535 文字可変長、最大 255 文字可変長さ、最大 65535 文字可変長、最大 2 の 24 乗 - 1 文字可変長、最大 2 の 32 乗 - 1 文字
char(n)
varchar(n)
tinytext
text
mediumtext
longtext

char および varchar:

1.char(n) 保存される文字数が n 未満の場合、文字の後にスペースが追加され、クエリ時にスペースが削除されます。したがって、char 型で格納される文字列の末尾にスペースを含めることはできません。また、varchar はこれに限定されません。

2.char(n) 固定長、char(4) は格納される文字数に関係なく 4 バイトを占有します。varchar は実際に格納される文字数 (n9253680a5758b884e158d3f43db76f87) です。 255)、テキストは実際の文字数であり、2 バイト

です。

2. テキスト タイプにはデフォルト値を設定できません。

3.varchar はインデックスを直接作成できますが、text ではインデックスを作成するための最初の文字数を指定する必要があります。 varchar のクエリ速度は text のクエリ速度よりも速いため、インデックスを作成するときに text のインデックスは機能しないようです。

5. バイナリ データ (_Blob)

1. _BLOB と _text は異なる方法で保存されます。_TEXT はテキスト モードで保存されます。英語の保存では大文字と小文字が区別されます。 while _Blob 大文字と小文字は関係なく、バイナリ形式で格納されます。

2._BLOB に格納されたデータは全体としてのみ読み出すことができます。

3._TEXT は文字セットを指定できますが、_BLO は文字セットを指定する必要はありません。

#6. 日付と時刻の型

MySQL データ型date時刻datetimeタイムスタンプ#フィールドをタイムスタンプとして定義すると、他のフィールドが変更されると、このフィールドの時刻データが自動的に更新されるため、このデータ型のフィールドはレコードが最後に変更された時刻を保存できます。
意味
日付'2008-12-2'
時刻'12:25:36'
日付時刻 '2008-12-2 22:06:44'
自動storage レコード変更時刻

データ型属性

MySQL キーワードNULL##NOT NULL##データ列には NULL 値を含めることはできません#DEFAULT デフォルト値PRIMARY KEY主キーAUTO_INCREMENT自動インクリメント、整数型に適しています。 UNSIGNEDUnsignedCHARACTER SET name文字セットを指定します。

2. MYSQL データ型の長さと範囲

各データ型とバイト長のリスト:

意味
データ列には NULL 値を含めることができます
#TinyInt1Integer [0,255]SmallInt2符号なし [0,65535]、符号付き [-32768,32767] MediumInt3符号なし[0,2^24-1]、符号付き[-2^23,2^23-1]]#Int4符号なし [0,2^32-1]、符号付き [-2^31,2^31-1]#BigIntFloat(M,D )Double(M,D)Decimal(M,D)#Date3 は、YYYY-MM-DD の形式で表示されます (例: 2009-07-1984 ##Time3 は、HH:MM:SS の形式で表示されます。例: 11:22:30 は YYYY の形式で表示されます。例: 2009固定長文字列。 #VarChar(M) 可変長文字列、Me3b7e9bedfb6c6cb126a079a3225f37a= などの範囲検索演算子には役に立ちません)。 MD5() 関数を使用してハッシュ値を生成することも、SHA1() または CRC32() を使用することも、独自のアプリケーション ロジックを使用してハッシュ値を計算することもできます。数値ハッシュ値は非常に効率的に保存できることに注意してください。同様に、ハッシュ アルゴリズムによって末尾にスペースが含まれる文字列が生成される場合は、末尾のスペースの削除の影響を受けるため、その文字列を CHAR または VARCHAR 列に格納しないでください。

合成ハッシュ インデックスは、BLOB または TEXT データ列に特に役立ちます。ハッシュされた識別子の値を使用した検索は、BLOB 列自体を検索するよりもはるかに高速です。

③不必要な場合は、大きな BLOB 値または TEXT 値を取得しないでください。たとえば、制約としての WHERE 句が必要なデータ行のみを検索することが確実でない限り、SELECT * クエリは良いアイデアではありません。そうしないと、目的もなくネットワーク経由で大量の値が送信される可能性があります。これは、BLOB または TEXT 識別子情報を合成インデックス列に格納するのに役立つ例でもあります。インデックス列を検索して必要なデータ行を特定し、条件を満たすデータ行から BLOB または TEXT 値を取得できます。

④ BLOB 列または TEXT 列を別のテーブルに分割します。環境によっては、元のデータ テーブルのデータ列を固定長の行形式に変換できる場合、これらのデータ列を 2 番目のデータ テーブルに移動することが合理的である場合があります。これにより、メインテーブルの断片化が軽減され、固定長データ行のパフォーマンス上の利点が得られます。また、ネットワーク上で大量の BLOB または TEXT 値を送信せずに、メイン データ テーブルに対して SELECT * クエリを実行することもできます。

浮動小数点数と固定小数点数

全員の注意を引くために、浮動小数点数と固定小数点数を紹介する前に例を見てもらいましょう。上の例では、列 c1 の値が 131072.32 から 131072.31 に変更されたことがわかりますが、これは浮動小数点数の不正確さが原因です。

mysql では、float と double (または real) は浮動小数点数であり、Decimal (または Numberic) は固定小数点数です。

固定小数点数に対する浮動小数点数の利点は、長さが確実な場合、浮動小数点数はより大きなデータ範囲を表現できることですが、欠点は、精度の問題が発生する可能性があることです。浮動小数点数と固定小数点数を将来応用する場合、誰もが次の点を覚えておく必要があります:

浮動小数点数にはエラーの問題があります。

はエラーの影響を受けやすいです。データは固定小数点数で表現または保存する必要があります。
  1. プログラミングで浮動小数点数を使用する場合は、エラーの問題に特別な注意を払い、浮動小数点数を避けるように努める必要があります。小数点比較;
  2. 浮動小数点数には注意してください いくつかの特殊な値の処理。
データ型 バイト長 範囲または使用法
Bit 1 符号なし [0,255]、符号付き [-128,127] 、天元ブログ注: BIT および BOOL ブール型は両方とも 1 バイトを占有します。
8 符号なし [0,2^64-1]、符号付き [-2^63 ,2^63 -1]
4 単精度浮動小数点数。 Tianyuan Blog は、ここでの D は精度であることを思い出させます。D74d0a28dacd7b927ffc19d3f9da8dea824 の場合、自動的に DOUBLE 型に変換されます。
8 倍精度浮動小数点。
M 1 または M 2 アンパック浮動小数点数。使用法は FLOAT および DOUBLE と同様です。Tianyuanこのブログでは、ASP で Decimal データ型が使用されている場合、データベースから直接読み取られた Decimal を操作前に Float または Double 型に変換する必要がある可能性があることを思い出させます。
#) ##Date Time
は、YYYY-MM-DD HH:MM:SS の形式で表示されます。例: 2009-07-19 11: 22:30 TimeStamp
は YYYY-MM-DD の形式で表示されます (例: 2009-07-19#)
##年 1
Char(M) MM

MM

以上がmysqlのデータ型は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。