簡述5種MySQL資料型別
MySQL資料庫表中的每一列都必須具有名稱和資料型別。SQL開發人員必須在建立SQL表時決定表中的每個列將要儲存的資料的型別。資料型別是一個標籤,是可用的SQL瞭解每個列的期望儲存什麼型別的資料的指南,它也標識了SQL如何與儲存的資料進行互動。MySQL資料庫支援所有標準SQL數值資料型別,涉及到了常見的5種MySQL數據型別。
1、整數型別,
包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,分別表示1位元組、2位元組、3位元組、4位元組、8位元組整數。任何整數型別都可以加上UNSIGNED屬性,表示資料是無符號的,即非負整數。
長度:整數型別可以被指定長度,例如:INT(11)表示長度為11的INT型別。長度在大多數場景是沒有意義的,它不會限制值的合法範圍,只會影響顯示字元的個數,而且需要和UNSIGNED ZEROFILL屬性配合使用才有意義。
例子,假定型別設定為INT(5),屬性為UNSIGNED ZEROFILL,如果使用者插入的資料為12的話,那麼資料庫實際儲存資料為00012。
- 實數型別
包括FLOAT、DOUBLE、DECIMAL。
DECIMAL可以用於儲存比BIGINT還大的整型,能儲存精確的小數。
而FLOAT和DOUBLE是有取值範圍的,並支援使用標準的浮點進行近似計算。
計算時FLOAT和DOUBLE相比DECIMAL效率更高一些,DECIMAL你可以理解成是用字串進行處理。
- 字串型別
包括VARCHAR、CHAR、TEXT、BLOB
VARCHAR用於儲存可變長字串,它比定長型別更節省空間。
VARCHAR使用額外1或2個位元組儲存字串長度。列長度小於255位元組時,使用1位元組表示,否則使用2位元組表示。
VARCHAR儲存的內容超出設定的長度時,內容會被截斷。
CHAR是定長的,根據定義的字串長度分配足夠的空間。
CHAR會根據需要使用空格進行填充方便比較。
CHAR適合儲存很短的字串,或者所有值都接近同一個長度。
CHAR儲存的內容超出設定的長度時,內容同樣會被截斷。
使用策略:
對於經常變更的資料來說,CHAR比VARCHAR更好,因為CHAR不容易產生碎片。
對於非常短的列,CHAR比VARCHAR在儲存空間上更有效率。
使用時要注意只分配需要的空間,更長的列排序時會消耗更多記憶體。
儘量避免使用TEXT/BLOB型別,查詢時會使用臨時表,導致嚴重的效能開銷。
- 列舉型別(ENUM)
把不重複的資料儲存為一個預定義的集合。
有時可以使用ENUM代替常用的字串型別。
ENUM儲存非常緊湊,會把列表值壓縮到一個或兩個位元組。
ENUM在內部儲存時,其實存的是整數。
儘量避免使用數字作為ENUM列舉的常量,因為容易混亂。
排序是按照內部儲存的整數
5、日期和時間型別,儘量使用timestamp,空間效率高於datetime,
用整數儲存時間戳通常不方便處理。
如果需要儲存微妙,可以使用bigint儲存。
看到這裡,這道真題是不是就比較容易回答了。
跟其它形式的資料型別相似,5種mysql資料型別也是比較常見的資料型別,整數型別,實數型別,字串型別,列舉型別,日期和時間型別5種,像前三種都是我們耳熟能詳的。