詳細なMySQL列タイプ
MySQLでは、いわゆる構築テーブルは列を宣言するプロセスです。データはファイルの形でハードディスクに配置され、一部はメモリに配置されます。異なる列が占める領域は異なります。カラム選択の原則は十分であり、無駄ではありません。
数値
整数
整数型には、tinyint、smallint、mediumint、int、bigintの5つの列型があります。
タイプ | バイト | 位 | 署名なし | 署名済み |
---|---|---|---|---|
tinyint | 1 | 8 | 0〜(2 ^ 8-1) | -2 ^ 7〜+(2 ^ 7-1) |
smallint | 2 | 16 | 0〜(2 ^ 16-1) | -2 ^ 15〜+(2 ^ 15-1) |
Mediumint | 3 | 24 | 0〜(2 ^ 24-1) | -2 ^ 23〜+(2 ^ 23-1) |
int | 4 | 32 | 0〜(2 ^ 32-1) | -2 ^ 31〜+(2 ^ 31-1) |
bigint | 8 | 64 | 0〜(2 ^ 64-1) | -2 ^ 63〜+(2 ^ 63-1) |
tinyintを例にとると、ハードディスク上の1バイト(8ビット)の領域を占有し、符号なしの記憶範囲は2 ^ 8-1です。負の数を表す場合、最も高いビットを使用して符号ビットをマークできます。-2 ^ 7〜+(2 ^ 7-1)(最後の7桁のみが絶対値を表し、最上位の桁は符号ビットを表します)(補足)
tinyintはデフォルトで署名され、ストレージは-2 ^ 7〜+( 2 ^ 7-1)
整数列のオプション属性tinyint(M)unsigned zerofill; M:幅(0で埋められた場合のみ意味がある)、unsigned:符号なしタイプ(非負)、zerofill:0で埋められる(デフォルトはnoシンボル);列がゼロフィルとして定義されている場合、デフォルトは符号なしです。
浮動小数点/固定小数点
浮動小数点タイプ:浮動小数点(M、D)
固定小数点タイプ:小数(M、D)
M:精度(小数点を除く合計桁数)、D:スケール(小数桁)、浮動小数点(6、2)の例-9999.99〜9999.99の範囲の数値を格納でき、取り得る値の範囲は、特殊なシェーピングとは異なります。float(4,2)の値の範囲:-99.99〜99.99、float(4,2)の符号なしの値の範囲:0.00〜99.99。
キャラクター
タイプ | 解説 | 典型的な宣言 | 範囲 |
---|---|---|---|
チャー | 固定長文字列 | 性別文字(1) | char(M)、Mの範囲は0〜2 ^ 8-1 |
varchar | 可変長文字列 | メールvarchar(20) | varchar(M)、Mの範囲は0〜2 ^ 16-1、約2W〜6Wの文字は文字セットの影響を受けます |
テキスト++ | テキスト文字列 | コンテンツテキスト | 約2W〜6Wの文字は文字セットの影響を受けます |
Charは固定長、char(M)、Mは幅、収容できる文字数を表します。
varcharは長くなります。varchar(M)、Mは幅、収容可能な文字数を表します。
違い:
スペース使用効率:
char固定長M文字(M文字未満で格納された場合、実際にはM文字を占有します。十分なM文字が内部にスペースで埋められていない場合、読み取り時にスペースが失われます; varchar:可変長、M M未満の文字が格納され、N、N <= Mに設定され、実際にはN文字を占めます。
動作速度:固定長の方が高速です。
charとvarcharの選択では、スペース使用効率と操作速度の両方が考慮されます。
日付と時刻のタイプ(挿入時には引用符が必要です)
タイプ | 範囲 |
---|---|
年 | 1901〜2155、2桁を入力した場合、'00〜69 'は2000〜2069を意味し、'70〜00'は1970〜1999を意味します |
日付(年月日) | 1000-01-01〜9999-12-31(AD) |
時間 | -838:59:59〜+ 838:59:59 |
日時(年月日時:分:秒) | 1000-01-01 00:00:00〜9999-12-31 23:59:59(AD) |
日付と時刻のタイプは秒単位で正確である必要がある列を表すために使用されることはめったにありません。日付と時刻のタイプは秒単位で正確であり、表示は簡単ですが、計算が不便だからです。タイムスタンプを使用して、秒単位で正確な列を表すことができます。タイムスタンプは、1970-01-01 00:00:00から現在までの秒数であるintに格納されます。
たとえば、datetimeストレージは使用せずに、製品のリリース時刻などの登録時刻を一般的に格納しますが、タイムスタンプは、datetimeは直感的ですが、計算は不便であり、intはタイムスタンプの格納に使用されます。 。