最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL之存儲(chǔ)函數(shù)詳細(xì)介紹

 更新時(shí)間:2021年12月21日 10:52:32   作者:我是一棵卷心菜  
大家好,本篇文章主要講的是MySQL之存儲(chǔ)函數(shù)詳細(xì)介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽

1、創(chuàng)建存儲(chǔ)函數(shù)

語(yǔ)法格式:

CREATE FUNCTION 函數(shù)名(參數(shù)名 參數(shù)類(lèi)型,...) 
RETURNS 返回值類(lèi)型
BEGIN
	函數(shù)體   #函數(shù)體中肯定有 RETURN 語(yǔ)句
END

說(shuō)明:

參數(shù)列表:

FUNCTION中總是默認(rèn)為IN參數(shù)

RETURNS 后的語(yǔ)句表示函數(shù)返回?cái)?shù)據(jù)的類(lèi)型;

RETURNS子句只能對(duì)FUNCTION做指定,對(duì)函數(shù)而言這是強(qiáng)制的。它用來(lái)指定函數(shù)的返回類(lèi)型,而且函數(shù)體必須包含一個(gè)RETURN value語(yǔ)句。

函數(shù)體也可以用BEGIN…END來(lái)表示SQL代碼的開(kāi)始和結(jié)束。

如果函數(shù)體只有一條語(yǔ)句,也可以省略BEGIN…END

2 、調(diào)用存儲(chǔ)函數(shù)

在MySQL中,存儲(chǔ)函數(shù)的使用方法與MySQL內(nèi)部函數(shù)的使用方法是一樣的。換言之,用戶自己定義的存儲(chǔ)函數(shù)與MySQL內(nèi)部函數(shù)是一個(gè)性質(zhì)的。區(qū)別在于,存儲(chǔ)函數(shù)是用戶自己定義的,而內(nèi)部函數(shù)是MySQL的開(kāi)發(fā)者定義的。

SELECT 函數(shù)名(實(shí)參列表)

3、刪除存儲(chǔ)函數(shù)

語(yǔ)法結(jié)構(gòu):

DROP FUNCTION [IF EXISTS] 存儲(chǔ)函數(shù)名

4、查看存儲(chǔ)過(guò)程

1. 使用SHOW CREATE語(yǔ)句查看存儲(chǔ)過(guò)程和函數(shù)的創(chuàng)建信息

語(yǔ)法結(jié)構(gòu):

SHOW CREATE FUNCTION 存儲(chǔ)函數(shù)名

2. 使用SHOW STATUS語(yǔ)句查看存儲(chǔ)函數(shù)的狀態(tài)信息

語(yǔ)法結(jié)構(gòu):

SHOW FUNCTION STATUS [LIKE 'pattern']

這個(gè)語(yǔ)句返回子程序的特征,如數(shù)據(jù)庫(kù)、名字、類(lèi)型、創(chuàng)建者及創(chuàng)建和修改日期。

[LIKE 'pattern']匹配存儲(chǔ)函數(shù)的名稱,可以省略。當(dāng)省略不寫(xiě)時(shí),會(huì)列出MySQL數(shù)據(jù)庫(kù)中存在的所有存儲(chǔ)函數(shù)的信息。

舉例:

#查詢名稱以select開(kāi)頭的存儲(chǔ)函數(shù)
mysql> SHOW FUNCTION STATUS LIKE 'SELECT%';
*************************** 1. row ***************************
                  Db: test_db
                Name: SelectAllData
                Type: FUNCTION 
             Definer: root@localhost
            Modified: 2021-10-16 15:55:07
             Created: 2021-10-16 15:55:07
       Security_type: DEFINER
             Comment: 
character_set_client: utf8mb4
collation_connection: utf8mb4_general_ci
  Database Collation: utf8mb4_general_ci

3. 從information_schema.Routines表中查看存儲(chǔ)函數(shù)的信息

MySQL中存儲(chǔ)函數(shù)的信息存儲(chǔ)在information_schema數(shù)據(jù)庫(kù)下的Routines表中??梢酝ㄟ^(guò)查詢?cè)摫淼挠涗泚?lái)查詢存儲(chǔ)函數(shù)的信息。

語(yǔ)法結(jié)構(gòu):

SELECT * FROM information_schema.Routines
WHERE ROUTINE_NAME='存儲(chǔ)函數(shù)名' [AND ROUTINE_TYPE = 'FUNCTION '];

說(shuō)明: 如果在MySQL數(shù)據(jù)庫(kù)中存在存儲(chǔ)過(guò)程和函數(shù)名稱相同的情況,最好指定ROUTINE_TYPE查詢條件來(lái)指明查詢的是存儲(chǔ)過(guò)程還是函數(shù)。

5、修改存儲(chǔ)函數(shù)

修改存儲(chǔ)函數(shù),不影響存儲(chǔ)函數(shù)功能,只是修改相關(guān)特性。使用ALTER語(yǔ)句實(shí)現(xiàn)。

ALTER FUNCTION 存儲(chǔ)函數(shù)名;

6、對(duì)比存儲(chǔ)函數(shù)和存儲(chǔ)過(guò)程

關(guān)鍵字 調(diào)用語(yǔ)法 返回值 應(yīng)用場(chǎng)景
存儲(chǔ)過(guò)程 PROCEDURE CALL 存儲(chǔ)過(guò)程() 理解為有0個(gè)或多個(gè) 一般用于更新
存儲(chǔ)函數(shù) FUNCTION SELECT 函數(shù)() 只能是一個(gè) 一般用于查詢結(jié)果為一個(gè)值并返回時(shí)

此外,存儲(chǔ)函數(shù)可以放在查詢語(yǔ)句中使用,存儲(chǔ)過(guò)程不行。反之,存儲(chǔ)過(guò)程的功能更加強(qiáng)大,包括能夠執(zhí)行對(duì)表的操作(比如創(chuàng)建表,刪除表等)和事務(wù)操作,這些功能是存儲(chǔ)函數(shù)不具備的。

7、練習(xí)題加強(qiáng)

#前提準(zhǔn)備
CREATE TABLE employees
AS
SELECT * FROM atguigudb.`employees`; 

CREATE TABLE 
departments AS
SELECT * FROM atguigudb.`departments`; 
#1. 創(chuàng)建函數(shù)get_count(),返回公司的員工個(gè)數(shù) #有參有返回 
SET GLOBAL log_bin_trust_function_creators = 1;

DELIMITER $
CREATE FUNCTION get_count()
RETURNS INT
BEGIN
	RETURN (SELECT COUNT(*) FROM employees);
END $
DELIMITER ;

注意:

自己在創(chuàng)建存儲(chǔ)函數(shù)中報(bào)錯(cuò)“you might want to use the less safe log_bin_trust_function_creators variable”,然后查看筆記發(fā)現(xiàn)解決此問(wèn)題的一種方式就是執(zhí)行SET GLOBAL log_bin_trust_function_creators = 1;SQL語(yǔ)句

#2. 創(chuàng)建函數(shù)ename_salary(),根據(jù)員工id,返回它的工資 
#查詢表結(jié)構(gòu)來(lái)看要返回?cái)?shù)據(jù)的類(lèi)型
DESC employees;

DELIMITER $
CREATE FUNCTION ename_salary(id INT)
RETURNS DOUBLE(8,2)
BEGIN
	RETURN (SELECT salary FROM employees WHERE employee_id = id);
END $
DELIMITER ;

#查詢結(jié)果
SELECT ename_salary(100);

愛(ài)在結(jié)尾:自己應(yīng)該學(xué)會(huì):1、會(huì)使用創(chuàng)建存儲(chǔ)函數(shù)的基本語(yǔ)法 ; 2、學(xué)會(huì)調(diào)用存儲(chǔ)函數(shù); 3、知道存儲(chǔ)函數(shù)與存儲(chǔ)過(guò)程的相同和不同點(diǎn)

到此這篇關(guān)于MySQL之存儲(chǔ)函數(shù)詳細(xì)介紹的文章就介紹到這了,更多相關(guān)MySQL存儲(chǔ)函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文搞懂MySQL元數(shù)據(jù)鎖(MDL)

    一文搞懂MySQL元數(shù)據(jù)鎖(MDL)

    這篇文章主要為大家詳細(xì)介紹了MySQL中元數(shù)據(jù)鎖(MDL)的相關(guān)資料,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定的借鑒價(jià)值,需要的可以參考一下
    2022-09-09
  • Windows mysql 雙向同步設(shè)置方法 詳細(xì)篇

    Windows mysql 雙向同步設(shè)置方法 詳細(xì)篇

    如果你需要windows mysql 主、備機(jī)雙向同步環(huán)境,可按照以下步驟進(jìn)行操作
    2011-05-05
  • MySQL 復(fù)制表的方法

    MySQL 復(fù)制表的方法

    這篇文章主要介紹了MySQL 復(fù)制表的方法,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-03-03
  • java實(shí)現(xiàn)mysql自動(dòng)更新創(chuàng)建時(shí)間與更新時(shí)間的兩種方式

    java實(shí)現(xiàn)mysql自動(dòng)更新創(chuàng)建時(shí)間與更新時(shí)間的兩種方式

    在實(shí)際開(kāi)發(fā)中,每條數(shù)據(jù)的創(chuàng)建時(shí)間和修改時(shí)間,盡量不需要應(yīng)用程序去記錄,而由數(shù)據(jù)庫(kù)獲取當(dāng)前時(shí)間自動(dòng)記錄創(chuàng)建時(shí)間,本文主要介紹了java實(shí)現(xiàn)mysql自動(dòng)更新創(chuàng)建時(shí)間與更新時(shí)間的兩種方式,感興趣的可以了解一下
    2024-01-01
  • 設(shè)置MySQLroot賬戶密碼報(bào)錯(cuò)ERROR 1064 (42000): You have an error in your SQL syntax;的解決方案

    設(shè)置MySQLroot賬戶密碼報(bào)錯(cuò)ERROR 1064 (42000): You 

    在安裝mysql的時(shí)候,設(shè)置root賬戶密碼出現(xiàn)了ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds..錯(cuò)誤,本文小編給大家介紹了相關(guān)的解決方案,需要的朋友可以參考下
    2023-12-12
  • MySQL的表級(jí)鎖,行級(jí)鎖,排它鎖和共享鎖

    MySQL的表級(jí)鎖,行級(jí)鎖,排它鎖和共享鎖

    這篇文章主要介紹了MySQL的表級(jí)鎖,行級(jí)鎖,排它鎖和共享鎖,事務(wù)隔離級(jí)別越高,為避免沖突所花費(fèi)的性能也就越多,即效率低,更多相關(guān)內(nèi)容需要的小伙伴可以參考與一下
    2022-07-07
  • Mysql如何通過(guò)ibd文件恢復(fù)數(shù)據(jù)

    Mysql如何通過(guò)ibd文件恢復(fù)數(shù)據(jù)

    這篇文章主要介紹了Mysql如何通過(guò)ibd文件恢復(fù)數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • MySQL INSERT INTO SELECT時(shí)自增Id不連續(xù)問(wèn)題及解決

    MySQL INSERT INTO SELECT時(shí)自增Id不連續(xù)問(wèn)題及解決

    這篇文章主要介紹了INSERT INTO SELECT時(shí)自增Id不連續(xù)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 關(guān)于pt-archiver和自增主鍵的那些事

    關(guān)于pt-archiver和自增主鍵的那些事

    mysql是我們經(jīng)常會(huì)用到的一個(gè)數(shù)據(jù)庫(kù),mysql數(shù)據(jù)庫(kù)中有一個(gè)主鍵生成規(guī)則,就是自增,這篇文章主要給大家介紹了關(guān)于pt-archiver和自增主鍵的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • 深入理解MySQL的數(shù)據(jù)庫(kù)引擎的類(lèi)型

    深入理解MySQL的數(shù)據(jù)庫(kù)引擎的類(lèi)型

    本篇文章是對(duì)MySQL的數(shù)據(jù)庫(kù)引擎的類(lèi)型進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06

最新評(píng)論

江孜县| 蓬溪县| 黑河市| 新建县| 长沙县| 榆社县| 铅山县| 高雄市| 云南省| 商都县| 衢州市| 尼木县| 红安县| 汪清县| 堆龙德庆县| 牟定县| 江西省| 乐清市| 延川县| 独山县| 沙雅县| 高碑店市| 贺州市| 广州市| 康定县| 金沙县| 西昌市| 海口市| 招远市| 潼南县| 江川县| 婺源县| 永嘉县| 睢宁县| 科尔| 鹿泉市| 商洛市| 肥城市| 肃宁县| 类乌齐县| 宾川县|