五、MySQL預處理語句
1、設置預處理stmt,傳遞一個數據作為where的判斷條件
prepare stmt from “select * from table_name where id > ?”;
2、設置一個變量
set @i = 1;
3、執行預處理語句
execute stmt using @i;
4、刪除預處理指令
drop prepare stmt;
六、MySQL事務處理
【注意】MyISAM存儲引擎對事務並不支持,應該使用InnoDB存儲引擎
[sql] view plaincopyprint?
1、set autocommit = 0; #關閉自動提交 2、delete from t1 where id > 4; 3、savepoint p1; #設置還原點 4、delete from t1; 5、rollback to p1; #回滾到p1還原點 6、rollback; #回滾到最原始的還原點 7、commit ; #提交數據到服務器 8、set autocommit = 1; #開啟自動提交,關閉事務處理
七、MySQL存儲
1、創建一個存儲p1()
[sql] view plaincopyprint?
mysql>\d // #修改定界符為// mysql>create procedure p1() ->begin ->set @i = 0; ->while @i < 100 do ->insert into t2(name) values(concat("user",@i)); ->set @i = @i + 1; ->end while; ->end;// mysql>\d ;
2、執行p1()
callp1();
3、查看procedure的status信息
showprocedure status \G
4、查看procedurep1的具體信息
show create procedure p1 \G
八、MySQL觸發器
1、創建觸發器
#創建一個名為t1的觸發器,當向t1表中插入數據時,就引發動作:向t2表中插入數
[sql] view plaincopyprint?
mysql>\d // mysql>create trigger t1 before inserton t1 for each row ->begin ->insert into t2(name) values(new.name); ->end// mysql>\d ;
#創建觸發器t2,如果表t1刪除數據,則引發觸發器,表t2中的數據也相應刪除
[sql] view plaincopyprint?
mysql>\d // mysql>create trigger t2 before delete on t1 for each row ->begin ->delete from t2 where id =old.id; ->end// mysql>\d ;
#創建觸發器t3,如果修改表t1則t2中的記錄也相應修改
[sql] view plaincopyprint?
mysql>\d // mysql>create trigger t3 before update on t1 for each row ->begin ->update t2 set id =new.id where id = old.id; ->end// mysql>\d ;
2、刪除觸發器
drop trigger trigger_name;
【附】刪除表中所有數據:truncatetable_name; #速度更快,同時也可以清空auto_increment列表
九、重排auto_increment值
MySQL中自動增長的ID如何恢復?
1、清空表的時候,不要用delete from table_name;
而是:truncate [table] table_name;
或者
2、清空內容之後直接使用alter命令修改表
alter table table_name auto_increment = 1;