この記事では、MySQL のデータ型一覧 (リスト) を示します。主に、整数型、浮動小数点型、文字列型、日付型、その他のデータ型の 5 つのデータ型について詳しく説明します。 、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倍平方) |
|
値の範囲たとえば、unsigned を追加すると、tinyint unsigned の値の範囲は (0 ~ 256) になります。
int(m) の m は、SELECT クエリ結果セットの表示幅を表します。この m の用途はわかりません。
2. 浮動小数点型 (float と double)
MySQL データ型
意味 |
|
float(m,d)
単精度浮動小数点型 合計 8 ビット精度 (4 バイト)数値、小数点以下 d 桁 |
|
double(m,d)
倍精度浮動小数点型 16 ビット精度 (8 バイト) m 合計数値、小数点以下 d 桁 |
|
フィールドが float ( 6,3)、数値 123.45678 を挿入すると、データベースに保存される実際の数値は 123.457 になりますが、合計数値は実際の数値、つまり 6 桁の影響を受けます。最大の整数部分は 3 桁です。数値 12.123456 を挿入すると、保存される値は 12.1234 になります。
3. 浮動小数点型は近似値を保存します。固定小数点型はデータベースに近似値を保存しますが、保存されるのは正確な値です。
10進数(m,d)パラメータ m
4. 文字列 (char、varchar、_text)
MySQL データ型
意味
|
char(n) |
固定長、最大 255 文字
|
varchar(n) |
固定長、最大 65535 文字
|
tinytext |
可変長、最大 255 文字
|
テキスト |
可変長、最大 65535 文字
|
可変長、最大2へ24乗1文字 |
longtext |
可変長、2の32乗1文字まで |
| charとvarchar: | 1.char(n)を格納する場合 文字数がn 未満の場合、その後にスペースが追加され、クエリ時にスペースが削除されます。したがって、char 型で格納される文字列の末尾にスペースを含めることはできません。また、varchar はこれに限定されません。
2.char(n) 固定長、char(4) は格納される文字数に関係なく 4 バイトを占有します。varchar は実際に格納される文字数 + 1 バイト (n<=255) または 2 バイト (n>) です。 255),
つまり、varchar(4)、3 文字を格納すると 4 バイトが占有されます。
3.Char型の文字列取得速度はvarchar型に比べて高速です。
varchar と text:
1.n は varchar に指定できますが、text には指定できません。varchar の内部ストレージは、実際に格納される文字数 + 1 バイト (n<=255) または 2 バイト (n>) です。 255)。テキストは実際の文字数 + 2 単語
セクションです。
2. テキストタイプにはデフォルト値を設定できません。
3.varchar はインデックスを直接作成できます。テキストはインデックスを作成するために最初の文字数を指定する必要があります。 varchar のクエリ速度は text のクエリ速度よりも速いですが、インデックスが作成されると、text のインデックスは機能しないようです。
5. バイナリ データ (_Blob)
1. _BLOB と _text は異なる方法で保存され、英語の保存では大文字と小文字が区別されますが、_Blob は大文字と小文字に関係なくバイナリ モードで保存されます。
2._BLOBに格納されたデータは全体としてのみ読み出すことができます。
3._TEXTは文字セットを指定できますが、_BLOは文字セットを指定する必要はありません。
6. 日付時刻型
MySQL データ型
意味
date |
Date '2008-12-2' |
time |
Time '12:25:3 6分 |
datetime |
Date time '2008-12-2 22:06:44' |
timestamp |
レコードの変更時刻を自動的に保存します |
フィールドをタイムスタンプとして定義すると、他のフィールドが変更されたときにこのフィールドの時間データが自動的に更新されるため、このデータ型フィールドにはこのレコードの最終変更時間を保存できます。
データ型の属性
MySQLキーワード |
意味 |
NULL |
データ列にはNULL値を含めることができます |
NOT NULL |
データ列にはNULL値を含めることはできません |
DEFAULT |
デフォルト値 |
PRIMARY KEY |
主キー |
AUTO_INCREMENT |
自動インクリメント、整数型に適しています |
UNSIGNED |
Unsigned |
CHARACTER SET名 |
キャラクターを指定してくださいset |
2. MYSQL データ型の長さと範囲
各データ型とバイト長のリスト:
データ型 |
バイト長 |
範囲または使用法 |
ビット |
1 | 符号なし [0,255]、符号付き [-128,127]、Tianyuan Blog 注: BIT と BOOL ブール型は両方とも 1 バイトを占有します |
TinyInt |
1 |
Integer [0,255] |
SmallIn t |
2 |
符号なし [0,65535]、符号付き [-32768,32767] |
MediumInt |
3 |
符号なし [0,2^24-1]、符号付き [-2^23,2 ^23-1]] |
Int |
4 |
符号なし[0,2^32-1]、符号付き[-2^31,2^31-1] |
BigInt |
8 |
符号なし[0,2^64 -1]、符号付き [-2^63 ,2^63 -1] |
Float(M,D) |
4 |
単精度浮動小数点数。 Tianyuan Blog では、D 24 の場合は自動的に DOUBLE 型に変換されることを思い出します。 |
Double(M,D) |
8 |
倍精度浮動小数点。 |
Decimal(M,D) |
M+1 または M+2 |
アンパック浮動小数点数。ASP で Decimal データ型を使用する場合、使用法は FLOAT および DOUBLE と同様であることを Tianyuan Blog が思い出させます。データベースから読み取った Decimal は、操作前に Float 型または Double 型に変換する必要がある場合があります。 |
Date |
3 |
はYYYY-MM-DDの形式で表示されます。例: 2009-07-19 |
Date Time |
8 |
はYYYY-MM-DD HHで表示されます:MM:SS 形式が表示されます。例: 2009-07-19 11:22:30 |
TimeStamp |
4 |
は YYYY-MM-DD 形式で表示されます。例: 2009-07- 19 |
時刻 |
3 |
HH:MM:SSの形式で表示されます。例: 11:22:30 |
年 |
1 |
はYYYYの形式で表示されます。例: 2009 |
Char(M) |
M |
固定長文字列。 |
VarChar(M) |
M |
可変長文字列、M<=255が必要 | Binary(M) | M | Charのようなバイナリストレージ、固定長の不足分を挿入することを特徴とする0 | VarBinary(M) | M | VarCharに似た可変長バイナリストレージで、パディングなしの固定長が特徴です0 | Tiny Text | Max:255 | 大文字と小文字を区別しない | テキスト | 最大: 64K | 大文字と小文字を区別しない | 中程度のテキスト | 最大: 16M | 大文字と小文字を区別しない | 長文 | 最大: 4G | 大文字と小文字を区別しない | TinyBlob | 最大:255 | ケース敏感 | Blob | 最大:64K | 大文字と小文字を区別 | 中Blob | 最大:16M | 大文字と小文字を区別 | LongBlob | 最大: | 大文字と小文字を区別します | 列挙型 | 1 または 2 | 最大 65535 の異なる列挙値 | Set | 最大 8 | 最大 64 の異なる値 | ジオメトリ | | | ポイント | | | LineString | | | Polygon | | | MultiPoint | | | MultiLineString | | | MultiPolygon | | | GeometryCollection | | | 3. 使用上の提案1. データ型を指定する場合、一般に、TINY INT が使用できる場合は、INT 型を使用しないことが最善です。 DOUBLE 型は使用しないことをお勧めします。これは、特に大規模なデータ量のテスト条件下では、MYSQL の動作効率に大きな影響を与えます。 2. データ テーブルを複雑に設計する必要はありません。データ テーブルとフィールドの名前付けも、後々のメンテナンスに便利です。スキル 4. データテーブル構造を設計する前に、それがあなたの部屋であることを想像してください。おそらく結果はより合理的で効率的になるでしょう 5. データベースの最終設計結果は、効率性と拡張性の間の妥協点でなければなりません。 データ型を選択するための基本原則 前提: 適切なストレージ エンジンを使用します。 選択原則: 選択したストレージ エンジンに基づいて、適切なデータ型を選択する方法を決定します。 次の選択方法はストレージ エンジンによって分類されています:
MyISAM データ ストレージ エンジンとデータ列: MyISAM データ テーブル。可変長 (VARCHAR) データ列の代わりに固定長 (CHAR) データ列を使用するのが最適です。 。 MEMORY ストレージ エンジンとデータ列: MEMORY データ テーブルは現在、固定長のデータ行ストレージを使用しているため、CHAR 列と VARCHAR 列のどちらが使用されるかは関係ありません。どちらもCHAR型として扱われます。 InnoDB ストレージ エンジンとデータ列: VARCHAR 型を使用することをお勧めします。 InnoDB データ テーブルの場合、内部行ストレージ形式は固定長列と可変長列を区別しません (すべてのデータ行はデータ列値へのヘッダー ポインターを使用します)。そのため、本質的には、固定長 CHAR 列を使用すると区別されます。可変長の VARCHAR 列を使用するよりも単純である必要があります。したがって、主なパフォーマンス要因は、データ行によって使用される合計ストレージです。 CHAR は VARCHAR よりも平均して多くのスペースを占有するため、処理する必要があるデータ行の合計ストレージとディスク I/O を最小限に抑えるには、VARCHAR を使用することをお勧めします。 固定長データ列と可変長データ列について話しましょう。 char は varchar
CHAR および VARCHAR 型に似ていますが、保存と取得の方法が異なります。また、最大長と末尾のスペースが保持されるかどうかという点でも異なります。保存または取得中に大文字と小文字の変換は実行されません。 以下の表は、さまざまな文字列値を CHAR(4) 列と VARCHAR(4) 列に保存した後の結果を示し、CHAR と VARCHAR の違いを示しています。 VARCHAR(4)
ストレージ要件 | '' | '' | 4バイト | '' | 1バイト | 'ab' | 'ab ' | 4バイト | 'ab' | 3バイト | 'abcd' | 'abcd' | 4バイト | 'abcd' | 5バイト | 'abcdefgh' | 'abcd' | 4バイト | 'abcd' | 5バイト | 上記の表の最後の行の値は、 | 厳密モードが使用されていない場合にのみ適用されることに注意してください ;MySQLが厳密モードで実行されている場合、この値を超える値は、列の長さは保存されず | 、エラーが発生します。 | CHAR(4) 列と VARCHAR(4) 列から取得される値は、取得時に CHAR 列から末尾のスペースが削除されるため、常に同じであるとは限りません。次の例はその違いを示しています: mysql> CREATE TABLE vc (v VARCHAR(4), c CHAR(4)); | Query OK、影響を受ける行は 0 (0.02 秒) mysql> INSERT INTO vc VALUES ('ab ' , 'ab ');クエリ OK、1 行が影響を受けました (0.00 秒) mysql> SELECT CONCAT(v, '+'), CONCAT(c, '+') FROM vc;+------ -- --------+----------------+| CONCAT(v, '+') |+- - ---------------+----------------+| ab + ----------+-- ----------+1行セット(0.00秒)関連記事:
MYSQLのデータ型の詳しい説明
数値の正しい使い方の詳しい説明MySQL データ型の種類
関連ビデオ:
データベース mysql ビデオ チュートリアル
|
以上がmysqlのデータ型は何ですか? mysqlのデータ型の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。