ホームページ >データベース >mysql チュートリアル >mysqlのフィールドタイプとは何ですか?
mysql フィールド タイプには 5 つのタイプがあります: 1. 整数タイプ、主に INT、BIGINT、TINYINT などの整数を格納するために使用されます; 2. 浮動小数点数および固定小数点数タイプ、 10 進数を格納、浮動小数点数は FLOAT と DOUBLE、固定小数点数には DECIMAL が含まれます; 3. 文字列型、文字列データなどの格納に使用されます。
このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。
データベース内のすべてのフィールドには、その列に格納されるデータを制限または許可する適切なデータ型が必要です。たとえば、フィールドに数値が格納されている場合、対応するデータ型は数値である必要があります。
間違ったデータ型を使用すると、アプリケーションの機能やパフォーマンスに重大な影響を与える可能性があるため、テーブルを設計するときは、データ列で使用されるデータ型に特に注意する必要があります。データを含む列を変更することは簡単なことではないため、変更するとデータが失われる可能性があります。したがって、テーブルの作成時に各列に正しいデータ型と長さを設定する必要があります。
MySQL フィールドのデータ型は、整数型、浮動小数点型と固定小数点型、日時型、文字列型、バイナリ型などの 5 種類に大別できます。
注: 整数型と浮動小数点型を総称して数値データ型と呼ぶ場合があります。
1. 整数型
整数型は数値データとも呼ばれ、主に整数を格納するために使用されます。数字。
MySQL はさまざまな数値データ型を提供します。データ型が異なれば、値の範囲も異なります。保存できる値の範囲が大きくなるほど、必要な記憶域も大きくなります。
MySQL が提供する主な整数型は、TINYINT、SMALLINT、MEDIUMINT、INT、および BIGINT であり、それらの属性フィールドに AUTO_INCREMENT 自動インクリメント制約を追加できます。次の表に、MySQL の数値型を示します。
説明 | ストレージ要件 | |
---|---|---|
小さな整数 | 1バイト | |
小さな整数 | 2バイト | |
中サイズの整数 | 3 バイト | |
通常のサイズの整数 | # #4 バイト | |
大きな整数 | 8 バイト |
各データ型の値の範囲は、占有バイト数に基づいて確認できます。たとえば、TINYINT の格納に 1 バイト (8 ビット) が必要な場合、TINYINT 符号なし数値の最大値は 28-1 (つまり 255) となり、TINYINT 符号付き数値の最大値は 27-1 (つまり 127) になります。
2. 浮動小数点型と固定小数点型MySQL は浮動小数点と固定小数点数を使用して小数を表します。
浮動小数点型には、単精度浮動小数点数 (FLOAT) と倍精度浮動小数点数 (DOUBLE) の 2 つがあり、固定小数点型は DECIMAL の 1 つだけです。
浮動小数点型と固定小数点型はどちらも (M, D) で表すことができます。M は精度と呼ばれ、総桁数を示します。D はスケールと呼ばれ、10 進数の桁数を示します。 。
浮動小数点数型の値の範囲は、表示幅と小数点以下の桁数をそれぞれ表す M (1 ~ 255) と D (1 ~ 30、M-2 を超えることはできません) です。 FLOAT および DOUBLE では M および D はオプションであり、FLOAT および DOUBLE 型はハードウェアがサポートする最大精度で保存されます。 DECIMAL のデフォルトの D 値は 0、M 値は 10 です。
次の表に、MySQL の 10 進数の型とストレージ要件を示します。
ストレージ要件 | FLOAT | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4バイト | DOUBLE | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8バイト | DECIMAL (M, D), DEC | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
M 2 バイト |
タイプ名 | 日付形式 | 日付範囲 | ストレージ要件 | ||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
年 | YYYY | 1901 ~ 2155 | 1バイト | ||||||||||||||||||||||||||||||||||||||||||||||||||
TIME | HH :MM :SS | -838:59:59 ~ 838:59:59 | 3 バイト | ||||||||||||||||||||||||||||||||||||||||||||||||||
DATE | YYYY-MM -DD | 1000-01-01 ~ 9999-12-3 | 3 バイト | ||||||||||||||||||||||||||||||||||||||||||||||||||
DATETIME | YYYY-MM- DD HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 8 バイト | ||||||||||||||||||||||||||||||||||||||||||||||||||
YYYY-MM-DD HH:MM:SS | 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC | #4 バイト | ## |
説明 | ストレージ要件 | |||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
固定長の非バイナリ文字列 | M バイト、1<=M<=255 | |||||||||||||||||||||||||
可変長の非バイナリString | L 1 バイト、L<=M および 1<=M<=255 | |||||||||||||||||||||||||
非常に小さい非バイナリ文字列 | L 1 バイト、L | |||||||||||||||||||||||||
小さな非バイナリ文字列 | L 2 バイト、L#16 | ##MEDIUMTEXT | ||||||||||||||||||||||||
L 3 バイト、L | LONGTEXT | |||||||||||||||||||||||||
L 4 バイト、ここでは L<2^32 | ENUM | |||||||||||||||||||||||||
列挙値の数に応じて 1 バイトまたは 2 バイト (最大値は 65535) | SET | |||||||||||||||||||||||||
1、2、3、4、または 8 バイト (設定に応じて)セットメンバーの数 (最大 64 メンバー) |
VARCHAR 型と TEXT 型は可変長型であり、その記憶域要件は、型の最大可能サイズではなく、列値の実際の長さ (上の表では L で示されています) に依存します。 たとえば、VARCHAR(10) 列には、最大 10 文字の文字列を格納できます。実際の格納には、文字列の長さ L に、文字列の長さを記録するための 1 バイトを加えたものが必要です。文字「abcd」の場合、L は 4 であり、記憶域には 5 バイトが必要です。 CHAR 型と VARCHAR 型 CHAR(M) は固定長文字列であり、文字列の列長は定義時に指定します。保存すると、指定された長さまで右側にスペースが埋め込まれます。 M は列の長さを表し、範囲は 0 ~ 255 文字です。 たとえば、CHAR(4) は、最大 4 文字を含む固定長の文字列列を定義します。 CHAR 値を取得すると、末尾のスペースが削除されます。 VARCHAR(M) は可変長文字列で、M は最大列の長さを表し、M の範囲は 0 ~ 65535 です。 VARCHAR の実際の最大長は、最も長い行のサイズと使用される文字セットによって決まりますが、実際に占有されるスペースは、文字列の実際の長さに 1 を加えたものになります。 たとえば、VARCHAR(50) は、最大長 50 の文字列を定義します。挿入された文字列が 10 文字しかない場合、実際に格納される文字列は 10 文字と文字列の終わりの文字になります。 VARCHAR の末尾のスペースは、値の保存および取得時に保持されます。 TEXT 型 TEXT 列には、記事のコンテンツやコメントなどの非バイナリ文字列が格納されます。 TEXT 列の値を保存またはクエリするときに、末尾のスペースは削除されません。 TEXT タイプは、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT の 4 つのタイプに分類されます。 TEXT タイプが異なれば、記憶領域とデータ長も異なります。
ENUM 型 ENUM は、テーブルの作成時に列仕様で列挙された列値を値とする文字列オブジェクトです。構文形式は次のとおりです。 <字段名> ENUM( '值1', '值1', …, '值n' ) フィールド名は定義するフィールドを指し、値 n は列挙リストの n 番目の値を指します。 タイプ ENUM のフィールドがフェッチされる場合、そのフィールドは指定された列挙リストからフェッチできますが、一度にフェッチできるのは 1 つだけです。作成されたメンバーにスペースが含まれている場合、末尾のスペースは自動的に削除されます。 ENUM 値は内部的に整数で表されます。各列挙値にはインデックス値があります。リスト値で許可されるメンバー値には 1 から始まる番号が付けられます。MySQL はこのインデックス番号を保存します。列挙値にはインデックス値を含めることができます。最大 65535 要素。 SET タイプ SET は、0 個以上の値を持つことができる文字列オブジェクトです。SET 列には、最大 64 個のメンバーを含めることができます。値は、テーブルが作成されました。指定された値のリスト。複数の SET メンバーを含む SET 列の値を指定する場合は、各メンバーをカンマで区切ります。構文形式は次のとおりです: SET( '值1', '值2', …, '值n' ) は ENUM 型と同じです。SET 値は内部的に整数で表されますリスト値の各メンバーにはインデックス番号があります。 SET メンバー値の末尾のスペースは、テーブルの作成時に自動的に削除されます。 ただし、ENUM 型とは異なり、ENUM 型フィールドは定義された列の値から 1 つの値しか選択して挿入できませんが、SET 型の列は定義された列の値から複数の文字の結合を選択できます。
5. バイナリ型 MySQL は、テキスト文字列とバイナリ文字列の 2 種類の文字データをサポートします。前のセクション「MySQL 文字列型」ではテキスト文字列について説明しましたが、このセクションではバイナリ文字列について説明します。
MySQL のバイナリ文字列は、BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB です。 次の表は、MySQL のバイナリ データ型を示しています。括弧内の M は、長さを指定できることを示します。
BIT 类型 位字段类型。M 表示每个值的位数,范围为 1~64。如果 M 被省略,默认值为 1。如果为 BIT(M) 列分配的值的长度小于 M 位,在值的左边用 0 填充。例如,为 BIT(6) 列分配一个值 b'101',其效果与分配 b'000101' 相同。 BIT 数据类型用来保存位字段值,例如以二进制的形式保存数据 13,13 的二进制形式为 1101,在这里需要位数至少为 4 位的 BIT 类型,即可以定义列类型为 BIT(4)。大于二进制 1111 的数据是不能插入 BIT(4) 类型的字段中的。 提示:默认情况下,MySQL 不可以插入超出该列允许范围的值,因而插入数据时要确保插入的值在指定的范围内。 BINARY 和 VARBINARY 类型 BINARY 和 VARBINARY 类型类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字节字符串。使用的语法格式如下: 列名称 BINARY(M) 或者 VARBINARY(M) BINARY 类型的长度是固定的,指定长度后,不足最大长度的,将在它们右边填充 “\0” 补齐,以达到指定长度。例如,指定列数据类型为 BINARY(3),当插入 a 时,存储的内容实际为 “\a0\0”,当插入 ab 时,实际存储的内容为“ab\0”,无论存储的内容是否达到指定的长度,存储空间均为指定的值 M。 VARBINARY 类型的长度是可变的,指定好长度之后,长度可以在 0 到最大值之间。例如,指定列数据类型为 VARBINARY(20),如果插入的值长度只有 10,则实际存储空间为 10 加 1,实际占用的空间为字符串的实际长度加 1。 BLOB 类型 BLOB 是一个二进制的对象,用来存储可变数量的数据。BLOB 类型分为 4 种:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB 【相关推荐:mysql视频教程】 |
以上がmysqlのフィールドタイプとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。