1. 程式人生 > 其它 >簡述5種MySQL資料型別

簡述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。

  1. 實數型別

包括FLOAT、DOUBLE、DECIMAL。

DECIMAL可以用於儲存比BIGINT還大的整型,能儲存精確的小數。

而FLOAT和DOUBLE是有取值範圍的,並支援使用標準的浮點進行近似計算。

計算時FLOAT和DOUBLE相比DECIMAL效率更高一些,DECIMAL你可以理解成是用字串進行處理。

  1. 字串型別

包括VARCHAR、CHAR、TEXT、BLOB

VARCHAR用於儲存可變長字串,它比定長型別更節省空間。

VARCHAR使用額外1或2個位元組儲存字串長度。列長度小於255位元組時,使用1位元組表示,否則使用2位元組表示。

VARCHAR儲存的內容超出設定的長度時,內容會被截斷。

CHAR是定長的,根據定義的字串長度分配足夠的空間。

CHAR會根據需要使用空格進行填充方便比較。

CHAR適合儲存很短的字串,或者所有值都接近同一個長度。

CHAR儲存的內容超出設定的長度時,內容同樣會被截斷。

使用策略:

對於經常變更的資料來說,CHAR比VARCHAR更好,因為CHAR不容易產生碎片。

對於非常短的列,CHAR比VARCHAR在儲存空間上更有效率。

使用時要注意只分配需要的空間,更長的列排序時會消耗更多記憶體。

儘量避免使用TEXT/BLOB型別,查詢時會使用臨時表,導致嚴重的效能開銷。

  1. 列舉型別(ENUM)

把不重複的資料儲存為一個預定義的集合。

有時可以使用ENUM代替常用的字串型別。

ENUM儲存非常緊湊,會把列表值壓縮到一個或兩個位元組。

ENUM在內部儲存時,其實存的是整數。

儘量避免使用數字作為ENUM列舉的常量,因為容易混亂。

排序是按照內部儲存的整數

5、日期和時間型別,儘量使用timestamp,空間效率高於datetime,

用整數儲存時間戳通常不方便處理。

如果需要儲存微妙,可以使用bigint儲存。

看到這裡,這道真題是不是就比較容易回答了。

跟其它形式的資料型別相似,5種mysql資料型別也是比較常見的資料型別,整數型別,實數型別,字串型別,列舉型別,日期和時間型別5種,像前三種都是我們耳熟能詳的。