什么是视图?
试图是从一个或者几个基本表(或试图)导出的表,它与基本表不同,是一个虚表
视图的操作:
查看所有的试图:
select * from information_schma.VIEWS where table_cshema=‘库名’;
查看视图的建立:
show create VIEW view_name
删除存储过程:
drop VIEW view_name
存储过程:
为什么使用存储过程:
1.业务流程复杂;
2.频繁访问数据库
3.先编译后执行
创建存储过程:
create procedure(
in/out/inout 参数名 数据类型
)
gegin
declare 变量 变量类型
end
in :表示入参
out :表示返回值
inout :表示即是入参又是返回值
存储过程的操作:
调用存储过程:call 存储过程名 参数名
查看存储过程:select * from information_sehcma.ROUTINES where rouine_sechname=‘库名’
删除存储过程:drop procedure
存储过程的缺陷:
维护性:存储过程的维护成本高,修改调试较为麻烦
移植性:大多数关系型数据库的存储过程存在细微差异
协作性:没有相关的版本控制或者IDE,团队中对于存储过程的使用大多是依赖文档
触发器:
什么是触发器?
触发器是数据库中针对数据库表操作触发的特殊的存储过程
创建触发器:
create trigger 数据库名.触发器名
BEFORE/AFTER --触发顺序
INSERT/UPDATE/DELETE --触发事件
ON 数据库.库名 --事件表
FOR EACH ROW
BEGIN
触发内容 --事件出发后要写的语句
触发器的查看:
查看所有的触发器:
select * from information_schema.TRIGGERS
where tigger_schema='库名'
删除触发器:
drop trigger 触发器名
存储过程和触发器的区别:
语法上的区别:关键字不同,存储过程是procedure,触发器是trigger
执行:存储过程需要调用才执行,触发器自动执行
返回值:存储过程可以定义返回值,但是触发器没有返回值
功能:存储过程是一组特定功能的SQL语句,触发器则是SQL语句前后执行,本身不影响原功能