变量分类:
系统变量:
全局变量
会话变量
自定义变量:
用户变量
局部变量
说明:变量由系统提供不是用户定义,属于服务器层面
使用语法:
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
全局变量的作用域:服务器每次启动将为所有的全局变量赋初始值,针对于所有的会话(连接)
有效,但不能跨重启(重新启动服务器会恢复默认,除非修改配置文件,但不做 )
会话变量:
作用域:仅仅针对当前(连接)有效
show variables
show session variables
查看部分会话变量
show variables like ‘%char%
show session variables like “%cahr%”’
查看指定的会话变量
slect @@tx_isolation
select @@session.tx_isolation
为某个会话变量赋值
方式1:
set @@session.tx_isolstion='read-uncommitted
方式2:
set session tx_isolation='read-committed''
说明:变量是用户自定义的,不是由系统的
使用步骤:
1声明
2赋值
3使用(查看 比较 运算等)
1 用户变量
作用域:针对当前会话有效,同于会话变量作用域
应用在任何地方,也就是begin end里面或begin end外面
赋值操作符:=或:=
声明初始化
set @用户变量=值;或
set @用户变量名:=值;或
select @用户变量名:=值;
赋值(更新用户变量的值)
方式1:通过set或select
set @用户变量=值;或
set @用户变量名:=值;或
select @用户变量名:=值;
方式2:
select 字段 into 变量名 from 表;
使用(查看用户变量名)
select @用户变量名;
实例:
set @name=‘join’
set @name=100;
select count(*)into @count from employees
slect @count
局部变量
作用域:仅仅在定义它的begin end中有效
应用在begin end中的第一句话
声明
declare 变量名 类型;
declare 变量名 类型 default 值;
赋值
方式1:通过set或select
set 局部变量名=值;或
set 局部变量名:=值;或
select @局部变量名:=值;
方式2:
select 字段 into 局部变量名 from 表;
使用
select 局部变量名;
存储过程和函数
存储过程和函数,类似于java中的方法
好处:
1.提高代码的重用性
2.简化操作
3.
存储过程
含义:一组预先编译好的SQL语句的集合,理解成批处理语句
1.提高代码的重用性
2.简化操作
3.减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
一 创建语法
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体(一组合法的SQL语句)
END
注意:
1.参数列表包含三部分
参数模式 参数名 参数类型
例子:
IN stuname varchar(20)
参数模式:
IN:该参数可以作为输入,也就是该参数需要调用方传入值
OUT:该参数可以作为输出,也就是该参数可以作为返回值
INOUT:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值
2 如果存储过程体仅仅只有一句话,BEGIN END可以省略
存储过程体中的每条SQL语句的结尾必须加分号
存储过程的结尾可以使用DELIMITER重新设置
语法:
DELIMITEER 结束标记
例子:
DELIMITER $
二调用语法
CALL 存储过程名(实参列表);
2.创建带in模式参数的存储过程
3.创建带OUT模式的存储过程
4.创建带inout模式存储过程
二存储过程的删除
语法:drop procedure 存储过程名
drop procedure p1,p2;
三 查看存储过程的信息
desc这种是错的
show cerate procedure 存储过程名;
案例讲解P164