[每日更新-MySQL基礎]5.常用的數據類型-整數和字符串
在學習PHP的時候我們已經講過數據類型了,所謂數據類型就是數據的格式。每一種數據類型在計算機中存儲的方式會有差異,占用的存儲容量也有區別,所以選擇合適的數據類型可以節約我們的存儲成本,也方便我們的程序運行和開發效率。
1.1 整數類型
表示:int
在PHP中,要存儲一個整數類型需要4個字節,在MYSQL中,這個Int是可以手動指定的,它根據你選擇的長度來計算使用的字節數。標準的整數類型也是4個字節。
在定義表的時候,如果選擇了int型,那麽需要設置一個長度,根據長度會自動將該字段的容量定下來,不能存儲超過容量的數據。
所以在考慮字段的時候,我們要知道要存儲的數據最大是多少,按照最大的數字選擇存儲的長度。一旦選擇了,空間就被固定了!
整數包含正整數和負整數。但MySQL中也可以只存儲正整數。也就是沒有負數,最小是就是0,使用unsigned屬性,可以讓字段變成沒有負數的字段。
1.2 小數類型
表示:float/double/decimal
在mysql中,浮點型和定點型可以用類型名稱後加上M/D來表示值的長度,M代表值的總長度,D表示小數點後的位數。M和D又稱之為精度和標度。如:float(5,2)表示:精度為5,小數點後有2位,則最大值就是:999.99。假設我們存入的數據是(100.009)那麽這個值不滿足我們存儲的要求(5,2)所以它會將值進行四舍五入,變成(100.01)來存儲。
註意: 在mysql中 float 和double在不指定精度的時候,默認以實際的精度顯示,而decimal在不指定精度的時候,默認整數部分10,小數部分0
在PHP中小數沒有單雙精度的區別,而在MYSQL中有,
float占用4個字節,屬於單精度
double占用8個字節,屬於雙精度
需要註意的是,計算機都不能很好的處理小數,他們保存的都是近似值,所以最好不要拿小數進行精確計算和精確比較。
小數也有正小數和負小數,也可以通過unsigned來去除符號。
1.3 字符串類型
表示:char/varchar/text
1.3.1 char
定長的字符串類型。申明:char(長度值)
一旦定義長度,不管存儲的字符夠不夠這麽長,都存儲這麽多字節、所以在使用的時候,要考慮到存儲的數據長度會不會變化,如果需要變化,那麽char類型就不適合你。
1.3.2 varchar
可變長度的字符串
varchar類型是用得比較多的一種類型,它可以根據數據的內容長度來改變存儲的字節數。在申明的時候,同樣需要傳入一個長度如:varchar(255),255表示最長可以存儲255,但是如果沒有這麽多的話,存儲的時候就不會占用更多的存儲空間。
註意:varchar會額外拿出一到兩個字節來存儲數據的真實長度,所以存儲:abcd的時候,占用的空間會是:4+1,這裏的1是用來存儲數據真實長度的。
如果數據的長度超過255個字符,那麽存儲真實長度的空間就會變成2.
varchar類型可以存儲65535個字符。
那char和varchar應該如何選擇呢?
char類型: 計算更加快速
varchar類型: 更節省空間。
根據你的需要自己決定。
1.3.3 text
text用來存儲更大類型的字符串。
它也是變長的。所以我們建議大家,將長度大於255的字符串都存為text類型。
對應的text類型有4個:
tinytext text mediumtext longtext
依次存儲的長度不一樣,根據自己的需要去選擇,一般情況下,一篇文章,使用text類型已經足夠了。
[每日更新-MySQL基礎]5.常用的數據類型-整數和字符串