我的第一篇笔记,目的是整理存储所学的知识。坚持。
变量
分类:
一、系统变量
说明:
变量是由系统提供的,不是用户定义的,属于服务器层面
使用语法:
1、查看所有的系统变量
#查看系统变量
SHOW GLOBAL VARIABLES
# 查看会话变量
SHOW SESSION VARIABLES
2、查看满足条件的部分系统变量
SHOW GLOBAL VARIABLES LIKE "char%"
SHOW SESSION VARIABLES LIKE "char%"
3、查看指定的系统变量
SELECT @@变量名
4、为某个系统变量赋值
方式一:
SET GLOBAL 系统变量名 = 值;
SET SESSION 系统变量名 = 值;
方式二:
SET @@GLOBAL 系统变量名 = 值;
SET @@SESSION 系统变量名 = 值;
注意:
如果是全局变量,需要加global;如果是会话级别,则可以不写或者加session
1、全局变量
作用域:
针对整个服务器,每次启动的时候,都会为所有的全局变量赋值。再重新启动的时候,会重新变为之前的值,不能跨重启。
2、会话变量
作用域:
仅仅针对于当前的会话有效
二、自定义变量
说明:
变量是用户自定义的,不是系统的
1、用户变量
作用域:
针对于当前的会话,和系统变量中的会话变量的作用域相同
使用步骤:
①声明并且初始化
set @用户变量名 = 值;
set @用户变量名:=值;
select @用户变量名: = 值;
②赋值,更新用户变量的值
# 方式一
set @用户变量名 = 值;
set @用户变量名:=值;
select @用户变量名: = 值;
# 方式二
select 字段 into @变量名 from 表
SELECT COUNT(*)
INTO @count
FROM employees; # 将employees表中的数据的数量赋值给自定义变量@count
SELECT @count;
2、局部变量
作用域:
仅仅在定义它的begin end 中有效,只能是第一句。
声明:
declare 变量名 类型;# 需要限定类型
declare 变量名 类型 default 值;
赋值:
# 方式一
set 局部变量名 = 值;
set 局部变量名:=值;
select @局部变量名: = 值;
# 方式二
select 字段 into 局部变量名 from 表
使用:
select 局部变量名;
声明两个变量并且赋值,求和,并打印
# 用户变量
SET @m = 1;
SET @n = 2;
SET @sum = @m + @n;
SELECT @sum;
# 局部变量
DECLARE n INT DEFAULT 1;
DECLARE m INT DEFAULT 2;
DECLARE SUM INT ;
SET SUM = n + m;
SELECT SUM;
存储过程和函数
类似于java的方法
好处:
1、提高代码的重用
2、简化操作
一、存储过程
好处:
1、提高代码的重用
2、简化操作
3、减少了编译次数和数据库服务器的连接次数,提高了效率
含义:
就是预先编译好的sql语句的集合,理解成批处理语句
1、创建语法
create procedure 存储过程名(参数列表)
begin
存储过程体(一组合法的sql语句)
end
注意事项:
1、参数列表包含三部分:
参数的模式、参数名、类型
in stuName varchar(20);
参数模式:
in:参数可以作为输入,也就是该参数需要调用方传入值
out:该参数可以作为输出,就是该参数可以作为返回值
inout:可以输入也可以输出
2、如果存储过程体仅仅只有一句话,begin end 可以省略
3、存储过程体的每一条sql语句的结尾都必须加分号
存储过程的结尾可以使用delimiter 重新设置
语法:
delimiter 结束标记;
2、调用语法
语法
call 存储过程名(实参列表);