文章目录
- 视图
- 创建视图
- 使用视图
- 修改视图
- 删除视图
- 变量
- 全局变量
- 会话变量
- 用户变量
- 局部变量
- 存储过程
- 创建
- 删除
- 使用
- 查询
- 函数
- 创建
- 查看
- 删除
- 函数与存储过程的区别
- 触发器
视图
视图也就是临时表,当相同的查询语句出现过多时就需要将其抽象成一张表。以简化sql语句,这时候就需要视图了,视图只保存sql逻辑。
创建视图
create view myview
as
查询语句
使用视图
select * from myview;
修改视图
alter view 视图名
as
查询语句
删除视图
drop view 视图名,视图名,...;
变量
全局变量
show global variables; #查看所有变量
show global variables like "%搜索值%"; #特定
select @@global.xxxx; #查看指定变量的值
set @@global.tx_isolation=0; #设置全局变量的值
会话变量
仅仅针对于当前连接有效
查看指定某个会话变量。
show session variables; #查看所有变量
show session variables like "%搜索值%"; #特定
select @@session.xxxxx; #查看指定变量的值
set @@session.tx_isolation=0; #设置全局变量的值
用户变量
局部变量
存储过程
存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。
优点
- 提高代码的重用性
- 简化操作
- 减少与数据库服务器的连接次数,提高效率
缺点
- 存储过程,往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的存储过程。
- 存储过程的性能调校与撰写,受限于各种数据库系统。
创建
create procedure sp_name([[IN |OUT |INOUT ] 参数名 数据类形...])
begin
执行的sql语句1;
执行的sql语句2;
end
- IN 输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值。
- OUT 输出参数:该值可在存储过程内部被改变,并可返回。
- INOUT 输入输出参数:调用时指定,并且可被改变和返回,参数名和sql语句中的字段名不能相同。
删除
drop procedure sp_name;
使用
call sp_name ([param])// 带参数
call sp_name[(param)] // 不带参数
查询
show procedure status
show create procedure sp_name
函数
创建
delimiter $$
create function myfun3(ia int, ib int) returns int
begin
return ia + ib;
end
$$
delimiter ;
例子:
-- 求1 ~ 指定数之前的和,但5的倍数不加
delimiter $$
create function my_sum2(x int) returns int
begin
declare i int default 1;
declare sum int default 0;
sumwhile:while i <= x do
if i % 5 = 0 then
set i = i + 1;
iterate sumwhile;
end if;
set sum = sum + i;
set i = i + 1;
end while;
return sum;
end
$$
delimiter ;
查看
show function status [like 'pattern'];
删除
drop function 函数名;
函数与存储过程的区别
- 函数只能返回一个变量,而存储过程可以返回多个。
- 函数的限制比较多,不能用临时表,只能用表变量,有些函数不能用,存储过程限制少。
- 存储过程处理的功能比较复杂,而函数实现的功能针对性强。
- 存储过程可以执行修改表的操作,但是函数不能执行一组修改全局数据库状态的操作。
- 存储过程可以返回参数,如记录集,函数只能返回值或者表对象。
触发器
建议少用,性能低下。