MySQL变量、函数、存储过程的使⽤
MySQL语句:
1.
2.
3.
4.
⼀、变量
在mysql⽂档中,mysql变量可分为两⼤类,即系统变量和⽤户变量。
但根据实际应⽤⼜被细化为四种类型,即、、和。
1、局部变量
mysql局部变量,只能⽤在begin/end语句块中,⽐如存储过程中的begin/end语句块。其作⽤域仅限于该语句块。
-- declare语句专门⽤于定义局部变量,可以使⽤default来说明默认值
-- DECLARE 变量名 [,] 数据类型 [DEFAULT value];
declare age int default0;
-- 局部变量的赋值⽅式⼀
-- SET 变量名 = 表达式值 [,variable_name = expression ...]
set age=18;
-- 局部变量的赋值⽅式⼆
select StuAge
into age
from demo.student
where StuNo='A001';
2、⽤户变量
mysql⽤户变量,mysql中⽤户变量不⽤提前申明,在⽤的时候直接⽤“@变量名”使⽤就可以了。其作⽤域为当前连接。
1-- 第⼀种⽤法,使⽤set时可以⽤“=”或“:=”两种赋值符号赋值
2set@age=19;
3
4set@age:=20;
5
6-- 第⼆种⽤法,使⽤select时必须⽤“:=”赋值符号赋值
7select@age:=22;
8
9select@age:=StuAge
10from demo.student
11where StuNo='A001';
3、会话变量
mysql会话变量,服务器为每个连接的客户端维护⼀系列会话变量。其作⽤域仅限于当前连接,即每个连接中的会话变量是独⽴的。 1-- 显⽰所有的会话变量
2 show session variables;
3
4-- 设置会话变量的值的三种⽅式
5set session auto_increment_increment=1;
6set@@session.auto_increment_increment=2;
7set auto_increment_increment=3;        -- 当省略session关键字时,默认缺省为session,即设置会话变量的值
8
9-- 查询会话变量的值的三种⽅式
10select@@auto_increment_increment;
11select@@session.auto_increment_increment;
12 show session variables like'%auto_increment_increment%';        -- session关键字可省略
13
14-- 关键字session也可⽤关键字local替代
15set@@local.auto_increment_increment=1;
16select@@local.auto_increment_increment;
4、全局变量
mysql全局变量,全局变量影响服务器整体操作,当服务启动时,它将所有全局变量初始化为默认值。要想更改全局变量,必须具有super权限。其作⽤域为server的整个⽣命周期。
1-- 显⽰所有的全局变量
2 show global variables;
3
4-- 设置全局变量的值的两种⽅式
5set global sql_warnings=ON;        -- global不能省略
6set@@global.sql_warnings=OFF;
7
8-- 查询全局变量的值的两种⽅式
9select@@global.sql_warnings;
10 show global variables like'%sql_warnings%';
⼆、流程控制语句
块定义
、区块定义
1、区
[lable:]begin
  statement
end[label];
if条件then
statement
elseif 条件 then
statement
else statement
end if;
case-- 条件开始
when条件then statement;
when条件then statement;
else statement;
end case; -- 条件结束
while循环
[label:]WHILE expression DO
statements
END WHILE[label] ;
loop循环
[label:] LOOP
statements
  -- leave [label]-- 结束循环
  -- iterate [label] -- 结束本次循环
END LOOP [label];
repeat until循环
[label:] REPEAT
statements
UNTIL expression
END REPEAT [label] ;
三、函数
函数存储着⼀系列sql语句,调⽤函数就是⼀次性执⾏这些语句,但是只能返回⼀个值。
⾃定义函数分为⼆种,⼀种是标量值函数,另⼀种是表格值函数
Create function 函数名(参数) Returns 返回值数据类型
as
begin
SQL语句(必须有return 变量或值)
End
--创建函数
CREATE FUNCTION MySTR(@strs VARCHAR(50)) RETURNS VARCHAR(50)
AS
BEGIN
DECLARE@str2VARCHAR(30)
SET@str2=@strs
DECLARE@str3VARCHAR(30)
SET@str3=(select name from userinfo where huji=dbo.MySTR('邯郸') and id=23 )
RETURN@str2
END
-
-调⽤函数
SELECT dbo.MySTR('aa') AS result
create function函数名(参数)returns table
as
return(⼀条SQL语句)
-- 创建函数
CREATE FUNCTION  tabcmess(@title VARCHAR(10)) RETURNS TABLE
AS
return(select title,des from product where title like'%'+@title+'%')
-
- 调⽤
SELECT*FROM tabcmess('aaa')
create function函数名(参数)returns表格变量名 table(表格变量定义)
as
begin
SQL语句
end
-- 创建函数
CREATE function tabcmessalot (@title varchar(10)) Returns@ctable table(title varchar(10) null,des varchar(100) null)
As
Begin
Insert@ctable Select title,des from product WHERE title LIKE'%'+@title+'%'
return
End
-- 调⽤函数
SELECT*FROM tabcmessalot('aaa')
四、存储过程
存储过程简单来说,就是为以后的使⽤⽽保存的⼀条或多条 MySQL 语句的集合
  delimiter //  ⼀般情况下MYSQL以;结尾表⽰确认输⼊并执⾏语句,但在存储过程中;不是表⽰结束,因此可以⽤该命令将;号改为//表⽰确认输⼊并执⾏。
-- 创建存储过程
create procedure sp_name(in输⼊变量名数据类型,out输出变量名数据类型,inout输⼊输出变量名数据类型)
begin
.........
end
call sp_name([输⼊参数], [@输出变量名])  -- 调⽤存储过程select@输出变量名-- 显⽰过程输出结果
drop procedure sp_name
-- 显⽰存储过程
SHOW PROCEDURE STATUS;
-- 显⽰特定数据库的存储过程
SHOW PROCEDURE status where db ='schooldb';
简单的mysql语句-- 显⽰特定模式的存储过程
SHOW PROCEDURE status where name like'%my%';
-- 显⽰存储过程“mypro1”的源码
SHOW CREATE PROCEDURE mypro1;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。