NUMERIC和DECIMAL類型被Mysql實現(xiàn)為同樣的類型,這在SQL92標準允許。他們被用于保存值,該值的準確精度是極其重要的值,例如與金錢有關的數(shù)據(jù)。當聲明一個類是這些類型之一時,精度和規(guī)模的能被(并且通常是)指定;點擊這里有一套最全阿里面試題總結。
例如: salary DECIMAL(9,2) 在這個例子中,9(precision)代表將被用于存儲值的總的小數(shù)位數(shù),而2(scale)代表將被用于存儲小數(shù)點后的位數(shù)。
因此,在這種情況下,能被存儲在salary列中的值的范圍是從-9999999.99 到 9999999.99。在ANSI/ISO SQL92中,句法DECIMAL(p)等價于DECIMAL(p,0)。
同樣,句法DECIMAL等價于DECIMAL(p,0),這里實現(xiàn)被允許決定值p。Mysql當前不支持DECIMAL/NUMERIC數(shù)據(jù)類型的這些變種形式的任一種。這一般說來不是一個嚴重的問題,因為這些類型的主要益處得自于明顯地控制精度和規(guī)模的能力。
DECIMAL和 NUMERIC值作為字符串存儲,而不是作為二進制浮點數(shù),以便保存那些值的小數(shù)精度。一個字符用于值的每一位、小數(shù)點(如果 scale>0)和“-”符號(對于負值)。如果 scale 是 0, DECIMAL 和 NUMERIC 值不包含小數(shù)點或小數(shù)部分。
DECIMAL和NUMERIC值得最大的范圍與DOUBLE一樣,但是對于一個給定的DECIMAL 或NUMERIC列,實際的范圍可由制由給定列的precision或scale限制。當這樣的列賦給了小數(shù)點后面的位超過指定scale所允許的位的值,該值根據(jù)scale四舍五入。當一個 DECIMAL或NUMERIC列被賦給了其大小超過指定(或缺省的)precision和scale隱含的范圍的值,Mysql存儲表示那個范圍的相應的端點值。我希望本文可以幫助你提升技術水平。那些,感覺學的好難,甚至會令你沮喪的人,別擔心,我認為,如果你愿意試一試本文介紹的幾點,會向前邁進,克服這種感覺。這些要點也許對你不適用
但你會明確一個重要的道理:接受自己覺得受困這個事實是擺脫這個困境的步。