一个临时表被反复使用的时候,对这个临时表起一个别名,方便以后使用,就可以创建一个视图,别名就是视图的名称。视图只是一个虚拟的表,其中的数据是动态的从物理表中读出来的,所以物理表的变更回改变视图。
创建:
create view v1 as SQL
例如:create view v1 as select * from student where sid<10
创建后如果使用mysql终端可以看到一个叫v1的表,如果用navicate可以在视图中看到生成了一个v1的视图
再次使用时,可以直接使用查询表的方式。例如:select * from v1
修改:只能修改视图中的sql语句
alter view 视图名称 as sql
删除:
drop view 视图名称
当对某张表做增删改查的时候(之前后者之后),就可以使用触发器自定义关联行为。
修改sql语句中的终止符号 delimiter
before after 之前之后
本质上就是一堆sql的集合,然后给这个集合起个别名。和view的区别就是,视图是一个sql查询语句当成一个表。
方式:
1 msyql----存储过程,供程序调用
2 msyql---不做存储过程,程序写sql
3 mysql--不做存储过程,程序写类和对象(转化成sql语句)
创建方法:
-- 1 创建无参数的存储过程
-- delimiter //
-- create PROCEDURE p1()
-- BEGIN
-- select * from student;
-- insert into teacher(tname) VALUES('cccc');
-- end //
-- delimiter ;
-- 调用存储过程
为什么有了结果集,又要有out伪造返回的值?
因为存储过程中含有多个sql语句,无法判断所有的sql都能执行成功,利用out的特性来标识sql是否执行成功。
例如,如果成功标识为1 部分成功标识2 失败为3
存储过程中的事务:
事务:
被成为原子性操作。DML(insert,update,delete)语句共同完成,事物只和DML语句相关,或者锁只有DML才有事物。
事务的特点:
原子性 A :事务是最小单位,不可分割
一致性 C :事务要求所有dml语句操作的时候必须保证全部成功或者失败
隔离性 I : 事务A和事务B之间有隔离性
持久性 D : 是事务的保证,事务终结的标志(内存中的数据完全保存到硬盘中)
事务关键字:
开启事务:start transaction
事务结束 :end transaction
提交事务 :commit transaction
回滚事务 :rollback transaction
事务的基本操作
游标在存储过程中的使用:
动态的执行sql,数据库层面放置sql注入:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:/yuan-x/p/12253062.html