天天看點

MySQL-函數

有志者,事竟成

文章持續更新,可以微信搜尋【小奇JAVA面試】第一時間閱讀,回複【資料】擷取福利,回複【項目】擷取項目源碼,回複【履歷模闆】擷取履歷模闆,回複【學習路線圖】擷取學習路線圖。

MySQL-函數

文章目錄

  • ​​前言​​
  • ​​一、MySQL函數簡介​​
  • ​​二、數學函數​​
  • ​​1、絕對值函數ABS(x)和傳回圓周率的函數PI()​​
  • ​​2、平方根函數SQRT(x)和求餘函數MOD(x,y)​​
  • ​​3、擷取整數的函數CEIL(x)、CEILING(x)和FLOOR(x)​​
  • ​​4、擷取随機數的函數RAND()和RAND(x)​​
  • ​​5、四舍五入函數ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)​​
  • ​​6、符号函數SIGN(x)​​
  • ​​7、幂運算函數pow(x,y)、power(x,y)和exp(x)​​
  • ​​8、對數運算函數LOG(x)和LOG10(x)​​
  • ​​9、角度與弧度互相轉換的函數RADIANS(x)和DEGREES(x)​​
  • ​​10、正弦函數SIN(x)和反正弦函數ASIN(x)​​
  • ​​11、餘弦函數COS(x)和反餘弦函數ACOS(x)​​
  • ​​12、正切函數、反正切函數和餘切函數​​
  • ​​三、字元串函數​​
  • ​​1、計算字元串字元數的函數和字元串長度的函數​​
  • ​​2、合并字元串的函數concat(s1,s2,...)和concat_ws(x,s1,s2,...)​​
  • ​​3、替換字元串的函數insert(s1,x,len,s2)​​
  • ​​4、字母大小寫轉換函數​​
  • ​​5、擷取指定長度的字元串函數left(s,n)和right(s,n)​​
  • ​​6、填充字元串的函數lpad(s1,len,s2)和rpad(s1,len,s2)​​
  • ​​7、删除空格的函數ltrim(s)、rtrim(s)和trim(s)​​
  • ​​8、删除指定字元串的函數trim(s1 from s)​​
  • ​​9、重複生成字元串的函數repeat(s,n)​​
  • ​​10、空格函數space(n)和替換函數replace(s,s1,s2)​​
  • ​​11、比較字元串大小的函數strcmp(s1,s2)​​
  • ​​12、擷取子串的函數substring(s,n,len)和MID(s,n,len)​​
  • ​​13、比對子串開始位置的函數​​
  • ​​14、字元串逆序的函數reverse(s)​​
  • ​​15、傳回指定位置的字元串的函數​​
  • ​​16、傳回指定字元串位置的函數field(s,s1,s2,...)​​
  • ​​17、傳回子串位置的函數find_in_set(s1,s2)​​
  • ​​18、選取字元串的函數MAKE_SET(s,s1,s2,...)​​
  • ​​四、日期和時間函數​​
  • ​​1、擷取目前日期的函數和擷取目前時間的函數​​
  • ​​2、擷取目前日期和時間的函數​​
  • ​​3、unix時間戳函數​​
  • ​​4、傳回utc日期的函數和傳回utc時間的函數​​
  • ​​5、擷取月份的函數month(d)和monthname(d)​​
  • ​​6、擷取星期的函數dayname(d)、dayofweek(d)和weekday(d)​​
  • ​​7、擷取星期的函數week(d)和weekofyear(d)​​
  • ​​8、擷取天數的函數dayofyear(d)和dayofmonth(d)​​
  • ​​9、擷取年份、季度、小時、分鐘和秒鐘的函數​​
  • ​​10、擷取日期的指定值的函數extract(type from d)​​
  • ​​11、時間和秒鐘轉換的函數​​
  • ​​12、計算日期和時間的函數​​
  • ​​13、将日期和時間格式化的函數​​
  • ​​五、條件判斷函數​​
  • ​​1、if(expr,v1,v2)函數​​
  • ​​2、ifnull(v1,v2)函數​​
  • ​​3、case函數​​
  • ​​六、系統資訊函數​​
  • ​​1、擷取MySQL版本号、連接配接數和資料庫名的函數​​
  • ​​2、擷取使用者名的函數​​
  • ​​3、擷取字元串的字元集合排序方式的函數​​
  • ​​4、擷取最後一個自動生成的id值的函數​​
  • ​​七、加密函數​​
  • ​​1、加密函數password(str)​​
  • ​​2、加密函數MD5(str)​​
  • ​​3、加密函數encode(str,pswd_str)​​
  • ​​4、解密函數decode(crypt_str,pswd_str)​​
  • ​​八、其他函數​​
  • ​​1、格式化函數format(x,n)​​
  • ​​2、不同進制的數字進行轉換的函數​​
  • ​​3、IP位址與數字互相轉換的函數​​
  • ​​4、加鎖函數和解鎖函數​​
  • ​​5、重複執行指定操作的函數​​
  • ​​6、改變字元集的函數​​
  • ​​7、改變字段資料類型的函數​​
  • ​​九、總結​​

前言

MySQL資料庫中提供了很豐富的函數。MySQL函數包括數學函數、字元串函數、日期和時間函數、條件判斷函數、系統資訊函數、加密函數、格式化函數等。通過這些函數,可以簡化使用者的操作。例如,字元串連接配接函數可以很友善地将多個字元串連接配接在一起。

一、MySQL函數簡介

MySQL函數包括數學函數、字元串函數、日期和時間函數、條件判斷函數、系統資訊函數、加密函數等。select語句及其條件表達式都可以使用這些函數。同時,insert、update和delect語句及其條件表達式也可以使用這些函數。例如,表中的某個資料是負數,現在需要将這個資料顯示為整數。這就可以使用絕對值函數。從上面可以知道,MySQL函數可以對表中資料進行相應的處理,以便得到使用者希望得到的資料。這些函數可以使MySQL資料庫的功能更加強大。下面介紹這幾類函數的使用範圍。

數學函數:這類函數主要用于處理數字。這類函數包括絕對值函數、正弦函數、餘弦函數和擷取随機數的函數等。

字元串函數:這類函數主要用于處理字元串。其中包括字元串連接配接函數、字元串比較函數、将字元串的字母都變成小寫或大寫字母的函數和擷取子串的函數等。

日期和時間函數:這類函數主要用于處理日期和時間。其中包括擷取目前時間的函數、擷取目前日期的函數、傳回年份的函數和傳回日期的函數等。

條件判斷函數:這類函數主要用于在MySQL語句中控制條件選擇。其中包括IF語句、CASE語句和WHEN語句等。

系統資訊函數:這類函數主要用于擷取MySQL資料庫的系統資訊。其中包括擷取資料庫名的函數、擷取目前使用者的函數和擷取資料庫版本的函數等。

加密函數:這類函數主要用于對字元串進行加密解密。其中包括字元串加密函數和字元串解密函數等。

其他函數:包括格式化函數和鎖函數等。

二、數學函數

數學函數是MySQL中常用的一類函數。主要用于處理數字,包括整型、浮點數等。數學函數包括絕對值函數、正弦函數、餘弦函數和擷取随機數的函數等。

1、絕對值函數ABS(x)和傳回圓周率的函數PI()

ABS(x)用來求絕對值:PI()用來傳回圓周率。

下面将示範ABS(x)、PI()這兩個函數的使用。

MySQL-函數

2、平方根函數SQRT(x)和求餘函數MOD(x,y)

SQRT(x)用來求平方根;MOD(x,y)用來求餘數。

下面将示範SQRT(x)、MOD(x,y)兩個函數的使用。

MySQL-函數

3、擷取整數的函數CEIL(x)、CEILING(x)和FLOOR(x)

CEIL(x)和CEILING(x)這兩個函數傳回大于或等于x的最小整數;FLOOR(x)函數傳回小于或等于x的最大整數。

下面将示範CEIL(x)、CEILING(x)和FLOOR(x)3個函數的使用。

MySQL-函數

4、擷取随機數的函數RAND()和RAND(x)

RAND()和RAND(x)這兩個函數都是傳回0-1的随機數。但是RAND()傳回的數是完全随機的,而RAND(x)函數的x相同時傳回的值是相同的。

下面将示範RAND()和RAND(x)兩個函數的使用。

MySQL-函數

5、四舍五入函數ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)

ROUND(x)函數傳回離x最近的整數,也就是對x進行四舍五入處理;ROUND(x,y)函數傳回x保留到小數點後y位的值,截斷時需要進行四舍五入處理;TRUNCATE(x,y)函數傳回x保留到小數點後y為的值。

下面将示範ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)3個函數的使用。

MySQL-函數
MySQL-函數

6、符号函數SIGN(x)

sign(x)函數傳回x的符号,x是負數、0、正數分别傳回-1、0和1。

下面将示範sign(x)函數的使用。

MySQL-函數

7、幂運算函數pow(x,y)、power(x,y)和exp(x)

POW(x,y)和POWER(x,y)這兩個函數計算x的y次方,exp(x)函數計算e的x次方。

下面将示範POW(x,y)、power(x,y)和exp(x)3個函數的使用。

MySQL-函數

8、對數運算函數LOG(x)和LOG10(x)

LOG(x)函數計算x的自然對數;LOG10(x)函數計算以10為底的對數。其中,exp(x)和LOG(x)這兩個函數互為反函數。

下面将示範LOG(x)和LOG10(x)兩個函數的使用。

MySQL-函數

9、角度與弧度互相轉換的函數RADIANS(x)和DEGREES(x)

RADIANS(x)函數将角度轉換為弧度;DEGREES(x)函數将弧度轉換為角度。這兩個函數互為反函數。

下面示範RADIANS(x)函數和DEGREES(x)函數的使用。

MySQL-函數

10、正弦函數SIN(x)和反正弦函數ASIN(x)

SIN(x)函數用來求正弦值,其中x是弧度;ASIN(x)函數用來求反正弦值。ASIN(x)中x的取值必須在-1~1之間。否則傳回的結果将會是null。

下面将示範SIN(x)、ASIN(x)兩個函數的使用。

MySQL-函數

11、餘弦函數COS(x)和反餘弦函數ACOS(x)

COS(x)函數用來求餘弦值,其中x是弧度;ACOS(x)函數用來求反餘弦值。COS(x)和ACOS(x)互為反函數。并且,ACOS(x)中x的取值必須在-1~1之間。否則傳回的結果将會是null。

下面将示範COS(x)和ACOS(x)兩個函數的使用。

MySQL-函數

12、正切函數、反正切函數和餘切函數

TAN(x)函數用來求正切值,其中x是弧度;ATAN(x)和ATAN2(x)用來求反正切值;COT(x)函數用來求餘切值。TAN(x)與ATAN(x)、ATAN2(x)互為反函數。而且TAN(x)傳回值是COT(x)傳回值的倒數。

下面将示範TAN(x)、ATAN(x)、ATAN2(x)和COT(x)4個函數的使用。

MySQL-函數

三、字元串函數

字元串函數是MySQL中最常用的一類函數。字元串函數主要用于處理表中的字元串。字元串函數包括求字元串長度、合并字元串、在字元串中插入子串和大小字母之間切換等函數。

1、計算字元串字元數的函數和字元串長度的函數

CHAR_LENGTH(s)函數計算字元串s的字元數;LENGTH(s)函數計算字元串s的長度。

下面将示範CHAR_LENGTH(s)函數和LENGTH(s)函數的使用。

MySQL-函數

2、合并字元串的函數concat(s1,s2,…)和concat_ws(x,s1,s2,…)

concat(s1,s2,…)函數和concat_ws(x,s1,s2,…)函數都可以将s1、s2等多個字元串合并成一個字元串。但concat_ws(x,s1,s2,…)可以将各字元串直接用參數x隔開。

下面将示範concat(s1,s2,…)函數和concat_ws(x,s1,s2,…)函數的使用。

MySQL-函數

3、替換字元串的函數insert(s1,x,len,s2)

insert(s1,x1,len,s2)函數将字元串s1中的x位置開始長度為len的字元串用s2替換。

下面将示範insert(s1,x,len,s2)函數的使用。

MySQL-函數

4、字母大小寫轉換函數

upper(s)函數和ucase(s)函數将字元串s的所有字母變成大寫字母;lower(s)函數和lcase(s)函數将字元串s的所有字母變成小寫字母。

下面将示範upper(s)、ucase(s)、lower(s)和lcase(s)4個函數的使用。

MySQL-函數

5、擷取指定長度的字元串函數left(s,n)和right(s,n)

left(s,n)函數傳回字元串s的前n個字元;right(s,n)函數傳回字元串s的後n個字元。

下面将示範left(s,n)函數和right(s,n)函數的使用。

MySQL-函數

6、填充字元串的函數lpad(s1,len,s2)和rpad(s1,len,s2)

LPAD(s1,len,s2)函數将字元串s2填充到s1的開始處,使字元串長度達到len;rpad(s1,len,s2)函數将字元串s2填充到s1的結尾處,使字元串長度達到len。

下面将示範lpad(s1,len,s2)函數和rpad(s1,len,s2)函數的使用。

MySQL-函數

7、删除空格的函數ltrim(s)、rtrim(s)和trim(s)

ltrim(s)函數将去掉字元串s開始處的空格;rtrim(s)函數将去掉字元串s結尾處的空格;trim(s)函數将去掉字元串s開始處和結尾處的空格。

下面将示範ltrim(s)、RTRIM(s)和TRIM(s)3個函數的使用。使用的字元串是‘me’。該字元串的開頭和結尾各有一個空格。因為空格不好顯示,是以使用concat()函數來将字元串與‘+’連接配接起來。

MySQL-函數

8、删除指定字元串的函數trim(s1 from s)

trim(s1 from s)函數将去掉字元串s中開始處和結尾處的字元串s1。

下面将示範trim(s1 from s)函數的使用。

MySQL-函數

9、重複生成字元串的函數repeat(s,n)

repeat(s,n)函數将字元串s重複n次。

下面将示範repeat(s,n)函數的使用。

MySQL-函數

10、空格函數space(n)和替換函數replace(s,s1,s2)

space(n)函數傳回n個空格;replace(s,s1,s2)函數将字元串s2替代字元串s中的字元串s1。

下面将示範space(n)和replace(s,s1,s2)兩個函數的使用。

MySQL-函數

11、比較字元串大小的函數strcmp(s1,s2)

strcmp(s1,s2)函數用來比較字元串s1和s2。如果s1大于s2,結果傳回1;如果s1等于s2,結果傳回0;如果s1小于s2,結果傳回-1。

下面将示範strcmp(s1,s2)函數的使用。

MySQL-函數

12、擷取子串的函數substring(s,n,len)和MID(s,n,len)

substring(s,n,len)函數和MID(s,n,len)函數從字元串s的第n個位置開始擷取長度為len的字元串。

下面将示範substring(s,n,len)函數和MID(s,n,len)函數的使用。

MySQL-函數

13、比對子串開始位置的函數

locate(s1,s)、position(s1 in s)和instr(s,s1)3個函數從字元串s中擷取s1的開始位置。

下面将示範locate(s1,s)、position(s1 in s)和instr(s,s1)3個函數的使用。

MySQL-函數

14、字元串逆序的函數reverse(s)

reverse(s)函數将字元串s的順序反過來。

下面将示範reverse(s)函數的使用。

MySQL-函數

15、傳回指定位置的字元串的函數

elt(n,s1,s2,…)函數的傳回第n個字元串。

下面将示範elt(n,s1,s2,…)函數的使用。

MySQL-函數

16、傳回指定字元串位置的函數field(s,s1,s2,…)

field(s,s1,s2,…)函數傳回第一個與字元串s比對的字元串的位置。

下面将示範field(s,s1,s2,…)函數的使用。

MySQL-函數

17、傳回子串位置的函數find_in_set(s1,s2)

find_in_set(s1,s2)函數傳回在字元串s2中與s1比對的字元串的位置。其中,字元串s2中包含了若幹個用逗号隔開的字元串。

下面将示範find_in_set(s1,s2)函數的使用。

MySQL-函數

18、選取字元串的函數MAKE_SET(s,s1,s2,…)

make_set(x,s1,s2,…)函數按x的二進制數從s1,s2,…,sn中選取字元串。例如12的二進制是1100。這個二進制數從右到左的第3位和第4位是1,是以選取s3和s4。

下面将示範make_set(x,s1,s2,…)函數的使用。

MySQL-函數

四、日期和時間函數

日期和時間函數是MySQL中另一類最常用的函數。日期和時間函數主要用于處理表中的日期和時間資料。日期和時間函數包括擷取目前日期的函數、擷取目前時間的函數、計算日期的函數、計算時間的函數等。

1、擷取目前日期的函數和擷取目前時間的函數

curdate()和current_date()函數擷取目前日期;curtime()和current_time()函數擷取目前時間。

下面将示範curdate()、current_date()、curtime()和curr-ent_time()4個函數的使用。

2、擷取目前日期和時間的函數

now()、current_timestamp()、localtime()和sysdate()等4個函數都用來擷取目前的日期和時間。這四個函數表示相同的含義。

下面将示範now()、current_timestamp()、localtime()和sysdate()4個函數的使用。

MySQL-函數

3、unix時間戳函數

unix_timestamp()函數以unix時間戳的形式傳回目前時間;unix_timestamp(d)函數将時間d以unix時間戳的形式傳回;from_unixtime(d)函數把unix時間戳的時間轉換為普通格式的時間。unix_timestamp(d)函數和from_unixtime(d)互為反函數。

下面将示範unix_timestamp()、unix_timestamp(d)和from_unixtime(d)3個函數的使用。

MySQL-函數

4、傳回utc日期的函數和傳回utc時間的函數

utc_date()函數傳回utc日期;utc_time()函數傳回utc時間。其中,utc是Universal Coordinated Time的縮寫,也就是國際協調時間。

下面将示範utc_date()函數和utc_time()函數的使用。

MySQL-函數

5、擷取月份的函數month(d)和monthname(d)

month(d)函數傳回日期d中的月份值,其取值範圍為1~12;monthname(d)函數傳回日期d中的月份的英文名稱,如January,February等。其中,參數d可以是日期和時間,也可以是日期。

下面将示範month(d)函數和monthname(d)函數的使用。

MySQL-函數

6、擷取星期的函數dayname(d)、dayofweek(d)和weekday(d)

dayname(d)函數傳回日期d是星期幾,顯示其英文名,如Monday,Tuesday等;dayofweek(d)函數也傳回日期d是星期幾,1表示星期日,2表示星期一,依次類推;weekday(d)函數也傳回日期d是星期幾,0表示星期一,1表示星期二,依次類推。其中,參數d可以是日期和時間,也可以是日期。

下面将示範dayname(d)、dayofweek(d)和weekday(d)函數的使用。

MySQL-函數

7、擷取星期的函數week(d)和weekofyear(d)

week(d)函數和weekofyear(d)函數都是計算日期d是本年的第幾個星期。傳回值的範圍是1~53。

下面将示範week(d)函數和weekofyear(d)函數的使用。

MySQL-函數

8、擷取天數的函數dayofyear(d)和dayofmonth(d)

dayofyear(d)函數日期d是本年的第幾天;dayofmonth(d)函數傳回計算日期d是本月的第幾天。

下面将示範dayofyear(d)函數和dayofmonth(d)函數的使用。

MySQL-函數

9、擷取年份、季度、小時、分鐘和秒鐘的函數

year(d)函數傳回日期d中的年份值;quarter(d)函數傳回日期d是本年第幾季度,值的範圍是1~4;hour(t)函數傳回時間t中的小時值;minute(t)函數傳回時間t中的分鐘值;second(t)函數傳回時間t中的秒鐘值。

下面将示範year(d)、quarter(d)、hour(t)、minute(t)和second(t)5個函數的使用。

MySQL-函數

10、擷取日期的指定值的函數extract(type from d)

extract(type from d)函數從日期d中擷取指定的值。這個值是什麼由type的值決定。type的取值可以是year、month、day、hour、minute和second。如果type的值是year,結果傳回年份值;month傳回月份值;day傳回是幾号;hour傳回小時值;minute傳回分鐘值;second傳回秒鐘值。

下面将示範extract(type from d)函數的使用。

MySQL-函數

11、時間和秒鐘轉換的函數

time_to_sec(t)函數将時間t轉換為以秒為機關的時間;sec_to_time(s)函數将以秒為機關的時間s轉換為時分秒的格式。time_to_sec(t)和sec_to_time(s)互為反函數。

下面将示範time_to_sec(t)函數和sec_to_time(s)函數的使用。

MySQL-函數

12、計算日期和時間的函數

1、to_days(d)、from_days(n)和datediff(d1,d2)函數

to_days(d)函數計算日期d與0000年1月1日的天數;from_days(n)函數計算從0000年1月1日開始n天後的日期;datediff(d1,d2)函數計算日期d1與d2之間相隔的天數。

下面将示範to_days(d)、from_days(n)和datediff(d1,d2)3個函數的使用。

MySQL-函數

2、adddate(d,n)、subdate(d,n)、addtime(t,n)和subtime(t,n)函數

adddate(d,n)函數傳回起始日期d加上n天的日期;subdate(d,n)函數傳回起始日期d減去n天的日期;addtime(t,n)函數傳回起始日期t加上n秒後的時間;subtime(t,n)函數傳回起始時間t減去n秒後的時間。

下面将示範adddate(d,n)、subdate(d,n)、addtime(t,n)和subtime(t,n)4個函數的使用。

MySQL-函數

3、adddate(d,interval expr type)和date_add(d,interval expr type)函數

adddate(d,interval expr type)函數和date_add(d,interval expr type)函數傳回起始日期d加上一個時間段後的日期;subdate(d,interval expr type)函數傳回起始日期d減去一個時間段後的日期。上面3個函數的expr是表示時間段長度的表達式。該表達式與後面的間隔類型type對應。

下面使用adddate(d,interval expr type)函數計算一年零一個月後的日期和時間。

MySQL-函數

13、将日期和時間格式化的函數

1、date_format(d,f)函數

date_formate(d,f)函數按照表達式f的要求顯示日期d。表達式f指定了顯示的格式。

下面用與“Jan lst 1986”一樣的形式來顯示字段中的日期。

MySQL-函數

2、time_formate(t,f)函數

time_formate(t,f)函數按照表達式f的要求顯示時間t。表達式f指定了顯示的格式。

下面将時間字段用12小時制來顯示。

MySQL-函數

3、get_format(type,s)函數

get_formate(type,s)函數根據字元串s擷取type類型資料的顯示格式。其中,參數d的取值包括date、datetime和time;s參數的取值包括eur、usa、jis、iso和internal。

使用get_format(type,s)函數隻會傳回一個格式字元串。

下面select語句中隻使用get_format(type,s)函數。

MySQL-函數

五、條件判斷函數

條件判斷函數用來在sql語句中進行條件判斷。根據是否滿足判斷條件,sql語句執行不同的分支。例如,從員工表中查詢員工的業績。如果業績高于指定值n,則輸出good;否則,輸出bad。下面是各種條件判斷函數的表達式、作用和使用方法。

1、if(expr,v1,v2)函數

if(expr,v1,v2)函數中,如果表達式expr成立,傳回結果v1;否則,傳回結果v2。

下面從t6中查詢學号(id),分數(grade)。并且,分數大于等于60,顯示pass;否則,顯示fail。select語句如下:

MySQL-函數

2、ifnull(v1,v2)函數

ifnull(v1,v2)函數中,如果v1的不為空,就顯示v1的值;否則就顯示v2的值。

下面從t6中查詢學号(id),分數(grade)。如果分數不為null,顯示分數,否則,顯示no grade。select語句如下:

MySQL-函數

3、case函數

1、case when expr1 then v1 [when expr2 then v2…][else vn] end

case when expr1 then v1 [when expr2 then v2…] [else vn]end函數中,case表示函數開始,end表示函數結束。如果表達式expr1成立時,傳回v1的值。如果表達式expr2成立時,傳回v2的值。依次類推,最後遇到else時,傳回vn的值。

下面從t6中查詢學号(id),分數(grade)。如果分數大于60,傳回‘GOOD’;如果分數為60,傳回‘PASS’;其餘分數傳回“FAIL”。select語句如下:

MySQL-函數

2、case exprwhen e1 then v1 [when e2 then v2…][else vn] end

case expr when e1 then v1 [when e2 then v2…][else vn] end 函數中,如果表達式expr取值等于e1時,傳回v1的值。如果表達式expr取值等于e2時,傳回v2的值。依次類推,最後遇到else時,傳回vn的值。case表示函數開始,end表示函數結束。

下面從t6中查詢學号(id),分數(grade)。如果分數等于60,傳回GOOD;如果分數為60,傳回pass;如果分數為50,傳回FAIL;其餘分數傳回NO GRADE。

select語句如下:

MySQL-函數

六、系統資訊函數

系統資訊函數用來查詢MySQL資料庫的系統資訊。例如,查詢資料庫的版本,查詢資料庫的目前使用者等。

1、擷取MySQL版本号、連接配接數和資料庫名的函數

version()函數傳回資料庫的版本号;connection_id()函數傳回伺服器的連接配接數,也就是到現在為止MySQL服務的連接配接次數;database()和schema()傳回目前資料庫名。

下面示範一下用法:

MySQL-函數

2、擷取使用者名的函數

USER()、system_user()、session_user()、current_user()和current_user這幾個函數可以傳回目前使用者的名稱。

下面查詢目前使用者的使用者名。

MySQL-函數

3、擷取字元串的字元集合排序方式的函數

charset(str)函數傳回字元串str的字元集,一般情況這個字元集就是系統的預設字元集;collation(str)函數傳回字元串str的字元排列方式。

下面檢視字元串‘aa’的字元集和字元串排序方式。

MySQL-函數

4、擷取最後一個自動生成的id值的函數

last_insert_id()函數傳回最後生成的auto_increment值。

下面測試last_insert_id()函數的作用。

MySQL-函數
MySQL-函數
MySQL-函數

七、加密函數

加密函數是MySQL中用來對資料進行加密的函數。因為資料庫中有些很敏感的資訊不希望被其他人看到,就應該通過加密的方式來使這些資料變成看似亂碼的資料。例如使用者的密碼,就應該經過加密。

1、加密函數password(str)

password(str)函數可以對字元串str進行加密。一般情況下,password(str)函數主要是用來給使用者的密碼加密的。

下面使用password(str)函數為字元串‘abcd’加密。

MySQL-函數

2、加密函數MD5(str)

MD5(str)函數可以對字元串str進行加密。MD5(str)函數主要對普通的資料進行加密。

下面使用md5(str)函數為字元串‘abcd’加密。

MySQL-函數

3、加密函數encode(str,pswd_str)

encode(str,pswd_str)函數可以使用字元串pswd_str來加密字元串str。加密的結果是一個二進制數,必須使用blob類型的字段來儲存它。

下面使用字元串‘aa’來加密字元串‘abcd’,将加密後的資料存入表b的code字段中。code字段是blob類型的。

MySQL-函數
MySQL-函數

4、解密函數decode(crypt_str,pswd_str)

decode(crypt_str,pswd_str)函數可以使用字元串pswd_str來為crypt_str解密。crypt_str是通過encode(str,pswd_str)加密後的二進制資料。字元串pswd_str應該與加密時的字元串pswd_str是相同的。

下面使用decode(crypt_str,psed_str)為encode(str,pswd_str)加密的資料解密。

MySQL-函數

八、其他函數

MySQL中除了上述函數以外,還包含了很多函數。例如format(x,n)函數用來格式化數字x,inet_aton()函數可以将ip轉換為數字。

1、格式化函數format(x,n)

format(x,n)函數可以将數字x進行格式化,将x保留到小數點後n位。這個過程需要進行四舍五入。例如format(2.356,2)傳回的結果将會是2.36;format(2.353,2)傳回的結果将會是2.35。

下面執行:

MySQL-函數

2、不同進制的數字進行轉換的函數

ascii(s)傳回字元串s的第一個字元的ascii碼;bin(x)傳回x的二進制編碼;HEX(x)傳回x的十六進制編碼;oct(x)傳回x的八進制編碼;conv(x,f1,f2)将x從f1進制數變成f2進制數。

MySQL-函數

3、IP位址與數字互相轉換的函數

inet_aton(IP)函數可以将IP位址轉換為數字表示;inet_ntoa(n)函數可以将數字n轉換成IP的形式。其中,inet_aton(ip)函數中IP值需要加上引号。這兩個函數互為反函數。

MySQL-函數

4、加鎖函數和解鎖函數

GET_LOCT(name,time)函數定義一個名稱為name、持續時間長度為time秒的鎖。如果鎖定成功,傳回1;如果嘗試逾時,傳回0;如果遇到錯誤,傳回null。release_lock(name)函數解除名稱為name的鎖。如果解鎖成功,傳回1;如果嘗試逾時,傳回0;如果解鎖失敗,傳回null;is_free_lock(name)函數判斷是否使用名為name的鎖。如果使用,傳回0;否則,傳回1。

下面增加一個名為MYSQL的鎖,持續時間是10秒。然後判斷這個鎖是否加上,最後解除鎖定。

MySQL-函數
MySQL-函數
MySQL-函數

5、重複執行指定操作的函數

benchmark(count,expr)函數将表達式expr重複執行count次,然後傳回執行時間。該函數可以用來判斷MySQL處理表達式的速度。

下面傳回系統的時間是100000次,計算使用的時間。

MySQL-函數

6、改變字元集的函數

convert(s using cs)函數将字元串s的字元集變成cs。

下面将字元串‘ABC’的字元集變成gbk。

MySQL-函數

7、改變字段資料類型的函數

cast(x as type)和convert(x,type)這兩個函數将x變成type類型。這兩個函數隻對binary、char、date、datetime、time、signed integer、unsignedinteger這些類型起作用。但兩種方法隻是改變了輸出值的資料類型,并沒有改變表中的字段的類型。

下面表中的d字段為datetime類型,将其變為date類型,或者time類型。

MySQL-函數

九、總結

這裡的相關内容還沒有整理完畢,文章後面持續更新,建議收藏。