生活随笔
收集整理的這篇文章主要介紹了
Mysql数据库(九)——mysql高阶语句(下)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Mysql數據庫(九)——mysql高階語句(下)
- 一、函數
- 1、數學函數
- 2、聚合函數
- 3、字符串函數
- 4、日期時間函數
- 二、存儲過程
- 1、簡介
- 2、優點
- 3、語法
- ①、例
- ②、參數分類
- ③、帶參數的存儲過程
- ④、修改存儲過程
- ⑤、刪除存儲過程
一、函數
- Mysql 數據庫函數提供了能夠實現各種功能的方法,使我們在查詢記錄時能夠更高效的輸出。
- Mysql 內建了很多函數,常用的包括數學函數、聚合函數、字符串函數和日期時間函數
1、數學函數
數學函數描述
| abs(x) | 返回 x 的絕對值 |
| rand() | 返回 0 到 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…) | 返回集合中最小的值 |
select
abs(-1),rand(),mod(5,3),power(2,3),round(5.5),round(5.785,2),round(5.784,2),sqrt(4);
select
truncate(3.755,2),ceil(5.2),floor(5.2),greatest(1,2,3),greatest(1,2,'a'),least('a','b','c'),least(1,2,null
);
2、聚合函數
- Mysql 數據庫函數中專門有一組函數特意為庫內記錄求和或者對表中的數據進行幾種概括而設計的,這些函數被稱作聚合函數。
聚合函數描述
| avg() | 返回指定列的平均值 |
| count() | 返回指定列中非 NULL 值的個數 |
| min() | 返回指定列的最小值 |
| max() | 返回指定列的最大值 |
| sum(x) | 返回指定列的所有值之和 |
select
avg(id
) from ljm
;
select
count(id
) from ljm
;
select
min(id
) from ljm
;
select
max(id
) from ljm
;
select
sum(id
) from ljm
;
3、字符串函數
字符串函數描述
| trim() | 返回去除指定格式的值 |
| concat(x,y) | 將提供的參數 x 和 y 拼接成一個字符串 |
| substr(x,y) | 獲取從字符串 x 中的第 y 個位置開始的字符串,跟substring()函數作用相同 |
| substr(x,y,z) | 獲取從字符串 x 中的第 y 個位置開始長度為 z 的字符串 |
| length(x) | 返回字符串 x 的長度 |
| replace(x,y,z) | 將字符串 z 替代字符串 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 個空格 |
| strcmp(x,y) | 比較 x 和 y,返回的值可以為-1,0,1 |
| reverse(x) | 將字符串 x 反轉 |
select
trim(' 123abc');select
concat('abc',123);select
substr('abcdefg',3);
select
substr('abcdefg',3,2);select
length('abcdefg');select
replace('abcdefg','a','1');select
upper('abc');select
lower('ABC');select
left('abcdefg',3);select
right('abcdefg',3);select
repeat('abc',2);select
length(space(3)); select
strcmp(1,2),strcmp(2,2),strcmp(3,2);select
reverse('abcdefg');
4、日期時間函數
日期時間函數描述
| curdate() | 返回當前時間的年月日 |
| curtime() | 返回當前市價你的時分秒 |
| now() | 返回當前時間的日期和時間 |
| month(x) | 返回日期x中的月份值 |
| week(x) | 返回日期x是年度的第幾個周 |
| hour(x) | 返回x中的小時值 |
| minute(x) | 返回日期x中的分鐘值 |
| second(x) | 返回日期x中的秒數值 |
| dayotweek(x) | 返回x是星期幾,1為星期日,2為星期一 |
| replace(x,y,z) | 將字符z替代字符串x中的字符串y |
| dayotmonth(x) | 計算日期x是本月的第幾天 |
| dayotyear(x) | 計算日期x是本年的第幾天 |
select
dayofweek(curtime());
select
dayofmonth(curtime());
select
dayofyear(curtime());
select
curdate();
select
curtime();
select
now();
二、存儲過程
1、簡介
- MysQL數據庫存儲過程是一組為了完成特定功能的SQL語句的集合。
- 存儲過程這個功能是從5.0版本才開始支持的,它可以加快數據庫的處理速度,增強數據庫在實際應用中的靈活性。
- 存儲過程在使用過程中是將常用或者復雜的工作預先使用SQL語句寫好并用一個指定的名稱存儲起來,這個過程經編譯和優化后存儲在數據庫服務器中。當需要使用該存儲過程時,只需要調用它即可。
- 操作數據庫的傳統SQL語句在執行時需要先編譯,然后再去執行,跟存儲過程一對比,明顯存儲過程在執行上速度更快,效率更高。存儲過程在數據庫中創建并保存,它不僅僅是SQL語句的集合,還可以加入一些特殊的控制結構,也可以控制數據的訪問方式。
2、優點
- 執行一次后,會將生成的二進制代碼駐留緩沖區,提高執行效率
- SQL語句加上控制語句的集合,靈活性高
- 在服務器端存儲,客戶端調用時,降低網絡負載
- 可多次重復被調用,可隨時修改,不影響客戶端調用
- 可完成所有的數據庫操作,也可控制數據庫的信息訪問權限
3、語法
create procedure
<過程名
> ([過程參數……
]) <過程體
>
[過程參數……
] 格式
<過程名
>:盡量避免與內置的函數或字段重名
<過程體
>:語句
[in
|out
|inout
] <參數名
><類型
>
①、例
例:
delimiter $$ #將語句的結束符號從分號;臨時修改,以防出問題,可以自定義
create procedure
ee(in inname
varchar(16)) #創建存儲過程,過程名自定義
,()可帶參數begin #過程體以關鍵字BEGIN開始select
* from test1 where a_name
='aaaa'; #過程體語句end$$ #過程體以關鍵字END結尾
delimiter
; #將語句的結束符號恢復為分號
call
ee('aaaa'); #調用存儲過程
--------------查看存儲過程
--------------
show create procedure XXX\G #查看某個儲存過程的具體信息
②、參數分類
- 存儲過程的主體部分,即過程體
- 以 begin 開始,end 結束,若只有一條SQL語句,可省略 begin 和 end
- 以 delimiter 開始和結束
③、帶參數的存儲過程
- 輸入參數:in 表示調用者向過程傳入值(傳入值可以是字面量或變量)
- 輸出參數:out 表示過程向調用者傳出值(可以返回多個值)(傳出值只能是變量)
- 輸入/輸出參數:inout ,即表示調用者向過程傳入值,又表示過程向調用者傳入值(只能是變量)
④、修改存儲過程
alter procedure
<過程名
> [<特征
>……
]
alter procedure ff modifies sql data sql security invoker
;modifies sql data:表名子程序包含寫程序的語句security:安全等級invoker:當定義為 invoker 時,只要執行者有執行權,就可以成功執行
⑤、刪除存儲過程
drop procedure
if exists ff
;
總結
以上是生活随笔為你收集整理的Mysql数据库(九)——mysql高阶语句(下)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。