MySQL基础操作(二)

MySQL基础操作(二):

1.5 mysql预处理语句
1.6 mysql事务处理
1.7 mysql存储
1.8 mysql触发器

1.9 重排auto_increment值


        1.5 mysql预处理语句

设置stmt1预处理,传递一个数据作为一个where判断条件:
mysql>prepare stmt1 from 'select * from t1 where id>?';
设置一个变量
mysql>set@i=1;
执行stmt1预处理:
mysql>execute stmt1 using @i;
删除预处理stmt1:
mysql>drop prepare stmt1;


1.6 mysql事务处理(myisam不支持事务机制)
关闭自动提交功能:
mysql>set autocommit=0;
从表t1中删除一条记录;
mysql>delete from t1 where id=10;
此时做一个p1还原点:
mysql>savepoint p1;
再次从表t1中删除一条记录
mysql>delete from t1 where id=9;
再次做一个p2还原点:
mysql>savepoint p2;
此时恢复到p1还原点,后面的p2这些还原点会自动失效:
mysql>rollback to p1;
退回到最原始的还原点:
mysql>rollback;


1.7 mysql存储
创建一个存储p1();
mysql>\d //
mysql>create procedure p1()
->begin
->set @i=0;
->while @i<10 do
->select @i;
->set @i=@i+1;
->end while;
->end;
->//
执行存储p1():
mysql>\d ;
mysql>call p1();
查看procedure p1()的status信息
mysql>show procedure status\G
查看procedure p1()的具体信息
mysql>show create procedure p1\G;


1.8 mysql触发器
修改delimiter为//
mysql>\d //
创建一个名字为tg1的触发器,当向t1表中插入数据时,就向t2表中插入一条数据
mysql>create trigger tg1 before insert on t1 for each row
>begin
>insert into t2(name) values(new.name);
>end//
准备两个空表t1和t2
mysql>select * from t1;
mysql>select * from t2;
向t1表中插入多条数据
mysql>insert into t1(name) values('usr1');


当删除表t1后t2表中的记录也会跟着删除
mysql>\d //
mysql>create trigger tg2 before delete on t1 for each row
>begin delete from t2 where id=old.id;
>end//
mysql>\d ;


当t1表数据更新后t2表也跟着更新
mysql>\d //
mysql>create trigger tg3 before update on t1for each row
>begin update t2 set id=new.id where id=old.id;
>end//
mysql>\d
查看触发器
mysql>show triggers;


1.9 重排auto_increment值

mysql数据库自动增长的id如何恢复:
清空表的时候,不能用
delete from tablename;
而是要用:
truncate table tablename;
这样auto_increment就恢复成1了;


或者清空内容后直接用alter命令修改表:
alter table tablename auto_increment=1;





你可能感兴趣的:(Mysql,mysql预处理,mysql存储,mysql事务机制,mysql触发器)