一:事物的四大特征
1.原子性 整个事物的所有操作,要么全部完成要么全部不做。不可能停止在中间状态。事物在执行过程中发生错误,会被回滚到事物开始前的状态,就像这个事物从来没被执行过一样。
2.一致性 在事物开始之前和事物结束以后,数据库的完整性约束没有被破坏。
3.隔离性:隔离状态执行事物,使他们好像是系统在给定时间内执行的唯一操作。如果有两个事物,运行在相同的时间内,执行相同的功能。事物的隔离性将确保每一个事物在系统中认为只有该事物在使用系统。这种属性属于串行化,为了防止事物操作间的混淆。
4.持久性 在事物完成以后 该事物所对数据库所作的更改将持久的保存在数据库中,并不会回滚。
二:隔离级别
隔离级别 | 脏读 | 不可重复读 | 幻读 |
Read uncommitted(读未提交) | 是 | 是 | 是 |
Read committed(读已提交) | 否 | 是 | 是 |
Repeatable read(可重复读) | 否 | 否 | 是 |
Serializable(串行化) | 否 | 否 | 否 |
读未提交:脏读 就是事物读取了未提交的事物
读已提交:就是在事物未提交之前所作的修改其他事物是不可见的。
可重复读:保证同一个事物中的多次相同的查询结果是一致的,例 一个事物开始查询一条记录 然后过了几秒后又执行相同的查询,保证两次查询的结果是相同的。
可串行化:可串行化是保证读取的范围内没有新的数据插入,比如事物第一次查询得到的某个范围的数据。第二次查询也同样得到相同范围的数据,中间没有新的数据插入到该范围内。
三:MySQL创建存储过程
1.MySQL存储过程的优点主要还是执行效率和SQL代码封装。
2.创建MySQL存储过程
create procedure pr_add(
a int,b int
)
begin
declare c int;
if a is null then set a=0;
end if;
if b is null then set b=0;
end if;
set c= a+b;
select c as sum;
三 Oracl
1.存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数来执行。存储过程是数据中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
2.存储过程优点
* 允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。
* 允许更快执行 如果某操作需要执行大量SQL语句或重复执行,存储过程比SQL语句执行的要快。
*减少网络流量 例如一个需要数百行的SQL代码的操作一条执行语句完成,不需要在网络中发送数百行代码。
* 更好的安全机制,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。
四:存储过程和存储函数的特点和区别?
特点:
1.存储过程实现公共复杂一点,而函数的实现功能针对性比较强。
2.对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
3.存储过程一般作为一个独立的部分来执行,而函数可以作为查询语句的一部分来调用。由于函数可以返回一个表对象,因此可以在查询语句中位于from关键字的后面。
区别:
1.函数必须有返回值 而存储过程没有
2.函数可以单独执行,而过程必须通过execute执行
3.函数可以镶嵌到SQL语句中 而过程不行