国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL 存儲(chǔ)過(guò)程和函數(shù)

這篇具有很好參考價(jià)值的文章主要介紹了MySQL 存儲(chǔ)過(guò)程和函數(shù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

一、存儲(chǔ)過(guò)程和函數(shù)概述

二、創(chuàng)建存儲(chǔ)過(guò)程和函數(shù)

1、創(chuàng)建存儲(chǔ)過(guò)程

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

三、查看/調(diào)用儲(chǔ)存過(guò)程和函數(shù)

1、查看儲(chǔ)存過(guò)程/函數(shù)

2、調(diào)用儲(chǔ)存過(guò)程/函數(shù)

四、修改/刪除存儲(chǔ)過(guò)程和函數(shù)

1、修改存儲(chǔ)過(guò)程和函數(shù)

2、刪除存儲(chǔ)過(guò)程和函數(shù)

五、練習(xí)?


一、存儲(chǔ)過(guò)程和函數(shù)概述

存儲(chǔ)過(guò)程就是一條或多條SQL語(yǔ)句的集合,可視為批文件,但是七作用不僅限于批處理。創(chuàng)建存儲(chǔ)過(guò)程和函數(shù)的語(yǔ)句分別是create proceddure 和 create function。使用CALL語(yǔ)句來(lái)調(diào)用存儲(chǔ)過(guò)程,只能輸出變量返回值。函數(shù)可以從語(yǔ)句外調(diào)用(即通過(guò)引用函數(shù)名),也能返回標(biāo)量值。存儲(chǔ)過(guò)程也可以調(diào)用其他存儲(chǔ)過(guò)程。

二、創(chuàng)建存儲(chǔ)過(guò)程和函數(shù)

1、創(chuàng)建存儲(chǔ)過(guò)程

語(yǔ)法

create procedure 存儲(chǔ)過(guò)程名稱(chēng) ([定義存儲(chǔ)過(guò)程參數(shù)列表]) 
begin
body
end 結(jié)束符

儲(chǔ)存過(guò)程參數(shù)列表:

[in | out | inout]? 參數(shù)名 參數(shù)類(lèi)型

in---輸入?yún)?shù)

out---輸出參數(shù)

inout---輸入輸出參數(shù)

例如

mysql> delimiter //
mysql> create procedure avg_age()
    -> begin
    -> select avg(age) as ave_age
    -> from emp3;
    -> end //
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

delimiter //語(yǔ)句的作用是將MySQL的結(jié)束符設(shè)置為//。MySQL默認(rèn)的結(jié)束符是“;”?。避免沖突。

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

語(yǔ)法

create function 存儲(chǔ)函數(shù)名 ([定義存儲(chǔ)過(guò)程參數(shù)列表])
returns 類(lèi)型
begin
body;
end 結(jié)束符

例如

mysql> delimiter //
mysql> create function count_num()
    -> returns int
    -> return (select count(*) from emp3);
    -> //
Query OK, 0 rows affected (0.03 sec)

mysql> delimiter ;

三、查看/調(diào)用儲(chǔ)存過(guò)程和函數(shù)

1、查看儲(chǔ)存過(guò)程/函數(shù)

基本語(yǔ)法1

 show [procedure | function] status [like '存儲(chǔ)過(guò)程名|函數(shù)名' \G

基本語(yǔ)法2

 show create [procedure | function] 存儲(chǔ)過(guò)程名|函數(shù)名 \G

?基本語(yǔ)法3

select * from information_schema.Routines where ROUTINE_NAME='存儲(chǔ)過(guò)程名 | 函數(shù)名' \G

例如

基本語(yǔ)法1

mysql> show procedure status like 'avg_age' \G
*************************** 1. row ***************************
                  Db: mydb3
                Name: avg_age
                Type: PROCEDURE
             Definer: root@localhost
            Modified: 2023-08-22 16:22:41
             Created: 2023-08-22 16:22:41
       Security_type: DEFINER
             Comment: 
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: latin1_swedish_ci
1 row in set (0.00 sec)

基本語(yǔ)法2

mysql> show create procedure avg_age \G
*************************** 1. row ***************************
           Procedure: avg_age
            sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `avg_age`()
begin
select avg(age) as ave_age
from emp3;
end
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: latin1_swedish_ci
1 row in set (0.00 sec)

基本語(yǔ)法3

mysql> select * from information_schema.Routines where ROUTINE_NAME='avg_age' \G
*************************** 1. row ***************************
           SPECIFIC_NAME: avg_age
         ROUTINE_CATALOG: def
          ROUTINE_SCHEMA: mydb3
            ROUTINE_NAME: avg_age
            ROUTINE_TYPE: PROCEDURE
               DATA_TYPE: 
CHARACTER_MAXIMUM_LENGTH: NULL
  CHARACTER_OCTET_LENGTH: NULL
       NUMERIC_PRECISION: NULL
           NUMERIC_SCALE: NULL
      DATETIME_PRECISION: NULL
      CHARACTER_SET_NAME: NULL
          COLLATION_NAME: NULL
          DTD_IDENTIFIER: NULL
            ROUTINE_BODY: SQL
      ROUTINE_DEFINITION: begin
select avg(age) as ave_age
from emp3;
end
           EXTERNAL_NAME: NULL
       EXTERNAL_LANGUAGE: NULL
         PARAMETER_STYLE: SQL
        IS_DETERMINISTIC: NO
         SQL_DATA_ACCESS: CONTAINS SQL
                SQL_PATH: NULL
           SECURITY_TYPE: DEFINER
                 CREATED: 2023-08-22 16:22:41
            LAST_ALTERED: 2023-08-22 16:22:41
                SQL_MODE: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
         ROUTINE_COMMENT: 
                 DEFINER: root@localhost
    CHARACTER_SET_CLIENT: utf8
    COLLATION_CONNECTION: utf8_general_ci
      DATABASE_COLLATION: latin1_swedish_ci
1 row in set (0.01 sec)

?2、調(diào)用儲(chǔ)存過(guò)程/函數(shù)

基本語(yǔ)法

call 存儲(chǔ)過(guò)程名 (參數(shù));
select 函數(shù)名([參數(shù)]);

例如

mysql> call avg_age;
+---------+
| ave_age |
+---------+
| 43.9000 |
+---------+
1 row in set (0.00 sec)

四、修改/刪除存儲(chǔ)過(guò)程和函數(shù)

1、修改存儲(chǔ)過(guò)程和函數(shù)

基本語(yǔ)法

alter procedure | function  存儲(chǔ)過(guò)程名 | 函數(shù)名 [參數(shù)]

例如?

2、刪除存儲(chǔ)過(guò)程和函數(shù)

基本語(yǔ)法

drop [procedure | function] [if exists] 存儲(chǔ)過(guò)程名|函數(shù)名

五、練習(xí)?

創(chuàng)建表sch并插入數(shù)據(jù)

字段名

數(shù)據(jù)類(lèi)型

主鍵

外鍵

非空

唯一

自增

id

INT

name

VARCHAR(50)

glass

VARCHAR(50)

sch 表內(nèi)容

id

name

glass

1

小明

Glass1

2

小軍

Glass2

create table sch ( 
id int primary key, 
name varchar(50) not null, 
glass varchar(50) not null 
)charset=utf8;

insert into sch values
(1,'小明','Glass1'),
(2,'小軍','Glass2')
;

mysql> select * from sch;
+----+--------+--------+
| id | name   | glass  |
+----+--------+--------+
|  1 | 小明   | Glass1 |
|  2 | 小軍   | Glass2 |
+----+--------+--------+
2 rows in set (0.00 sec)

1、創(chuàng)建一個(gè)可以統(tǒng)計(jì)表格內(nèi)記錄條數(shù)的存儲(chǔ)函數(shù) ,函數(shù)名為count_sch();

mysql> delimiter $$
mysql> create function count_sch()
    -> returns int 
    -> begin
    -> return (select count(id) from sch)
    -> ;
    -> end$$
mysql> delimiter ;

mysql> select count_sch();
+-------------+
| count_sch() |
+-------------+
|           2 |
+-------------+
1 row in set (0.00 sec)

2、創(chuàng)建一個(gè)存儲(chǔ)過(guò)程record,有1個(gè)參數(shù),輸入id,功能是輸入id輸出對(duì)應(yīng)完整信息。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-668324.html

mysql> delimiter $$
mysql> create procedure record (in id_1 int) 
begin select * from sch where id=id_1; 
end$$
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;
mysql> call record(1);
+----+---------+--------+
| id | name    | glass  |
+----+---------+--------+
|  1 | 小明    | glass1 |
+----+---------+--------+
1 row in set (0.00 sec)

到了這里,關(guān)于MySQL 存儲(chǔ)過(guò)程和函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 使用MySQL存儲(chǔ)過(guò)程提高數(shù)據(jù)庫(kù)效率和可維護(hù)性

    使用MySQL存儲(chǔ)過(guò)程提高數(shù)據(jù)庫(kù)效率和可維護(hù)性

    MySQL 存儲(chǔ)過(guò)程是一種強(qiáng)大的數(shù)據(jù)庫(kù)功能,它允許你在數(shù)據(jù)庫(kù)中存儲(chǔ)和執(zhí)行一組SQL語(yǔ)句,類(lèi)似于編程中的函數(shù)。存儲(chǔ)過(guò)程可以大幅提高數(shù)據(jù)庫(kù)的性能、安全性和可維護(hù)性。本文將詳細(xì)介紹MySQL存儲(chǔ)過(guò)程的使用。 MySQL存儲(chǔ)過(guò)程是一組預(yù)編譯的SQL語(yǔ)句,它們以一個(gè)名稱(chēng)存儲(chǔ)在數(shù)據(jù)庫(kù)

    2024年02月08日
    瀏覽(22)
  • MySQL數(shù)據(jù)庫(kù)——存儲(chǔ)過(guò)程-變量(系統(tǒng)變量、用戶定義變量、局部變量)

    目錄 系統(tǒng)變量? 1.查看系統(tǒng)變量? 2.設(shè)置系統(tǒng)變量 演示示例 用戶定義變量 1.賦值? 2.使用 演示示例 局部變量 聲明? 賦值 演示示例 變量 在MySQL中變量分為三種類(lèi)型: 系統(tǒng)變量、用戶定義變量、局部變量。 系統(tǒng)變量是MySQL服務(wù)器提供,不是用戶定義的,屬于服務(wù)器層面。分為全

    2024年02月05日
    瀏覽(43)
  • Mysql數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告--實(shí)驗(yàn)五 存儲(chǔ)過(guò)程和觸發(fā)器

    Mysql數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告--實(shí)驗(yàn)五 存儲(chǔ)過(guò)程和觸發(fā)器

    在這個(gè)系列會(huì)更新一些最近老師要求寫(xiě)的實(shí)驗(yàn)報(bào)告~ 大家盡量對(duì)著我的文章做一個(gè)參考,不要盲目的cv,畢竟這個(gè)對(duì)于我們以后的工作學(xué)習(xí)還是十分重要的。 從這個(gè)實(shí)驗(yàn)開(kāi)始,就不在cmd命令行里面進(jìn)行mysql數(shù)據(jù)庫(kù)的操作,因?yàn)榇a長(zhǎng)度和代碼的復(fù)雜性,需使用 MySQL Workbench: 雙

    2024年02月09日
    瀏覽(101)
  • MySQL數(shù)據(jù)庫(kù)——存儲(chǔ)過(guò)程-介紹以及基本語(yǔ)法(特點(diǎn)、創(chuàng)建、調(diào)用、查看、刪除、示例)

    MySQL數(shù)據(jù)庫(kù)——存儲(chǔ)過(guò)程-介紹以及基本語(yǔ)法(特點(diǎn)、創(chuàng)建、調(diào)用、查看、刪除、示例)

    目錄 介紹 特點(diǎn) 基本語(yǔ)法 創(chuàng)建 調(diào)用 查看 刪除? 示例? 存儲(chǔ)過(guò)程是 事先經(jīng)過(guò)編譯 并 存儲(chǔ)在數(shù)據(jù)庫(kù) 中的一段 SQL 語(yǔ)句的 集合 ,調(diào)用存儲(chǔ)過(guò)程可以簡(jiǎn)化應(yīng)用開(kāi)發(fā)人員的很多工作,減少數(shù)據(jù)在數(shù)據(jù)庫(kù)和應(yīng)用服務(wù)器之間的傳輸,對(duì)于提高數(shù)據(jù)處理的效率是有好處的。 存儲(chǔ)過(guò)程思想

    2024年02月06日
    瀏覽(100)
  • 【Mysql】X-DOC:Mysql數(shù)據(jù)庫(kù)大量數(shù)據(jù)查詢加速(定時(shí)JOB和存儲(chǔ)過(guò)程應(yīng)用案例)

    【Mysql】X-DOC:Mysql數(shù)據(jù)庫(kù)大量數(shù)據(jù)查詢加速(定時(shí)JOB和存儲(chǔ)過(guò)程應(yīng)用案例)

    在某中臺(tái)系統(tǒng)中,設(shè)計(jì)了大量的基礎(chǔ)數(shù)據(jù)(維度數(shù)據(jù)、維度映射關(guān)系等)來(lái)支撐業(yè)務(wù)功能,業(yè)務(wù)表中存在大量的維度外鍵關(guān)聯(lián)字段,其優(yōu)點(diǎn)是可以實(shí)現(xiàn)前端的選擇錄入,數(shù)據(jù)校驗(yàn),確保錄入數(shù)據(jù)的準(zhǔn)確性;缺點(diǎn)是在做業(yè)務(wù)報(bào)表時(shí),需要做大量的維度關(guān)聯(lián)(join)操作。 受限于

    2024年02月12日
    瀏覽(23)
  • 【MySQL】探索MySQL存儲(chǔ)過(guò)程的魔力,初學(xué)者的數(shù)據(jù)庫(kù)編程秘笈(內(nèi)含實(shí)戰(zhàn)SQL腳本)

    【MySQL】探索MySQL存儲(chǔ)過(guò)程的魔力,初學(xué)者的數(shù)據(jù)庫(kù)編程秘笈(內(nèi)含實(shí)戰(zhàn)SQL腳本)

    ?????作者名稱(chēng):DaenCode ??作者簡(jiǎn)介:啥技術(shù)都喜歡搗鼓搗鼓,喜歡分享技術(shù)、經(jīng)驗(yàn)、生活。 ??人生感悟:嘗盡人生百味,方知世間冷暖。 ??所屬專(zhuān)欄:重溫MySQL MySQL存儲(chǔ)過(guò)程作為一種服務(wù)器端的 數(shù)據(jù)庫(kù)編程方式 ,提供了高效、可重用的方法來(lái)執(zhí)行相對(duì)復(fù)雜的數(shù)據(jù)庫(kù)操

    2024年02月15日
    瀏覽(95)
  • SQL Server判斷數(shù)據(jù)庫(kù)、表、列、視圖、存儲(chǔ)過(guò)程、函數(shù)是否存在

    在寫(xiě)一些業(yè)務(wù)邏輯相對(duì)復(fù)雜點(diǎn)的存儲(chǔ)過(guò)程的時(shí)候,經(jīng)常會(huì)用到臨時(shí)表或者數(shù)據(jù)表作為臨時(shí)結(jié)果的保存。但每次在作表是否存在的判斷時(shí),往往想不起完整的SQL寫(xiě)法。因此,記錄一些常用的數(shù)據(jù)庫(kù)對(duì)象是否存在的判斷方法,可以達(dá)到快速查找的目的。正是:好記性不如爛筆頭。

    2024年02月02日
    瀏覽(514)
  • MySQL 數(shù)據(jù)庫(kù)存儲(chǔ)引擎

    MySQL 數(shù)據(jù)庫(kù)存儲(chǔ)引擎

    目錄 一、存儲(chǔ)引擎簡(jiǎn)介 二、MyISAM存儲(chǔ)引擎 1、MylSAM介紹 2、MyISAM表支持3種不同的存儲(chǔ)格式 3、MylSAM的特點(diǎn) 4、MyISAM使用的生產(chǎn)場(chǎng)景 三、InnoDB存儲(chǔ)引擎 1、InnoDB介紹 2、InnoDB的特點(diǎn) 3、InnoDB適用生產(chǎn)場(chǎng)景 4、MyISAM和InnoDB的區(qū)別 四、查看和修改存儲(chǔ)引擎 1、查看系統(tǒng)支持的存儲(chǔ)引擎

    2023年04月25日
    瀏覽(94)
  • MySQL數(shù)據(jù)庫(kù)之存儲(chǔ)引擎

    MySQL數(shù)據(jù)庫(kù)之存儲(chǔ)引擎

    MySQL中的數(shù)據(jù)用各種不下同的技術(shù)存儲(chǔ)在文件中,每一種技術(shù)都使用不同的存儲(chǔ)機(jī)制、索引技巧、鎖定水平并最終提供不同的功能和能力,這些不同的技術(shù)以及配套的功能在MySQL中稱(chēng)為存儲(chǔ)引擎。 存儲(chǔ)引擎是MySQL將數(shù)據(jù)存儲(chǔ)在文件系統(tǒng)中的存儲(chǔ)方式或者存儲(chǔ)格式。 存儲(chǔ)引擎是

    2024年02月03日
    瀏覽(96)
  • 【MySQL數(shù)據(jù)庫(kù) | 第十六篇】存儲(chǔ)引擎

    【MySQL數(shù)據(jù)庫(kù) | 第十六篇】存儲(chǔ)引擎

    目錄 ?前言: ?MySQL體系結(jié)構(gòu)圖: 存儲(chǔ)引擎簡(jiǎn)介: 1. InnoDB存儲(chǔ)引擎: 2. MyISAM存儲(chǔ)引擎: 3. MEMORY存儲(chǔ)引擎: 4. NDB Cluster存儲(chǔ)引擎: 5. ARCHIVE存儲(chǔ)引擎: 存儲(chǔ)引擎語(yǔ)法: ACID與行級(jí)鎖: ?總結(jié): 經(jīng)過(guò)前面15篇的學(xué)習(xí),我們已經(jīng)學(xué)完了SQL的基本語(yǔ)法內(nèi)容,大致掌握了數(shù)據(jù)庫(kù)的操作

    2024年02月08日
    瀏覽(117)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包