标签:就是 while 建议 符号 步骤 call 函数返回 mic char
变量:
系统变量:全局变量、会话变量
自定义变量:用户变量、局部变量
一、系统变量
说明:变量由系统提供,不是用户定义,属于服务器层面
语法
1、查看所有的系统变量
show global | [session] variables;
2、查看满足条件的部分系统变量
show global |【session】variables like ‘%char%‘;
3、查看指定的某个系统变量的值
select @@global | 【session】. 系统变量名;
4、为某个系统变量赋值
方式一:
set global | 【session】系统变量名=值;
方式二:
set @@global | 【session】.系统变量名=值;
注意:如果是全局级别,则需要加global,如果是会话级别,则需要加session,如果不写,则默认session
全局变量作用域:服务器每次启动将为所有的全局变量赋初始值,针对于所有的会话(连接)有效,但不能跨重启
会话变量作用域:仅仅针对于当前会话变量
二、自定义变量
说明:变量是用户自定义的,不是由系统定义的
使用步骤:声明、赋值、使用(查看、比较、运算等)
1、用户变量
作用域:针对于当前会话(连接)有效,同于会话变量的作用域
赋值的操作符:=或:=
①声明并初始化
SET @用户变量名=值;或
SET @用户变量名:=值;或
SELECT @用户变量名:=值;
②赋值(更新用户变量的值)
方式一: 通过SET或SELECT
SET @用户变量名=值;或
SET @用户变量名:=值;或
SELECT @用户变量名:=值;
方式二;通过SELECT INTO
SELECT 字段 INTO 变量名
FROM 表
③使用(查看用户变量名)
SELECT @用户变量名
应用在任何地方,也就是 begin end 里面或者外面
2、局部变量
作用域:仅仅在定义它的begin end 中有效
应用在begin end中,第一句话
①声明
DECLARE 变量名 类型;
DECLARE 变量名 类型 DEFAULT 值;
②赋值
方式一: 通过SET或SELECT
SET 局部变量名=值;或
SET 局部变量名:=值;或
SELECT @局部变量名:=值;
方式二;通过SELECT INTO
SELECT 字段 INTO 局部变量名
FROM 表
③使用(查看用户变量名)
SELECT 局部变量名
作用域 | 定义和使用的地方 | 语法 | |
用户变量 | 当前会话 | 会话中的任何地方 | 必须加@符号,不用限定类型 |
局部变量 | begin end中 | 只能在begin end中,且为第一句话 | 一般不用加@符号,需要限定类型 |
存储过程和函数
类似于java中的方法
好处:
1、提供代码的重用性
2、简化操作
3、减少编译次数并且减少了和数据库服务器的连接次数,提高了效率
含义:一组预先编译好的sql语句的集合,理解成批处理语句
一、创建语法
CREATE PROCEDURE 存储过程(参数列表)
BEGIN
存储过程体(一组合法的SQL语句)
END
注意:
1、参数列表包含三部分
参数模式 参数名 参数类型
举例
IN stuname VARCHAR(20)
参数模式:
IN 该参数可以作为输入,也就是该参数需要调用放传入值
OUT 该参数可以作为输出,也就是该参数可以作为返回值
INOUT 该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值
2、如果存储过程仅仅只有一句话,begin end 可以省略
存储过程体中的每天SQL语句的结尾要求必须加分号
存储过程的结尾可以使用DELIMITER重新设置
语法:
DELIMITER 结束标记
二、调用语法
CALL 存储过程名 (实参列表);
案例:
二、删除存储过程
DROP PROCEDURE 存储过程
三、查看存储过程的信息
SHOE CREATE PROCEDURE 存储过程;
函数与存储过程的区别
存储过程:可以有0个返回,也可以有多个返回
函数:有且仅1个返回,适合做处理数据后返回一个结果
一、创建函数
CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
BEGIN
函数体
END
注意:
1、参数列表 包含两部分:
参数名 参数类型
2、函数体:肯定会有return语句,如果没有会报错
如果return语句没有放在函数体的最后也不报错,但不建议
return值:
3、函数体中仅有一句话,则可以省略begin end
4、使用delimiter语句设置结束标志
二、调用语法
SELECT 函数名(参数列表)
定义局部变量
三、查看函数
SHOW CREATE FUNCTION myf3;
四、删除函数
DROP FUNCTION myf3;
流程控制结构
顺序结构:程序从上往下依次执行
分支结构:程序从两条或多条路径中选择一条去执行
循环结构:程序在满足一定条件的基础上,重复执行一段代码
一、分支结构
1、if函数
实现简单的双分支
语法:
IF(表达式1,表达式2,表达式3)
执行顺序
如果表达式1成立,则if函数返回表达式2的值,否则返回表达式3的值
应用:任何地方
2、case结构
情况1:类似于java中的switch语句,一般用于实现等值判断
语法:
CASE 变量|表达式|字段
WHEN 要判断的值 THEN 返回的值1或语句1;
WHEN 要判断的值 THEN 返回的值2或语句2;
...
ELSE 要返回的值n或语句n;
END CASE;
情况2:类似于java中的多重if语句,一般用于实现区间判断
语法:
CASE
WHEN 判断的条件1 THEN 返回的值1
WHEN 判断的条件2 THEN 返回的值2
...
ELSE 要返回的值n
END
特点:
可以作为表达式,嵌套在其他语句中使用,可以放在任何地方 ,BEGIN EDN 中或外面
可以作为独立的语句去使用,只能放在BEGIN END 中
二、循环结构
分类:while、loop、repeat
循环控制:
iterate类似于continue,继续,结束本次循环,继续下一次
leave类似于break,跳出,结束当前所在循环
1、while
2、loop
3、repeat
标签:就是 while 建议 符号 步骤 call 函数返回 mic char
原文地址:https://www.cnblogs.com/xxmzhaogongzuo/p/13485344.html