算術運算符是SQL中最基本的運算符,MySQL自然不能缺少對其的支援。
既然其名稱中有“算術”二字,給人的第一感覺當然是支援數字型的運算。是以我們先從數字着手了解它。
【1】建表
我的習慣一直是以案例作為學習的切入點。建一個資料表是第一步:
CREATE TABLE `num_oper01` ( a` int(11) DEFAULT NULL, `b` float DEFAULT NULL, `c` decimal(18,2) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8
【2】資料準備
insert into num_oper01 values(3,3,3);insert into num_oper01 values(3,3.45,3.4);
結論:從select的結果可以看到,int永遠是以不帶小數位的整數存在,float則根據實際情況調整,而decimal則永遠按定義的小數位形式顯示。
【3】數字的加減乘除
select a,b,c,a+1.2,b+1.2,c+1.2 from num_oper01;select a,b,c,a-1.2,b-1.2,c-1.2 from num_oper01;select a,b,c,a*1.2,b*1.2,c*1.2 from num_oper01;select a,b,c,a/1.2,b/1.2,c/1.2 from num_oper01;
結論:
- MySQL會自動進行資料類型切換;
- 切換的順序是:INT --> FLOAT --> DECIMAL
- MySQL會根據計算結果自動增加小數位數。
再來單獨看看取餘的計算效果:
從執行效果可以看出:
- INT與DECIMAL的取餘還是INT與DECIMAL;
- FLOAT取餘就超出我們的了解;
結論:取餘就是整數的一種概念,不要對小數有所謂取餘的想法。
最後我們當然不能忘記驗證被0除的結果。
還好MySQL沒給我們驚喜,涉及到算術運算,除數不能為0這個定理沒被打破,隻是傳回的是NULL而非報錯中斷程式執行。
【4】字元串中的數字
先給出自己測試出的結論吧:
在MySQL當中,字元串類型間進行加減乘除運算的時候,會截取字元串以數字開頭的那一部分數字進行運算,如果字元串前面沒有數字,那麼就隻能截取的數值為0,那麼進行加減的時候結果都是0,進行乘除的時候結果都是NULL。
看案例慢慢去了解。
select '1a'+'1b','15e'-'4'b,'15e'/'4b','2r'*'3s','r'/'s','2019-12-08'-'2019-12-08';
總結
- 算術運算符有加減乘除及取餘5種;
- 算術運算符不僅可以應用在數字,還可以應用于從字元串中抽取的數字。
是以,學習不能把自己的思維固化。