-
テーブルデザイン
-
データベース名、テーブル名、フィールド名は小文字でなければならない、「_」、スプリット、および名前もはや12文字を超えると、あなたは名前がイタリア語を知っています見てみたいです。
-
私たちは、使用することをお勧めのInnoDBストレージエンジンを。
-
単精度浮動小数点ストアは、代替DECIMALのFLOATとDOUBLEを使用する必要があります。
-
UNSIGNEDは非負の値を格納することをお勧めします。
-
INT UNSIGNEDは、ストレージ推奨IPV4を。
-
定義の長さを成形することは、代わりにINTのINT、(4)を使用するように、追加されません。
-
TINYINT UNSIGNEDを使用するような範囲0-80のような短いデータ・タイプを、使用。
-
列挙型を使用することをお勧めしません、代わりにTINYINTを使用しています。
-
TEXTを使用しないでくださいBLOBのタイプ。
-
VARCHAR(N)、Nは、VARCHAR(255)のようなバイトの数よりも文字の数を表し、最大255の記憶することができる文字は、実際の幅Nを選択することが必要です
-
、できるだけ小さくVARCHAR(N)、NすべてのMySQL VARCHAR最大フィールド長のテーブルは、ソート、65535バイトであるとのクラスの一時テーブルを作成するためのメモリ操作、アプリケーションは、Nの長さを使用するメモリ。
-
テーブルのキャラクタ・セットUTF8を選択します。
-
VARBINARYは、可変長文字列を格納し使用してください。
-
メモリ使用のYEAR型、DATE型を使用して日付を格納し、(第2の精度)蓄積時間は、タイムスタンプを入力TIMESTAMP 4バイト、8バイトのDATETIMEを使用しているため、お勧めします。
-
投書欄は、NOT NULLとして定義されます。
-
他のテーブルに分割特大フィールド。
-
データベースでは、使用VARBINARYを禁止BLOBのように店の写真、ドキュメント、および。
-------------------------------------------------- -------------------------------完璧な分割ライン---------------- -------------------------------------------------- ----------------------------------
整数データについて
①TINYINT:0-2 8-1 ^未署名が署名7〜2 ^ -2 ^ 7-1;
②SMALLINT:符号なし0〜2 ^ -2 ^ 16-1符号付き15〜2 ^ 15-1。
③MEDIUMINT:符号なしの0〜2 ^ 24-1〜23が2 ^ -2 ^ 23-1を締結している。
④INT:符号なし0 32-1 ^ 2に署名し-2 ^ 31 31-1 ^ 2;最も一般的に使用されます。
⑤BIGINT:符号なし0〜^ 64-1 2の符号付き-2 ^ 63 ^ 63-1 2。
多くの企業が誤って背後に「整数」の数が表していると思いますが、データベースの整数データの多くは意味「int型の長さ」「ZEROFILL /ゼロ機能を補完します。」我々は間違っている可能性がありあれこれ考えるために、明らかに、長さがない定義されていることを見つけます「記憶された最大幅を許可」、例えば、誤っていると思う int(1)
格納することができません 10
。
INT(M)Mは、ディスプレイの最大幅を示します。効果的なディスプレイ255の最大の幅に関係なく、サイズまたは格納された値の種類の幅の表示範囲が含まれます。
ディスク上のINT(3)、INT(4)、INT(8)は、4 btyesは、ストレージスペースを占有されています。同じデータ型intを持つ外部のユーザー少し異なる方法、INT(M)に加えて、はっきりそれを置くために。
参照
「ハイパフォーマンスMySQLの」説明
著書「4.1選択する最適化されたデータタイプ」に記載された「高性能のMySQL」:
で、それが正当な値の範囲を限定するものではないが、MySQLは、(MySQLのコマンドラインクライアントなど)のインタラクティブなツールの数を提供していますMySQLは、このようなINT(11)のように整数型の幅を指定することができ、ほとんどのアプリケーションにとっては意味がありませんストレージの文字数を表示し、計算するために、INT(1)及びINT(20)が同一であります
「MySQLのマニュアル」の説明
MySQLの5.7手册 "12.2.5数値型属性":
MySQLは整数によって定義された表示長のような括弧に含まサポート INT(4)
整数の表示サイズを定義する4文字より少ない数のために、いくつかのデータベースソフトウェアが4未満ビット「スペース」で充填され、4つの文字でありますデジタル数字。
これは、指定した長さよりも大きいがフィールドに書き込まれるデジタルストレージのフィールドの表示範囲の長さを制限しないだけでなく、表示番号を妨げない。例えば、 SMALLINT(3)
フィールド及び SMALLINT
デジタルストレージスコープである -32768 to 32767
つ以上の格納されたデジタル場合、中央値はまだに格納することが許可されている SMALLINT(3)
フィールド、および元の数字。
組み合わせた場合に ZEROFILL
使用される特性 0
などのパッドに、 INT(4) ZEROFILL
フィールド番号 5
として記憶されます 0005
。
-------------------------------------------------- -------------------------------完璧な分割ライン---------------- -------------------------------------------------- ----------------------------------
varchar型について
MySQLは最初のバージョンを決定しなければならない
記憶UTF8文字の場合、16(各文字のための3バイト)を格納することができ、50のバイトを指し、4.0以下、VARCHAR(50)
5.0以上、VARCHAR(50)、手段数字、文字またはUTF8文字(各文字に3バイト)は、50を格納することができ、それが格納されているかどうか、50文字です
実際には、最善の方法は、独自のデータベースにあるJianzhongの漢字の数を配置しようとする表できるようになりました5.0 MySQLが上に既にある、VARCHAR(50)が50個の文字を保存することができます
CREATE TABLE varchar_test( `id`のINT(11 )NOT NULL、 ` 文字列 `VARCHAR(10 ) )ENGINE = InnoDBは DEFAULT文字セット = utf8COLLATE = utf8_general_ciは (varchar_test値にINSERT 。1、' 12345678 90 ' ); VALUEのINSERT INTO TEST02(2、' 123456789 11 ' )。
結果:
INSERT(1、 '12345678 90' VALUEのvarchar_test INTO )
影響を受けた行:. 1
時間:0 .041sは
、VALUE(2 varchar_test。INSERT INTO「123456789 11 「) 1406 -長いデータ列TOOのための」行AT文字列」1。時間:0
-------------------------------------------------- -------------------------------完璧な分割ライン---------------- -------------------------------------------------- ----------------------------------
MySQLの日付と時刻タイプ
タイプMySQLの日付と時刻が5種類、すなわち、DATE、TIME、YEAR、DATETIME、TIMESTAMPの時間値を表します。
TIMESTAMPタイプは、独自の自動更新機能を持っている、MYSQL5.7はCURRENT_TIMESTAMPをデフォルトすることができます