一、MySQL文檔說decimal 的最大位數是 65,什么意思
DECIMAL從MySQL 5.1引入,列的聲明語法是DECIMAL (M,D)。NUMERIC與DECIMAL同義,如果字段類型定義為NUMERIC,則將自動轉成DECIMAL。對于聲明語法DECIMAL (M,D),自變量的值范圍如下:M是最大位數(精度),范圍是1到65。可不指定,默認值是10。
— #1 問題分析
— 65是最大的位數(含整數和小數點部分)。
— #2 代碼示例
CREATE TABLE tb_datatype (
? id int(11) DEFAULT NULL,
? smallintcol smallint(6) DEFAULT NULL,
? smallintcol2 smallint(3) DEFAULT NULL,
? decimalcol decimal(65,38) DEFAULT NULL,
? smallintcol3 smallint(3) unsigned zerofill DEFAULT NULL,
? smallintcol4 smallint(5) unsigned DEFAULT NULL,
? seq int(11) NOT NULL AUTO_INCREMENT,
? PRIMARY KEY (seq)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3
INSERT INTO tb_datatype(id) VALUES(1);
— #2.1 整數部分不能超過27
UPDATE tb_datatype
SET decimalcol= REPEAT(9,28)
WHERE id = 1
> 1264 – Out of range value for column ‘decimalcol’ at row 1
> 時間: 0s
— #2.2 整數部分最大到27
UPDATE tb_datatype
SET decimalcol= REPEAT(9,27)
WHERE id = 1
> Affected rows: 1
> 時間: 0.058s
— #2.3 小數點后部分不能超過38
UPDATE tb_datatype
SET decimalcol= CONCAT(REPEAT(9,27),’.’,REPEAT(9,39))
WHERE id = 1
> 1264 – Out of range value for column ‘decimalcol’ at row 1
> 時間: 0s
— #2.4 小數點后部分最大到38
UPDATE tb_datatype
SET decimalcol= CONCAT(REPEAT(9,27),’.’,REPEAT(9,38))
WHERE id = 1
> Affected rows: 0
> 時間: 0s
— # 2.5 查看結果
SELECT decimalcol
FROM tb_datatype WHERE id=1
延伸閱讀:
二、數據庫和 SQL 概念
數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,它的產生距今已有六十多年。隨著信息技術和市場的發展,數據庫變得無處不在:它在電子商務、銀行系統等眾多領域都被廣泛使用,且成為其系統的重要組成部分。
數據庫用于記錄數據,使用數據庫記錄數據可以表現出各種數據間的聯系,也可以很方便地對所記錄的數據進行增、刪、改、查等操作。
結構化查詢語言(Structured Query Language)簡稱 SQL,是上世紀 70 年代由 IBM 公司開發,用于對數據庫進行操作的語言。更詳細地說,SQL 是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統,同時也是數據庫腳本文件的擴展名。