隔离级别决定了一个session中的事务可能对另一个session中的事务的影响。ANSI标准定义了4个隔离级别,MySQL的InnoDB和Oracle都支持,分别是:
1. SELECT * FROM dual FOR UPDATE;
2. SELECT s.sid, s.serial#,
CASE BITAND(t.flag, POWER(2, 28))
WHEN 0 THEN 'READ COMMITTED'
ELSE 'SERIALIZABLE'
END AS isolation_level
FROM v$transaction t
JOIN v$session s ON t.addr = s.taddr AND s.sid = sys_context('USERENV', 'SID');
设置隔离级别使用
SET TRANSACTION ISOLATION LEVEL [READ UNCOMMITTED|READ COMMITTED|REPEATABLE > > > READ|SERIALIZABLE]
事务分为显性事务和隐性事务
MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关
存储过程
create procedure 存储过程名称(参数列表)
routine_body:SQL语句主体
begin/end来标识代码的开始和结束
参数列表:
三部分组成:输入/输出类型,参数名,参数类型
存储过程的参数分为两类:输入参数,输出参数(相当于java方法的返回值)
其中存储过程名不能超过128个字。每个存储过程中最多设定1024个参数
// java程序对比 模块函数
target = 1 name = MySQL
name = java
public viod add_name( int id) {
String name = " ";
if(id==1){
name = "MySQL";
}else {
name ="Java" ;
}
String sql = "insert into user( name ) values( "+name+")";
}
//SQL语言对比 存储过程
create procedure add_name( in target int )
begin
if target = 1 then
set name = "MySQL";
else
set name = "Java";
end if;
insert into user(name) values(name);
end;
调用:call 存储过程名(参数)
删除:drop procedure 存储过程名
create procedure count_of_user(out count int )
begin
select count( id ) into count from user;
end
调用:call count_of_user( @count ) ,count_of_user会将执行的结果赋值给@count 直接查询@count 就可以获取结果。
if 判断结构:
create procedure example_if( in x int )
begin
if x=1 then
select name from user;
else if x=2 then
select id from user;
end if;
end;
-------------------------------------------------------------------------
case结构:
create procedure example_if( in x int )
begin
case = x
when 1 then select id from user;
when 2 then select name from user;
end case;
end;
--------------------------------------------------------------------------
while 结构
// java语言结构
int sum =0;
int i = 1;
while:
int i = 1;
while( i<=100 ){
sum += i;
i++;
}
syso(sum) ;
//SQL语言结构:(注意语句的分号要写)
create procedure example_while( out sum int )
begin
declare i int default 1;
declare s int default 0;
while i<=100 do
set s = s + i ;
end i = i+1;
end while
set sum = s;
end ;