mysql会话变量if报错_mysql的⾼级进阶(⼀)
mysql编码设定
我们将我们的客户端的编码设置为utf8,客户端和客户端连接设为utf8,表设计为utf8,字段设置成utf8。
如果我们的客户端是gbk的编码,那我们就通知mysql服务器客户端和客户端连接是gbk的就⾏了。这样也不会出现乱码。
会话变量和全局变量
查看会话变量
show session variables [like '%关键字%']
查看字段的变量名称select @@session.变量名称。
指定会话变量的值 set @@session.变量名称=值 也可以使⽤set 变量名称=值
全局变量
全局变量⼀旦设置在所有的客户端都有效。
查看全局变量
show global variables [like '%关键字%']
select @@global.变量名称
指定全局变量的值 set global 变量名称=值 set @@global.变量名称=变量值。
⽤户定义变量 set @变量名称=值;⽐如set name='张三'
存储过程
存储过程是为了完成特定功能的sql语句集,经过编译后存储在数据库中,⽤户通过指定存储过程的名称并给定参数来调⽤并执⾏他。有点类似于⾃定义函数。
优点:
1增强了sql语⾔的功能和流程性,我们可以完成复杂的判断和运算
2存储过程创建完成后,可以多次被调⽤。
xml文件中的标签
3 存储过程能实现较快的执⾏速度,如果⼀个操作包含⼤量的事务,那么存储过程速度要快很多,因为存储过程是预编译的,⾸次运⾏mysql的优化器会对其进⾏优化,⽽批量处理事务每次都要进⾏编译和优化,速度相对慢⼀些。
4 能减少⽹络的流量,因为发送的数据少。
5 存储过程相对来说安全。
存储过程的存储步骤
1 ⾸先选中⼀个数据库,存储过程是放在某个数据库下的。use 数据库;
2 改变分割符,不要让;作为执⾏结束的标记 使⽤:delimiter $$ 将$$作为sql语句执⾏的结束符。
3 创建⼀个存储过程
create procedure 名称()
begin
sql语句;
sql语句;
end
$$
4 恢复语句执⾏的分割符delimiter ;
5 执⾏存储过程 call 名称[(参数1,参数2,...)];
以上是存储过程的基本⽤法,当然存储过程是复杂的,接下来我们通过细节讲解来学习存储过程。我们可以在存储过程中定义局部变量,定义局部变量可以使⽤:
declare 变量名称 类型(长度),⽐如:
create procedure 名称()
begin
declare name varchar(20) default '';
select name;
oracle lag函数用法
end
$$
调⽤:call 名称;
我们也能使⽤
create procedure 名称()
begin
declare stu_no int;
set stu_no=10;
select stu_no;
end
$$;
调⽤: call 名称;
我们在创建存储过程时可以传递参数。
参数的类型:it培训有哪些
IN:输⼊参数,表⽰该参数的值必须在调⽤存储过程之前指定,在存储过程中修改的值不能被返回。create procedure 名称(IN number int)
begin
select number;
set number=number+1;
select number;
end
$$;
delimiter ;
set @number=3;
call 名称(@number)
我们在重新查询number的值
select @number 我们发现number的值还是3,并没有发⽣什么改变,由此可见IN类型的参数在执⾏完存储过程后他的值并不会发⽣任何变化,有点类似php的局部变量。
OUT:输出参数,该值可以在存储过程内部改变,并且可以返回,往往是⽤于获取存储过程⾥的参数值。matlabfunction函数的用法
当我们传进⼊⼀个变量值是存储过程不认识,在重新赋值后就会有值了。
INOUT:输⼊输出参数,该值可以在调⽤时指定,并可修改和返回,是in和out的综合使⽤。
mysql中流程控制语句之选择语句
if分⽀
IF condition1 THEN
要执⾏的语句;
ELSEIF condition2 THEN
要执⾏的语句;
ELSE
要执⾏的语句;
ENDIF
和存储过程结合
create procedure showage(in age int)
begin
if age>18 then
select "成年⼈";
else
select "未成年⼈";
end if;
end
$$
set @age=19;
call showage(@age);
case分⽀
CASE case_value
WHEN when_value THEN
要执⾏的语句;
[WHEN when_value THEN 要执⾏的语句]
[ELSE 要执⾏的语句]
END CASE
其中case_value参数表⽰条件判断变量,when_value 表⽰变量取值。create procedure addsalary(IN emno int)
begin
declare add int;
case emno
when 1001 then
set add=100;
when 1002 then
set add=200;
when 1003 then
set add=300;
else
set add=500;
end case;
update salary set money=money+add where emno=emno;
indexof的用法返回值
end;
$$
存储过程的使⽤。
set @emno=1002;
call addsalary(emno);
mysql查看所有存储过程
我们也可以把控制流程写到sql语句中
ifnull函数的使⽤,ifnull(exp1,exp2) 如果exp1为空值,那么返回的结果是exp2,如果exp1不为空,返回的结果就是exp1。
mysql中流程控制语句之循环语句
while语句
create procedure addnum()
begin
declare i int default 1;
declare sum int default 0;
while i < 100 do
set sum=sum+i;
set i=i+1;
end while
select sum;
end;
$$;
调⽤:call addnum
repeat .....until
create procedure updateGender()
begin
declare imin int default 1;
declare imax int default 1;
select min(emp_no) into imin from employees;
select max(emp_no) into imax from employees;

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