MySQL數據庫中常用的一些函數

數據庫函數

mysql 數據庫中爲我們提供了一些常用的函數
mysql 中的函數不同於C語言中的函數, mysql 中的函數只用於數據處理,不會進行命令操作

函數使用規則

函數由於不進行命令操作,只進行數據處理,通常是通過 select語句進行輸出的高級語言都有自己的庫函數,數據庫也不例外,在數據庫中也提供了一些用於實現特定功能的函數。

聚合函數

在數據庫函數中,聚合函數是我們最常用的一類。所謂的聚合,就是對一組值進行組合計算,返回單個值。
1.count
計數函數,對元組或者屬性計數。
一般格式:count(屬性名)。
select count() from <表名>;
是對整個表的元組進行計數
select count(屬性名) from 表名 where 條件表達式;
count 支持條件計數,只計算有效值,不計算null值
2.max
求最大值函數,查詢字段中的最大的數。
一般格式:max(屬性名)
select max(屬性名) from 表名 [where 條件表達式];
3.min
求最小值函數,查詢字段中的最小的數。
一般格式:min(屬性名)
select min(屬性名) from 表名 [where 條件表達式];
4.avg
求平均值函數,查詢字段中所有數的平均值。
一般格式:avg(屬性名)
select avg(屬性名) from 表名 [where 條件表達式];
5.sum
求和函數,查詢屬性中所有數的和。
一般格式:sum(屬性名)
select sum(屬性名) from 表名 [where 條件表達式];
除了通過函數計算還能直接用運算符計算
select 屬性名1*2,屬性名2+屬性名3 from 表名;

數學函數

1.abs
返回X的絕對值
格式: abs(x)

select abs(-10),abs(12);

2.round
四捨五入函數。
一般格式:round(數值類型[,精確位數]);
select round(1234.56);
不加精確位數默認精確到整數位
select round(123.456,2);
加上精確位數就保留多少位小數
3.MOD
mod(a,b) a除以b的餘數
4.rand
獲取隨機數,隨機數的範圍在0~1之間,生成小於1的浮點小數
生成範圍在0~9之間的數據

select rand()*10;

格式: rand()

三角函數

三角函數中的 正弦 函數
sin30度shi 2/1
格式: sin(radin)
注意: radin 是弧度制,而不是角度

## 弧度轉角度公式 
#PI == 180
radin=PI/180*angle;

除此之外還有其他的三角函數

cos(radin) 餘弦
tan(radin) 正切
ctan(radin) 餘切

1.PI
數據庫提供了直接獲取 PI 值的函數
PI() 求圓周率
2.power
求次方函數
一般格式:power(底數,指數);
select power(2,3); # 求2的3次方的值
可以用pow函數代替power函數

select pow(2,3);

求次方根(開方)

pow(9,1/2); pow(4,0.5) #只需要把指數改一下

日期時間函數

直接從系統獲取日期和時間,不需要通過表格獲取
1.now
求當前的日期和時間。
一般格式:now()。

 select now();

返回一個 datetime 類型的數據
2.date
求出日期的格式的函數
一般格式:date(日期時間類型的屬性名)。

select date(birthday) from student;

3.time
求時間函數的格式的函數。
一般格式:time(日期時間類型的屬性名)

select time(birthday) from student;

4.date_format
時間日期類型轉字符串類型函數。
一般格式: date_format(日期時間類型,格式字符串)

/*
%Y 年 %y 年(保留後2位) 
%M 月份英文單詞 %m 數字月份 
%d 日期 #D 數字th 
%H 時(24小時制) %h 12時制 
%i 分 
%s 秒 
*/
select date_format(now(),'%Y%m%d:%H%i%s'); 

注意:大小寫格式會有不一樣的輸出

字符處理函數

1.upper
小寫字母轉大寫字母函數。
一般格式:upper(字符型屬性名);

select upper('abc'); 

也可用 ucase() 函數代替 select ucase(‘abc’);
2.lower
大寫字母轉小寫字母函數。
一般格式:lower(字符型屬性名);

select upper('ABC'); 

也可用 lcase 函數代替,如: select lcase(‘ABC’);
3.substring
提取字串函數,以給定的參數求字符串中的一個子串。
mysql 中,字符串數據下標從1開始
格式: substring(字符串,start,length);

## 要被提取的字符串 
## start 開始提取的位置 
## end 提取的數量 
subsring("string",start,end);

從字符串中第start個字符開始取出長度爲length的字符串。

select substring('abc123@#$',4,3);# 結果爲123 

也可以用mid函數代替,如: select mid(‘abc123@#$’,4,3);
4.concat
字符串拼接函數
格式: concat(字符串,字符串....)
char_length() 求字符串長度
5.insert
字符串 string2 替換 string1 的 x 位置開始長度爲 len 的字符串

/* 
string1 準備替換的字符串 
x 開始位置 
len 替換的長度 如果是0,就是從該位置進行插入 
string2 替換的字符串 
*/
insert(string1,x,len,string2)

6.locate
從字符串 s 中獲取 s1 的開始位置
locate(substr,str) :返回子串 substr 在字符串 str 第一個出現的位置,如果 substr 不是在 str`裏面,返回0

 locate(s1,s)

7.length
length(string) :返回字符串 string 的長度。
8.ASCII
ASCII( str )
返回字符串 str 字符中的ASCII代碼值。如果 str 是空字符串,返回0。
如果 str 是NULL,返回NULL。

 select ASCII('a');

注意:只能顯示一個字符的 ASCII 碼值

高級函數

1.md5
不可逆的加密驗證函數
2.bin
bin(x) 返回二進制編碼
3.binary
binary(s) 將字符串 s 轉換爲二進制字符串
4.database
返回當前數據庫名

分組查詢

對查詢結果進行分組。
分組關鍵字:group by
一般格式:

select 屬性名1,屬性名2,,屬性名n 
from 表名 group by 屬性名(1~n) [having 條件表達式];

注意:分組過後不能用where進行條件篩選,需要用having
where:從數據源去掉不符合搜索條件的數據
having:在分好的組中去掉每組不符合條件的數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章