對於數據優化,要選擇最合適的數據類型,而不是最大的。優化
無符號值 0-255數據類型
佔 1 個字節;數據
2.SMALLINT:有符號值 -32768-32767 (六萬五)時間
無符號值 0-65535字符
佔 2 個字節;數字
3.MEDIUMINT:有符號值 -8388608-8388607 (一千六百萬)枚舉
無符號值 0-16777215ps
佔 3 個字節;日期
4.INT:有符號值 -2147483648-2147483647 (四十二億)時區
無符號值 0-4294967295
佔 4 個字節;
5.BIGINT:有符號值 -9223372036854775808-9223372036854775807 (千億萬億(ps:有這個念法嗎,哈哈))
無符號值 0-18446744073709551615
佔 8 個字節;
例如:年齡,就應該用TINYINT就夠了。想起本身原來全是用INT。
用來記錄一些小數。
1.FLOAT:能精確到小數點後7位,通常都用這個,至於具體有多大,這個:-3.402823466E+38-(-1.175494351E-38)。E+38=10^38
2.DOUBLE:大概是FLOAT的十倍。
傳說用得很少,由於要考慮跨時區的問題,通常狀況都是用數字來儲存的。可是,仍是禮貌的列一下:
1.YEAR(1970-2069); 2.TIME(-8385959到8385959); 3.DATE(活不到); 4.DATETIME(也活不到,精確到秒); 5.TIMESTAMP(1970.01.01.00:00:00-2037.12.31.23:59:59)。
1.CHAR[M]:0<=M<=255 個字節,定長;
2.VARCHAR[M]:L+1 個字節 L<=M 且 0<=M<=65535,變長;
3.TINYTEXT:L+1 個字節,L<2^8;
4.TEXT:L+2 個字節,L<2^16;
5.MEDIUMTEXT:L+3 個字節,L<2^24;
6.LONGTEXT:L+4 個字節,L<2^32;
7.ENUM('value1','value2',...):1或2個字節,卻決於枚舉值的個數,最多65535個值;
8.SET('value1','value2',...):一、二、三、4或8個字節,取決於SET成員的數目,最多64個成員;
性別什麼的就能夠用枚舉了。枚舉只能選一個,SET能夠選其中的各類排列組合。