2.变量的赋值
set currentTime=now();//直接赋值 select XX into currentTime from XX;//也可以通过sql语句进行赋值3.定义条件和处理
declare handler_type handler for contidtion_value; handler_type: 1.continue; 2.exit; 3.undo; condition_value: 1.sqlstate 2.sqlwarning 3.not found 4.sqlexception eg: declare continue handler for sqlstate '2' set @x=1;三、光标的使用 在存储过程和函数中,可以使用光标对结果集进行循环处理,光标的使用包含光标的声明: open、fetch、close
定义:
declare cur_id cursor for select * from orders; open cur_id; fetch cur_id; close cur_id;四、事件调度器 事件调度器是MySQL5.1后面新增的功能,可以将数据库按照自定义时间周期触发某种操作。数据库默认操作是关闭的。需要打开
create event x on schedule every 5 second do insert into orders (memberId,serialNumber,amount) values(6561121,'222',5) set global event_scheduler =1//打开调度器 alter event x disable;//禁用事件调度器 drop event x;//删除事件调度器十、 触发器
触发器 触发器是在5.02版本后支持的,触发器是与表有关的数据库对象,在满足条件时触发,并执行触发器中定义的语句集合。可以协助应用在数据库端确保数据的完整性
drop trigger orderlog delimiter $ create trigger orderlog after insert on orders for each row begin insert into orderslog (content) values(new.serialNumber); end $ insert into orders (memberId,serialNumber,amount) values(6561121,'sz12234222',5)解释:上面描述的是创建一个触发器,当往订单表中插入数据之后,在订单日志表插入一条记录。使用old和new来引用触发器发生变化的记录内容,目前只支出行级触发,不支持语句级触发
触发器执行的顺序
before insert\before update\after update
十一、 事务控制和锁定语句
MySQL存储引擎的事务说明
存储引擎说明InnoDB 支持行级锁定
MyISAM 支持表级锁定
Memory 支持表级锁定
BDB 支持页级锁定
1.Lock Table与Unlock Table 语法:
use finance; lock table orders read; unlock table;如果某个进程(session1)lock定了表,那么其他的进程(session2)可以查询,但是不能进行更新操作,直到第一个进程释放了锁