MySQL高级进阶二:自定义函数,自定义变量,常用函数以及存储过程

您所在的位置:网站首页 mysql存储过程怎么调用函数类型 MySQL高级进阶二:自定义函数,自定义变量,常用函数以及存储过程

MySQL高级进阶二:自定义函数,自定义变量,常用函数以及存储过程

2024-07-14 20:56| 来源: 网络整理| 查看: 265

代码执行结构

代码执行结构有3种:顺序结构、分支结构和循环结构

分支结构

准备多个代码块,按照条件选择性的执行。

在mysql中只有if分支

基本语法:

         If 判定条件 then

             -----满足条件要执行的代码

         Else

                   -----不满足条件要执行的代码

         End if

下面通过一个案例来了解这种分支结构,首先准备操作数据

CREATE TABLE my_goods( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, price DECIMAL(10,2) DEFAULT 1, inv INT COMMENT '库存数量' )CHARSET utf8; INSERT INTO my_goods VALUES(NULL,'iPhone6s',5288,100),(NULL,'s6','6088',100); SELECT * FROM my_goods; CREATE TABLE my_order( id INT PRIMARY KEY AUTO_INCREMENT, g_id INT NOT NULL COMMENT '商品ID', g_number INT COMMENT '商品数量' )CHARSET utf8; SHOW CREATE TABLE my_order; SELECT * FROM my_order;

建立一个触发器,判断商品的库存是否足够,不够不能生产订单

DELIMITER $$ CREATE TRIGGER after_order AFTER INSERT ON my_order FOR EACH ROW BEGIN SELECT inv FROM my_goods WHERE id = new.g_id INTO @inv; IF @inv < new.g_number THEN INSERT INTO xxx VALUE (); ELSE UPDATE my_goods SET inv = inv - new.g_number WHERE id = new.g_id; END IF; END $$ DELIMITER ;

这时候如果商品库存不够,就会直接报错

循环结构

某段代码在指定的条件内重复执行

只有While循环,没有for循环

语句格式 While 判定条件 do      --满足条件要执行的代码      -- 变更循环的条件 End while

 

循环控制

在循环内部进行循环的判定与控制

Mysql中没有对应continue和break关键字,但是有替代品

Iterate:迭代,类似于continue,后面的代码不执行,进入下一次循环

Leave:离开,类似于break,整个循环结束。

常见:in,any也可以在while中使用

函数

将一段代码封装到一个结构中,在需要执行这段代码的时候,调用结构执行即可,代码的重用。

函数分为2种:系统函数,自定义函数

系统函数

系统已经定义好的函数,直接调用即可,

任何函数都有返回值,因此函数的调用是通过select调用

substring();

字符串截取(字符为单位)

SET @cn = '世界你好'; SET @en = 'hello world'; SELECT SUBSTRING(@cn,1,2); SELECT SUBSTRING(@en,1,2); Char_length();

字符长度

SELECT CHAR_LENGTH(@cn); SELECT CHAR_LENGTH(@en); Length

字节长度

SELECT LENGTH(@cn); SELECT LENGTH(@en); Instr

.判定字符串是否存在某个子串,存在返回位置,0代表没找着

SELECT INSTR(@en,'he'),INSTR(@cn,'he'); Lpad

左填充:将字符串按照某种方式进行填充

SELECT LPAD(@en,21,"123"); Insert

替换,找到目标位置,指定长度的字符串 ,替换成 目标字符串

SELECT INSERT(@en,2,5,"AAAAA"); Strcmp

字符串比较,一样返回0,t1>t2返回1,t1



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3