【MYSQL】金額(金錢)相關的資料儲存型別
int
對於遊戲幣等代幣,一般儲存為int型別是可行的。
問題在於越界,int型別長度為11位。
在儲存人民幣相關的金額的時候,則只能儲存到9長度的人民幣,也就是說,最大隻能儲存999999999,不到10億的數值,如果業務增長很快的話,就會給自己留下隱患。
Decimal
Decimal為專門為財務相關問題設計的資料型別。
DECIMAL從MySQL 5.1引入,列的宣告語法是DECIMAL(M,D)。在MySQL 5.1中,參量的取值範圍如下:
·M是數字的最大數(精度)。其範圍為1~65(在較舊的MySQL版本中,允許的範圍是1~254),M 的預設 值是10。
·D是小數點右側數字的數目(標度)。其範圍是0~30,但不得超過M。
說明:float佔4個位元組,double佔8個位元組,decimail(M,D)佔M+2個位元組。
如DECIMAL(5,2) 的最大值為9 9 9 9 . 9 9,因為有7 個位元組可用。
能夠解決資料的範圍和精度的問題。
總結
這兩種方式都是可行的解決方案,我們可以根據具體情況使用合適的方案。
參考資料
相關推薦
【MYSQL】金額(金錢)相關的資料儲存型別
int 對於遊戲幣等代幣,一般儲存為int型別是可行的。 問題在於越界,int型別長度為11位。 在儲存人民幣相關的金額的時候,則只能儲存到9長度的人民幣,也就是說,最大隻能儲存999999999,不到10億的數值,如果業務增長很快的話,就會給自己留下隱患
【EOS】2.4 EOS資料儲存
學習自官方文件。 第一步: 新建一個資料夾 mkdir addressbook cd addressbook 第二步:建立CPP檔案 touch addressbook.cpp 第三步:合約基本框架 #include <eosiolib/eosio.hp
【程式碼】第5章 資料儲存
5.1.2 json import json info = { 'name': '王偉', 'gender': '難', 'birthday': '1992-10-08' } with open('512.json','w', encod
【MYSQL】折騰了半天的儲存過程異常錯誤
昨天碰到了一個儲存過程出錯,但是mysqlapi的QUERY並不返回錯誤的問題。後來才知道,呼叫儲存過程,會返回一個呼叫情況的結果集,也就是最後一個結果集。如果前面有別的結果集,query會返回成功,當next_result返回>0的值時,就表示呼叫情況結果集出現錯誤,這時用errno和erro
【Java】Java中的資料儲存
堆,棧,靜態程式碼區(常量區) 在Java中,六個地方儲存資料: 1. 暫存器register: 最快的儲存區, 由編譯器根據需求進行分配,我們在程式中無法控制 最快的儲存區(由編譯
【MySQL】跨伺服器訪問資料(Windows版)
1. 簡介 mysql 提供了一個類似Oracle中的資料庫連結(DBLINK)功能的儲存引擎–FEDERATED。當我們建立一個以FEDERATED為儲存引擎的表時,伺服器在資料庫目錄只建立一個表定義檔案。檔案由表的名字開始,並有一個frm副檔名。無其它
【面試寶典 - 核心篇 - 資料儲存】02 MySQL 索引使用的注意事項
索引不會包含 NULL 的列 只要列中包含有 NULL 的值,都將不會被包含在索引中,複合索引中只要有一列含有 NULL 值,那麼這一列對於此符合索引就是無效的。 使用短索引 對串列進行索引,如果可以就應該指定一個字首長度。例如,如果有一個 char(255) 的列,如果
【面試寶典 - 核心篇 - 資料儲存】01 58 到家 MySQL 軍規升級版(如何優化 MySQL)
基礎規範 表儲存引擎必須使用 InnoDB 表字符集預設使用 utf8,必要時候使用 utf8mb4 通用,無亂碼風險,漢字 3 位元組,英文 1 位元組 utf8mb4 是 utf8 的超集,有儲存 4 位元組例如表情字元時,使用它
【MySQL】使用Symbolic Links以支援資料分割槽儲存
MySQL資料庫及表(僅MyISAM)支援符號連結(symbolic link),即資料庫或表可以儲存在my.cnf中指定datadir之外的分割槽或目錄。 要支援符號連結,需要在配置中設定symbolic-links=1(較新的版本為預設開啟) 假設my.cnf有設
【MySQL】mysqlbinlog相關簡介
部分 lob row lan efault 歸檔 pyo root home binlog簡介:二進制日誌,記錄對數據發生或潛在發生更改的SQL語句,並以二進制的形式保存在磁盤中。作用:MySQL的作用類似於Oracle的歸檔日誌,可以用來查看數據庫的變更歷史(具體的時間點
【mysql】使用 if() 函式快速交換資料
條件:給定一張表 user,有欄位 id,name,vip, 要求使用一條SQL把 vip=y 的使用者改為 vip=n,反之亦然。 update user set user = if(vip='y','n','y') SQL的邏輯說明: 設定user 
【MySQL】MySQL資料庫主主備份
序: 由於公司內部伺服器使用的是普通PC機,所有發生宕機的情況比較多。尤其是發生過幾次災難後整機需要重新安裝系統,導致此係統上的MySQL資料無法使用。所以再經過此次問題後搭建了MySQL主主備份。 0x01:環境 環境:MySQL(5.7) 系統:Windows 10(1
【Windows】【MySQL】Windows下MySQL資料庫利用mysqldump定時備份並刪除N天前的備份資料
1.新建.bat檔案 內容如下: rem ******MySQL backup start******** @echo off set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%" if not exist "D:\backup\%Ymd%" m
【mysql】資料型別選擇
一Mysql 資料型別選擇 1.1 Char與varchar 由於char是固定長度的,所以存取速度比varchar快。缺點是浪費儲存空間,程式需要對行尾進行處理,所以對那些長度變化不大,並且對查詢速度有較高要求的資料可以通過char來存取。當然這個也是由
【mysql】儲存引擎
一MySql儲存引擎 1.1 什麼是儲存 外掛式儲存引擎是mysql最重要的特性之一。使用者可以根據需要選擇如何儲存和索引資料。是否使用事務等。Mysql預設支援多種儲存引擎,以適用不同領域的資料需求。使用者可以使用不同的儲存引擎來提高應用的效率。 1.2 儲存引擎變更
【mysql】獲取mysql中不重複的資料
假設情景如下: user_table的欄位如下: keyword \t c_time \t heat keyword是字串的具有重複性的,c_time表示的是時間,heat是整形常數。 如下所示: 程式碼如下: select keyword, max(created
【Alios-things筆記】EMW3060 Flash使用者資料儲存KV
[KV介紹] KV元件是AliOS Things中一個以Key-Value方式進行持久化儲存的輕量級元件,主要為基於nor flash的小型MCU裝置(Micro Control Unit)提供通用的K
【Mysql】用儲存過程來實現從指定日期到指定日期的批量建表吧~
DROP PROCEDURE IF EXISTS `copyTableByDate`; CREATE DEFINER=`root`@`localhost` PROCEDURE `copyTableByDate`( IN `table_` varchar(64),
4.【MYSQL】儲存引擎選擇
【MYSQL】存在引擎選擇 儲存引擎 myisam / innodb/ memory 儲存引擎 myisam / innodb/ memory myisam 儲存: 如果表對事務要求不高,同時是以查詢
【mysql】sql刪除多個欄位重複資料有主鍵和沒主鍵解決方法
table user name age nub 張三 12 23 張三 12 23 張三 12 23 李四 13 21 李四 13 21 王五 11 25