服务器每次启动都会为所有全局变量赋初值,
针对于所有客户端的连接有效。
但是不能跨重启。(修改过后,服务器重启所有全局变量又都被赋予初始值)。
会话变量
仅仅对当前会话有效。
- 查看所有变量
默认是会话变量
show [global,session] varibles;
- 查看满足匹配条件的系统变量
show [global,session] varibles like pattern.
- 查看某个变量的值
注意使用@@
select @@[global,session].系统变量名
- 赋值
set [global,session] 系统变量名 值;
或者
set @@[global,session].系统变量名 = 值;
举例
是否自动提交事务
select @@autocommit;
查看自增步长
select @@auto_increment_increment;
查看事务的隔离级别
select @@transaction_isolation;
用户自己定义的变量,不是系统定义的。
自定义变量又分为用户变量和局部变量。
用户变量
作用域: 针对此次会话有效,作用域同会话变量。
注意使用@
;
初始化并赋值
通过 set 和 select
set @用户变量名=值;
set @用户变量名:=值;
select @用户变量名:=值
通过 select into
select 字段 into 变量名 from 表
局部变量
作用域:只在begin end
块中有效。
且只能放在开头。
- 声明
declare 变量名 类型
declare 变量名 类型 default 值
- 赋值
注意不要使用@
。
通过 set 和 select
set 用户变量名=值;
set 用户变量名:=值;
select 用户变量名:=值
通过 select into
select 字段 into 变量名 from 表
- 使用
select 局部变量名;
==================================================================
- 存储过程:
可以0个返回,也可以有多个返回,适合做批量更新、批量插入数据,并带出多个返回值。
- 函数:
有且仅有一个返回值,适合做处理数据后返回一个结果。
CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
BEGIN
函数体
END
举例
- 无参函数
(注意,下面的sql是 datagrip 中显示的创建语句,创建时正常创建就好。如果在命令行,需要注意分隔符的问题。)
create
definer = root@localhost function numberOfStudents() returns int
begin
declare c int default 0;
select count(*) into c from student;
return c;
end;
- 有参函数
create
definer = root@localhost function my_square(x int) returns int
begin
return x*x;
end;
存储过程使用 call
调用。
函数不能。
select my_square(10);
select numberOfStudents();
查看信息。
查看所有函数的详细信息
show function status;
查看某些函数的信息
show function status like ‘function’
查看创建语句。
show create function function_name;
drop function function_name
======================================================================
类似三元运算符一样。
if(表达式1,表达式2,表达式3)
举例:
mysql> select if(true,1,2);
±-------------+
| if(true,1,2) |
±-------------+
| 1 |
±-------------+
1 row in set (0.00 sec)
case结构使用比较多变。
兼具switch-case
、if-else if-else
的功能。
而且,即可以返回值,也可以执行语句。
- 使用一
case 表达式
when 值1 then 返回值1
when 值2 then 返回值2
// …
else 返回值n
end;
- 使用二
总结
我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。
面试题多多少少对于你接下来所要做的事肯定有点帮助,但我更希望你能透过面试题去总结自己的不足,以提高自己核心技术竞争力。每一次面试经历都是对你技术的扫盲,面试后的复盘总结效果是极好的!
找小编(vip1024c)领取
case结构使用比较多变。
兼具switch-case
、if-else if-else
的功能。
而且,即可以返回值,也可以执行语句。
- 使用一
case 表达式
when 值1 then 返回值1
when 值2 then 返回值2
// …
else 返回值n
end;
- 使用二
总结
我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。
面试题多多少少对于你接下来所要做的事肯定有点帮助,但我更希望你能透过面试题去总结自己的不足,以提高自己核心技术竞争力。每一次面试经历都是对你技术的扫盲,面试后的复盘总结效果是极好的!
[外链图片转存中…(img-feXgRalQ-1721718930102)]
找小编(vip1024c)领取