1. 程式人生 > 資料庫 >MySQL儲存過程與函式_gw

MySQL儲存過程與函式_gw

MySQL儲存過程與函式

函式

數學函式

abs(x):返回x的絕對值
在這裡插入圖片描述

rand():返回0到1的隨機數(0-0.9999…,1是取不到的)
在這裡插入圖片描述

mod(x,y):返回x除以y以後的餘數
在這裡插入圖片描述

-power(x,y):返回x的y次方
在這裡插入圖片描述

round(x):返回離x最近的整數(四捨五入,只看小數點後第一位)
在這裡插入圖片描述

round(x,y):保留x的y位小數四捨五入後的值
在這裡插入圖片描述

sqrt(x):返回x的平方根
在這裡插入圖片描述

truncate(x,y):返回數字x截斷為y位小數的值
在這裡插入圖片描述

ceil(x):返回大於或等於x的最小整數(向上取整數)
在這裡插入圖片描述

floor(x):返回小於或等於x的最大整數(向下取整數)

在這裡插入圖片描述

greatest(x1,x2…):返回集合中最大的值
在這裡插入圖片描述

least(x1,x2…):返回集合中最小的值
在這裡插入圖片描述

聚合函式

1、對錶中資料記錄進行集中概括而設計的一類函式
2、常用的聚合函式(只會產生一個值)

avg(欄位名) 返回指定欄位的平均值
在這裡插入圖片描述

count(欄位名) 返回指定欄位中非NULL值的個數
在這裡插入圖片描述

min(欄位名) 返回指定欄位的最小值
在這裡插入圖片描述

max(欄位名) 返回指定欄位的最大值
在這裡插入圖片描述

sum(欄位名) 返回指定欄位的所有值之和
在這裡插入圖片描述

字串函式

length(x):返回字串x的長度(空格也算)
在這裡插入圖片描述

trim():返回去除指定格式的值(只能去除前後的空格)
在這裡插入圖片描述

concat(x,y):將提供的引數x和y拼接成一個字串

在這裡插入圖片描述

upper(x):將字串x的所有字母變成大寫字母
在這裡插入圖片描述

lower(x):將字串x的所有字母變成小寫字母
在這裡插入圖片描述

left(x,y):返回字串x的前y個字元
在這裡插入圖片描述

right(x,y):返回字串x的後y個字元
在這裡插入圖片描述

repeat(x,y):將字串x重複y次
在這裡插入圖片描述

space(x):返回x個空格(結合concat使用)
在這裡插入圖片描述

replace(x,y,z):將字串z替代字串x中的字串y
在這裡插入圖片描述

strcmp(x,y):比較x和y,返回的值可以為-1 <,0 =,1 >
在這裡插入圖片描述

substring(x,y,z):獲取從字串x中的第y個位置開始長度為z的字串
格式:substring(完整字串,起始位置,長度); #起始位置從1開始

在這裡插入圖片描述

reverse(x):將字串x反轉
在這裡插入圖片描述

日期時間函式

curdate():返回當前時間的年月日
在這裡插入圖片描述

curtime():返回當前時間的時分秒
在這裡插入圖片描述

now():返回當前時間的日期和時間在這裡插入圖片描述

month(x):返回日期x中的月份值
在這裡插入圖片描述

hour(x):返回x中的小時值
在這裡插入圖片描述

minute(x):返回x中的分鐘值
在這裡插入圖片描述

second(x):返回x中的秒鐘值
在這裡插入圖片描述

dayofweek(x):返回x是星期幾,1星期日,2星期一,3星期二…
在這裡插入圖片描述

dayofmonth(x):計算日期x是本月的第幾天
在這裡插入圖片描述

dayofyear(x):計算日期x是本年的第幾天
在這裡插入圖片描述

MySQL儲存過程

儲存過程簡介

1、從 5.0 版本才開始支援

2、是一組為了完成特定功能的SQL語句集合(封裝)

3、比傳統SQL速度更快、執行效率更高

4、儲存過程的優點

(1)執行一次後,會將生成的二進位制程式碼駐留緩衝區(便於下次執行),提高執行效率
(2)SQL語句加上控制語句的集合,靈活性高
(3)在伺服器端儲存,客戶端呼叫時,降低網路負載
(4)可多次重複被呼叫,可隨時修改,不影響客戶端呼叫
(5)可完成所有的資料庫操作,也可控制資料庫的資訊訪問許可權

5、為什麼要用儲存過程?

(1)減輕網路負載;
(2)增加安全性

建立儲存過程

1、使用create procedure語句建立儲存過程
2、引數分為
輸入引數:in
輸出引數:out
輸入/輸出引數:inout
3、儲存過程的主體部分,被稱為過程體;以begin開始,以end$$結束
4、具體格式

delimiter $$
create procedure 儲存過程名(in 引數名 引數型別)
begin
#定義變數
declare 變數名 變數型別
#變數賦值
set 變數名 = 值
  sql 語句1;
  sql 語句2;
  ...
end$$
delimiter ;(有空格)

舉例:

mysql> delimiter $$
mysql> create procedure test ()
    -> begin select * from test;
    -> end $$
Query OK, 0 rows affected (0.00 sec)

mysql> 

在這裡插入圖片描述

呼叫儲存過程

call 儲存過程名(實際引數);

舉例:

mysql> delimiter ;
mysql> call test;

在這裡插入圖片描述

查詢儲存過程

show procedure status where db=‘資料庫’;

修改儲存過程

儲存過程的修改分為特徵的修改和業務內容的修改。
特徵的修改語法結構如下:

alter procedure 儲存過程名 [ <特徵> … ]

刪除儲存過程

刪除儲存過程的語法:

drop {procedure|function|if exits} <過程名>

在這裡插入圖片描述