Mysql高阶语句及存储过程

目录

[空值(NULL) 和 无值('') 的区别:](#空值(NULL) 和 无值('') 的区别:)

正则表达式:

存储过程:

创建存储过程:

存储过程的参数:

存储过程的控制语句:


mysql高阶语句

case是 SQL 用来做为if,then,else 之类逻辑的关键字。

select case '字段' when 值1或表达式 then 值或表达式

when 值2或表达式 then 值或表达式

.......

else 值或表达式 end AS "字段别名"

from 表;

空值(NULL) 和 无值('') 的区别:

空值null 的长度为 NULL ,占用空间;可以通过 字段 is null 或 字段 is not null 判断是否为null行;count(字段) 会忽略 null 行

无值'' 的长度为 0 ,不占用空间;可以通过 字段 = '' 或 字段 <> '' 判断是否为无值的行;count(字段) 不会忽略 无值 的行

测试一下:

正则表达式:

^ 匹配文本的开始字符

$ 匹配文本的结束字符

. 匹配任何单个字符

* 匹配零个或多个在它前面的字符

  • 匹配前面的字符 1 次或多次

p1|p2 匹配 p1 或 p2

... 匹配字符集合中的任意一个字符

\^... 匹配不在括号中的任何字符,取反

{n} 匹配前面的字符串 n 次

{n,m} 匹配前面的字符串至少 n 次,至多m 次

存储过程:

存储过程是一组为了完成特定功能的SQL语句集合。

存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用一个指定的名称存储起来,这个过程经编译和优化后存储在数据库服务器中。当需要使用该存储过程时,只需要调用它即可。存储过程在执行上比传统SQL速度更快、执行效率更高。

存储过程的优点:

1、执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率

2、SQL语句加上控制语句的集合,灵活性高

3、在服务器端存储,客户端调用时,降低网络负载

4、可多次重复被调用,可随时修改,不影响客户端调用

5、可完成所有的数据库操作,也可控制数据库的信息访问权限

创建存储过程:

DELIMITER 将语句的结束符号从分号;临时改为两个(可以是自定义)

CREATE PROCEDURE Proc() 创建存储过程,过程名为Proc,不带参数

-> BEGIN 过程体以关键字 BEGIN 开始

-> select * from Store_Info; 过程体语句

-> END $$ 过程体以关键字 END 结束

DELIMITER ; 语句的结束符号恢复为分号

调用存储过程:CALL Proc;

存储过程的参数:

IN 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)

OUT 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)

INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

create procedure 存储过程名(inout 参数名 参数数据类型)

begin

select 字段 into 参数名 from 表 where 字段 = 参数名;

end$$

set @变量名 = 传入的值; 设置传入的值

call 存储过程名(@变量名); 传入传出参数指定的值只能是变量名

select @变量名; 查看传出的值

存储过程的控制语句:

条件语句:

if 条件表达式 then

SQL语句序列1;

else

SQL语句序列2;

end if;

相关推荐
xujuzheng12 分钟前
2026深圳小程序/App/AI智能体开发公司选型指南(附本地服务商盘点)
数据库·科技·微信小程序·小程序·uni-app
bksczm20 分钟前
MySQL基础篇之表的增删查改(CRUD)细则
sql·mysql
不剪发的Tony老师21 分钟前
DuckDB教程:常用文本函数
数据库·sql·数据分析·duckdb
ManageEngineITSM24 分钟前
什么是IT服务连续性管理?灾难恢复与业务连续性一文讲清
数据库·microsoft·工单系统·变更管理
像风一样自由202044 分钟前
29.Redis在大模型应用中有哪些用途缓存会话与限流
数据库·人工智能·redis·缓存·大模型·milvus·智能体
robottt6662 小时前
2026国产协作机器人排名与选型指南:越疆、遨博、节卡、珞石解析
大数据·数据库·人工智能
郑州光合科技余经理2 小时前
本地生活系统:多业务订单字段怎么分账本导出
java·开发语言·前端·数据库·uni-app·php·ai编程
weixin_460443565 小时前
考试监控大屏为什么不能直接查数据库?WebSocket、Redis与实时数据聚合架构设计
数据库·redis·在线考试系统·培训考试系统·煤矿培训考试系统·煤矿在线考试系统·宏远培训考试系统
风哥2号5 小时前
数据库教程FGMT02‑生产环境Linux+Oracle19c安装配置与项目实战
linux·数据库·ffmpeg
九皇叔叔9 小时前
【第二章】Redis基础入门:Redis是什么、为什么快以及核心特性详解
数据库·redis·缓存