この記事では、MySQL のデータ型とフィールド属性について説明します。ご参考までに、詳細は以下の通りです。 この記事の内容:- データ型
- フィールドプロパティ
- 空\空でない値: NULL、NOT NULL
- 主キー
- ユニークキー: ユニークキー
- 自己成長: auto_increment
- デフォルト値: デフォルト
- フィールドの説明: コメント
- 補充:
リリース日: 2018-04-08
データタイプ: MySQL のデータ型は、保存されるデータの型です。 数値型:- 整数型: tinyint、smallint、mediumint、integer、bigint
- デフォルトは符号付きです。符号なしのデータ型を使用する必要がある場合は、最後に「UNSIGNED」を追加します。
タイプ | 略語 | バイトサイズ | (符号付き) 範囲 | (符号なし) 範囲 | 述べる | 整数型: | | | | | | 小さな | | 1 | 0~255 | -128~127 | | スモールイント | | 2 | 0~65535 | -32768~32767 | | ミディアムミント | | 3 | 0~16777215 | -8388608~8388607 | | 整数 | 内部 | 4 | 0~4294967295 | -2147483648~2147483647 | | ビッグイント | | 8 | 0~2 64 -1 | -2 63 ~2 63 -1 | |
- 小数点タイプ:
- 浮動小数点型: float(size,d), double(size,d)
- size は値の最大桁数、d は小数点の右側の桁数です (その桁数を入力しなくても、その桁は埋められます)。
- FLOAT の精度は 6 ~ 7 桁(状況による? 結局マシンは 2 進数で保存されます)、DOUBLE の精度は 14 ~ 15 桁です。
- 整数部の数は SIZE-D です。直接格納される値の数はこれより多くできません。ただし、浮動小数点数を四捨五入して整数がオーバーフローし、最大桁数を超える場合は、システムで許可されます (バージョンによっては許可されなくなったようですので、一般的には小数点以下の桁数はこれを超えないようにしてください)。
- 多くの場合、2 つの浮動小数点の値の範囲 (非常に大きい) に注意する必要はありませんが、その精度には注意する必要があります。
 
- 固定小数点型: 10進数(サイズ,d)
- size は値の最大桁数で、最大 65 です。d は小数点の右側の最大桁数で、最大 30 です。
- 固定小数点型では、小数部の丸めにより整数部が範囲を超えることはできません。
- DECIMAL は精度を失いません。これは、「文字列」ストレージを使用していると理解できます (MYSQL の権威あるガイドではそう述べられています)。

- 括弧のない float、double、decimal のデータ型は、小数部がないことを表します。
日付と時刻の種類:日付と時刻の種類には、日付、時刻、日付時刻、タイムスタンプ、年が含まれます。 - Datetime: 時刻と日付。形式は YYYY-MM-DD HH:II:SS、範囲は 1000 から 9999 です (一部のバージョンではすでに 0 から 9999 までが許可されていますか? よくわかりません)。
- 日付: 日付。形式は YYYY-MM-DD、範囲は 1000 から 9999 です。
- 時間: 期間。形式は HH:II:SS です。指定された時間は特定の間隔内であり、正または負の値にすることができます。 -838:59:59~838:59:59 の範囲は、特定の日付の前後の時間範囲を表します [24 時間以内の時間を表すためにのみ使用する場合、時間範囲は無視できます]
- タイムスタンプ: 形式は YYYY-MM-DD HH:II:SS で、範囲は 1970-01-01 00:00:00 から 2038-01-19 03:14:07 です。[行レコードが変更されると、タイムスタンプは現在の時刻に変更されます。 】
- 年: 年、範囲は 1901-2156
 - 元々は year(2) と year(4) の 2 つの形式がありましたが、5.7 で year(2) は削除されました。
文字列型: set : 文字列を設定します。特定の文字列をコレクションに追加します。- セットを定義した後は、セット要素の外側に文字列を挿入することはできません(条件を満たす複数の文字列を挿入することはできます)
- 実際、コレクション文字列には数値のみが格納され、システムによって対応する文字列に自動的に変換されます。
- セット内の各要素はバイナリ ビットに対応します。選択された要素は 1、選択されていない要素は 0 です。左側はバイナリの下位ビット、右側は上位ビットです。バイナリの結果は右から左に得られます。
テーブルmy_setを作成します(
趣味セット('サッカー','バスケットボール','卓球','コンピューター')
)文字セットutf8;
my_set に値 ('basketball,computer') を挿入します。
my_set値に挿入(3);-- 3=0011
my_set 値に挿入(5);-- 5=0101 
enum : 列挙文字列- これは set に少し似ていますが、ここに挿入できる文字列は 1 つだけです (set 型のフィールドの値は複数の set 要素にすることができますが、enum はそのうちの 1 つにしかできません)
- 可能なデータをリストし、実際に保存できるのはリストされたデータのみです。
- 列挙型を使用すると、データを統合し、ストレージ スペースを節約できます (列挙型には数値のみが保存され、システムによって文字列に変換されます)。
- 列挙要素は実際には定義された順に 1 から番号が付けられるため、列挙要素に対応する数値を直接挿入できます。
- のように:
テーブルmy_enumを作成します(
性別 enum('男性','女性','不明')
)文字セットutf8; 
テキスト: テキスト文字列- テキストを保存する場合、文字数が 255 を超える場合は通常 text が使用されます。
varchar: 可変長文字列- varchar(L)、Lは文字長を表し、単位は文字、最大長は65536です。実際のストレージでは、長さを格納するために 1 ~ 2 バイトが必要です (1 または 2 は実際のサイズによって決まり、2 16 =35536、<= 255 の場合は通常 1 バイト)。使用時には、定義されたサイズに応じてスペースが割り当てられますが、実際のニーズに応じてスペースが削減されます (たとえば、指定されたサイズが 60 で、実際のサイズが 30 しかない場合、実際のスペースは 31 ~ 32 になります)。
- L が 255 より大きい場合は、varchar ではなく Text を使用することをお勧めします。

char: 固定長文字列- char(L)、Lは文字長を表し、単位は文字、最大長は255、Lが使用されていない場合のデフォルトは1です。
- 異なる環境で文字が実際に占めるスペースは、文字のサイズによって異なります。UTF8環境では、char(4) が使用するバイト数は 4*3=12 です。
補充:表示幅とパディング:- 列タイプの後に表示される値は、データが最終的に表示される最小桁数 (符号を含む) を表します。
- 通常、表示するには小さすぎるデータにはスペースが埋め込まれます。また、zerofill を使用してゼロを埋めることもできます (ゼロを埋めると、データ型は自動的に符号なしになります)。
- 小さな(3)スペースパディング効果:
、ゼロフィル効果: 
テーブルmyInt(t1 TINYINT(3))を作成します。
myInt テーブルを削除します。
myInt値(127)、(1)に挿入します。
myInt から * を選択します。
テーブルmyIntを変更し、t1 tinyint(3)をゼロフィルします。
myInt から * を選択します。 レコード長の問題があるため、文字列を簡単に保存するために最大サイズを使用しないでください。- MySQL では、データは 65535 バイトを超えてはならないと規定されています。
- いずれかのフィールドで null が許可されている場合、システムはレコード全体から 1 バイトを自動的に保存して NULL を格納します。
- テキストはレコードの長さを占有せず、追加で保存されます。
- UTF8 の varchar の上限は 65535-2 (長さを格納するために 2 バイト必要) / 3 = 21844 なので、最大文字数は 21844 です。
- GBK における varchar の上限: 65535-2 (長さを格納するには 2 バイト必要) /2=32766
フィールドプロパティ:フィールド属性は、データ型以外のフィールドの属性であり、通常、空/空でない値、主キー、一意のキー、自動増分、デフォルト値、説明、その他の属性が含まれます。 空\空でない値: NULL、NOT NULL- デフォルトでは、フィールドのデータは空のままにできます。たとえば、個人の情報レコードには電子メール アドレスがない場合があります (これを「空の文字列」で表すことを検討する人もいます)。入力する必要のないフィールドは null に設定できますが、たとえば、必須データを入力せずに空白のままにしておく場合は、このフィールドを null 以外に設定できます。
- 空のデータが許可され、空のデータは null として表示されます。
 - 空でないフィールドに null を挿入すると、エラーが報告されます。
 - null\not null 属性を定義する方法 (null はデフォルトで許可されるため、主に not null に焦点を当てます):
; もちろん、フィールドのフォーマットを変更することで、フィールドに非NULL属性を定義することもできます。
主キー- 主キーは各レコードを一意に識別するために使用されます(全員が独自のIDカードを持っています)
- 各テーブルには主キーを 1 つだけ設定できます。
- 一意の識別子であるため、主キー フィールドのデータは空にできず、主キー フィールドのデータ値を繰り返すこともできません。
- 主キーは検索速度を向上できるインデックスでもあります。
- 主キーの定義:
- 1. テーブル構造を定義するときに、フィールドの属性として定義します。
  - 2. テーブル構造を変更し、主キーを持つフィールドを追加します。
- 3. テーブル構造を変更し、フィールドに主キー属性を追加します。

- 主キーの目的: 主キーの主な目的は、各レコードを一意に識別することです。たとえば、2 つのテーブル (学生テーブルと教師テーブル) 間の多対多の関係を 1 つのテーブルにカプセル化する場合、抽出されたマッピング フィールドは通常、それぞれの主キーになります。
; 主キー データは繰り返し不可能であるため、データの一意性を制限するためにも使用されます。 - 主キーの削除:
ユニークキー: ユニークキー- 一意キーの機能は主キーの機能と似ていますが、主キーは 1 つしか存在できないのに対し、一意キーは複数存在でき、一意キーのフィールドのデータは空でもかまわないという点が異なります。
- 一意のキーを使用すると、フィールド内のデータが重複しないようにフィールドを制約できます。
- 一意のキーも null ではなく、テーブルに主キーがない場合、desc テーブル構造に主キーとして表示されます。
- 一意キーが null を許可しない場合、関数は主キーと同じになります。
- ユニークキーの定義方法は主キーを参照することができます。
- 一意のキーの削除:
alter table table name drop index unique key name; -- 一意のキーは、デフォルトでフィールド名を使用して名前を定義します。
自己成長: auto_increment- 自動増分機能は、レコードが挿入されるにつれてフィールドのデータを増やすことです(このフィールドにデータを挿入せずに)。
- 自己増分の前提は、このフィールドが主キーや一意のキーなどの「インデックス」でなければならないということです。
- 自己増分の前提は、このフィールドのデータ型が数値型であることです。(float が指定された場合、小数にはならず、整数のみになります)
- テーブルには自動インクリメントを 1 つだけ設定できます。
- 値が指定されていないか null が指定されている場合にのみ、フィールドは正しく自動的に増加されます。特定の自己増加が失敗した場合、フィールドは次回も現在のフィールドの最大値から自動的に増加し続けます。
- 自動成長を定義する方法:
; もちろん、フィールドのフォーマットを変更することで、フィールドに非NULL属性を定義することもできます。 - 自動成長の変更:
- 成長率を変更します: set auto_increment = value;
- 次の増加の値を変更します: alter table table name auto_increment = value; [変更された値は増加のみ可能で、減少はできません。データ重複の問題が発生する可能性があるためです]
- 自動増分を表示します: 「auto_increment%」のような変数を表示します。
- 自己増分の削除: 削除するには alter を使用します。alter がフィールド属性を変更する場合、元の属性が含まれていない場合は削除されます。
デフォルト値: デフォルト- デフォルト値の機能は、フィールドに値を割り当てない場合に、デフォルト値をデータとして使用することです。たとえば、性別が選択されていない場合は、デフォルトで「機密」が使用されます。
- デフォルト値は次のように定義されます。
 
フィールドの説明: コメント- フィールドの説明は、フィールドを説明するために使用されます。データ テーブルの作成ステートメントを表示するときに表示され (選択結果には表示されません)、特定のフィールドの意味を理解するのに役立ちます。
- 意味:
 
補充:- 複合キー: 複数のフィールドを 1 つのキーに組み合わせることができます。たとえば、学生は複数のコースを受講できますが、学生 ID とコース ID は組み合わせたときに一意である必要があります。ここでは、主キーを使用してこの状況を制限します。
- 定義方法(複合は主キーを例にとります):
 - データ制約(上記の表を例に挙げます):

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL トランザクション操作スキル」、「MySQL ストアド プロシージャ スキル」、「MySQL データベース ロック関連スキルの概要」、および「MySQL 共通関数の概要」 この記事が皆様のMySQLデータベース設計に役立つことを願っています。 以下もご興味があるかもしれません:- MySQL データ型の完全分析
- MySQL ノート: データ型の詳細な説明
- MySQL データ型の説明
- MySql データ型チュートリアル例の詳細な説明
|