MySQL中支持的帶小數點的數類型有FLOAT、DOUBLE和DECIMAL。這3種類型的區別在于精度和存儲方式。
FLOAT類型的精度為單精度浮點數,存儲需要4個字節,精度為7位有效數字。DOUBLE類型的精度為雙精度浮點數,存儲需要8個字節,精度為15-16位有效數字。DECIMAL類型則是一種高精度類型,存儲數量級固定,比如DECIMAL(10,2)表示可以存儲10位數,其中2位是小數,存儲需要10個字節。DECIMAL類型具有更高的精度和精確度,但是存儲空間以及計算時間成本也更高。
CREATE TABLE product ( id INT(11) NOT NULL, name VARCHAR(100) NOT NULL, price FLOAT(8, 2) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在創建表的時候,可以指定數值類型的精度,比如上面的price字段指定了FLOAT類型,精度為8位,其中有2位小數。在插入數據時,如果小數位數超過了指定的精度,MySQL將會進行四舍五入。因此,在設計表結構時,需要根據實際業務需求來選擇合適的數值類型、精度以及存儲方式。