為了實現這一目標,它需要我們在數據庫系統的常用數據類型有充分的認識。
下面我們來看一下mysql的重要數據類型
1、數值類型可以劃分為數值類型:整型,浮點十進制類型。
所謂的“十進制”是指decimal和numeric,他們是同一類型的。嚴格地說,它不是一個數字類型,因為他們實際上是作為字符串存儲,每一個數字值(包括小數點)占一個字節的存儲空間,所以這種類型的消耗大量的存儲空間,但它的優點是它的價值不會失去做浮點數計算精度,它更適合一些計算精度要求高,如價格計算。浮動取決於不同精度的類型可以是float或double。它們的優點是小數的精度,FLOAT可以表示非常小的值,可以是最小的值約1.17E-38(0.000 … 0117,小數點後的37零),雙重可以表達更小的數,最小的數可以約2.22E-308(0.000 … 0222,小數點以及後跟307個零)的小數。float和double分別為4字節和8字節的存儲空間。
對於整型,在MySQL中有很多不同類型的整數,在設計數據庫表,我們可以有一個字節TINYINT或8字節BIGINT等,所以我們應該把過多考慮哪個類型來使用,以獲得最小的存儲空間,而不會失去任何准確性值。
TINYINT,SMALLINT,MEDIUMINT,INT和BIGINT 1字節,2字節,3字節,4字節和8字節。對於無符號整數,這些類型能表示的最大整數是分別255,65535,16777215,4294967295 18446744073709551615。如果我們需要保存用戶的年齡,TINYINT就夠了;如果是自增的ID,我們應該使用MEDIUMINT而不是INT,INT還 是太大了。很多數據表並不會達到MEDIUMINT的范圍
2、日期時間輸入的日期和時間類型比較簡單
如DATE,TIME,DATETIME,TIMESTAMP和YEAR。如果我們只需要關心的日期,但沒有分秒我們應該使用Date,而不是DATETIME,但DATETIME是其中最常用的,一切按實際需要設計
3、字符類型不要以為字符類型僅僅是CHAR
CHAR和VARCHAR的區別是,CHAR是固定長度。如果你定義一個字段CHAR(10),那麼無論多少字節的數據,這將需要10個字節的空間;對於18位的身份證號碼,則應該使用Char(18),
VARCHAR是可變長度的,如果我們有一個字段的值有不同的長度,那麼我們應該使用VARCHAR 。
4、枚舉和集合類型枚舉(ENUM)類型
最多可以定義到65,535種不同的字符串從中做出選擇。
這可能需要取決於有多少個值在枚舉類型中的一個或兩個字節。集合(SET)類型,最多可以有64個不同的成員,你可以選擇零個或多個成員,集合成員的數量決定。例如,在SQLServer中,你可以使用BIT類型來表示性別(男/女),但MySQL中,BIT在不同版本數據庫中取值有差異,而使用TINTINT有時浪費的,你可以用ENUM('男','女'),這樣可以節約很大空間