| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Mysql之变量、存储过程、函数 -> 正文阅读 |
|
[大数据]Mysql之变量、存储过程、函数 |
Mysql之变量、过程、函数 变量分为系统变量和自定义变量 系统变量:说明:系统变量是由系统提供的,不是用户自定义的,属于服务器层面 ? ? ? ? 1.全局变量?2.会话变量 ?使用语法: 1.查看所有的全局/[局部变量]? 默认是局部变量
2.查看某些满足条件的系统变量
? ?3.查看指定的某个系统变量的值
4. 为系统变量赋值 方式一:
? ?方式二:
? ?global和session作用域的讲解: ?global的作用域:服务器每次重启都会对全局变量进行一个赋值,所以全局变量的修改只对所有会话(连接)有效,不能跨重启 ? session的作用域:仅对当前的会话有效 ? 自定义变量:说明:由用户自己定义,不是由系统 使用:①声明②赋值③使用 1.用户变量 声明: set @变量名=值; set @变量名:=值; select @变量名:=值; 赋值: 方式一: set @变量名=值; set @变量名:=值; select?@变量名:=值; 方式二: select 字段 into @变量名 from table where 条件; 使用: select @变量名; 用户变量的作用域:当前会话有效 2.局部变量 声明: declare 变量名? 数据类型 [default 默认值]; 赋值: set 变量名 = 值; set 变量名 := 值; select? @变量名 :=值; select 字段 into 变量名 from table; 使用: select 变量名; 局部变量的作用域:只能在begin-end中有效 用户变量与局部变量的对比: ? ? ? ? ? ? ? ? ? ? ? ?作用域? ? ? ? ? ? ? ? ? ?定义与使用? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?语法 用户变量? ? ? ? ?当前会话? ? ? ? ? ? ? ? ?任何地方? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?必须加上@,不限定数据类型 局部变量? ? ? ? ?BEGIN END? ? ? ? ? ?BEGIN-END且为第一句? ? ? ? ? ? 一般不用加@,限定数据类型 案例:声明两个变量并赋初始值,求和,并打印
存储过程:procedure说明:一组预先编号的sql语句,可以看成是批处理 好处: 1.提高代码的重用性 2.简化操作 3.减少编译次数和与服务器连接的次数,提高效率 语法: create procedure 过程名(参数列表) begin ? ? ? ? 过程体; end? 细节: 1.参数列表包含三部分:参数模式? ? ?参数名? ? ? ? 参数类型 参数模式 :in\out\inout in:该参数可以作为输入,需要调用方传入参数 out:该参数可以作为输出,也就是该参数可以作为返回值 inout:该参数即可输入也可输出 2.如果过程体中仅有一句语句,begin和end可以省略 存储体的每条语句结构需要加上' ; ' 存储过程的结尾可以使用delimiter重新设置 语法: delimiter 结束标记 delimiter $ 调用语法:call 存储过程名(实参列表); 说明:存储过程、函数需要在命令行窗口执行,数据库管理软件并不支持 案例1:向admin表中插入五条记录(无参列表)
? ?#案例:创建存储过程,实现根据女神名,查询对应的男生信息(带in模式参数的存储过程)
?案例:创建存储过程,实现用户是否登录成功
? 案例:根据女神名,返回对应的男生名(创建带out模式的存储过程)
?案例:传入a和b两个值,最终a和b都翻倍并返回(带inout参数模式的存储过程)
? 1.创建存储过程或函数实现传入用户名和密码,插入到admin表中
2.创建存储过程或函数实现传入女神编号,返回女神名称和女神电话
3.创建存储过程或函数实现传入女神编号返回两个女神生日的大小 ?
4.创建存储过程实现传入一个日期,格式化成xx年xx月xx日并返回
5.创建一个存储过程实现传入女神的名称,返回:女神 AND 男神 格式的字符串 传入: 小昭 返回: 小昭 AND 张无忌
6.创建存储过程,根据传入的条目数和起始索引,查询beauty表的记录
?存储过程的删除:
?存储过程的查看:
?函数: 说明:一组预先编译好的sql语句,可以看成批处理 优点: 1.提高代码的复用性 2.简化操作 3.减少编译次数和数据库服务器的连接,提高效率 语法: create? function? 函数名 returns 返回值类型 begin ????????函数体; end? 细节: 1.参数列表 参数名? ? 返回值类型 2.必须要有返回值,没有返回值会报错 return语句如果不放在函数体的最后面不会报错但是不推荐 3.如果函数体只有一句话则可以省略begin和end 4.使用delimiter设置结束标记 存储过程和函数的区别: 1.存储过程可以没有返回值,也可以有多个返回值,适合做批插入,批更新 2.函数必须有一个返回值,适合做对数据的处理后返回一个结果 函数的调用:
案例:返回公司的员工个数
?案例:根据员工名,返回它的工资
?案例:根据部门名,返回该部门的平均工资
?查看函数:
删除函数:
流程控制: 1.顺序结构:按照代码顺序从上到下执行 2.选择结构 ? ? ? ? 单分支:IF -> 类似于java中的三元运算符 ? ? ? ? 语法:if(exp1,exp2,exp3) ->若果exp1为真则执行exp2否则执行exp3 ? ? ? ? 多分支:case ????????①类似于java中switch-case,一般用于值判断 ? ? ? ? 语法: ? ? ? ? case? 表达式\字段\值 ? ? ? ? when 值1 then 值1\语句1; ????????when 值2?then 值2\语句2; ? ? ? ? .... ? ? ? ? else 语句n; ? ? ? ? end case; ? ? ? ? ②类似于java中的if-else if,一般用于范围判断 ? ? ? ? case ? ? ? ? when exp1 then 值1\语句1; ????????when exp2?then 值2\语句2; ? ? ? ? .... ? ? ? ? else 语句n; ? ? ? ? end case; 案例:创建存储过程,根据传入的成绩,来显示等级,比如传入的成绩:90-100,显示A,80-90,#显示B,60-80,显示C,否则,显示D
? ? ? ? ?if-elseif-else: ? ? ? ? 语法: ? ? ? ? if exp1 then 语句1; ? ? ? ? elseif exp2 then 语句2; ????????elseif exp3?then 语句3; ? ? ? ? .... ? ? ? ? else 语句n; ? ? ? ? end if; 案例:创建存储过程,根据传入的成绩,来显示等级,比如传入的成绩:90-100,返回A,80-90,返回B,60-80,返回C,否则,返回D
3.循环结构 1.while 2.loop 死循环 3.repeat 类比java中的do-while leave: 类比java中的break; iterate:类比java中的continue; 语法: ? ①[标志:]while? 循环条件? do ? ? ? 循环体; ? ? ? end while [标志];? ? ②[标志:]loop? ? ? ? ? ? ? ? ? ?循环体; ? ? ??end loop [标志:];? ? ③[标志:]repeat ? ? ? ? 循环体; ? ? ?util 结束循环的条件; ? ? ?end repeat [标志]; ?案例:批量插入,根据次数插入到admin表中多条记录
?案例:批量插入,根据次数插入到admin表中多条记录,如果次数>20则停止
?案例:批量插入,根据次数插入到admin表中多条记录,值插入偶数次
?
? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 6:23:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |