MySQL學習筆記_10_MySQL高級操作(下)

MySQL高級操作(下)



五、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存儲引擎

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()

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、查看procedurestatus信息

showprocedure status \G


4、查看procedurep1的具體信息

show create procedure p1 \G


八、MySQL觸發器

1、創建觸發器

#創建一個名爲t1的觸發器,當向t1表中插入數據時,就引發動作:向t2表中插入數

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中的數據也相應刪除

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,如果修改表t1t2中的記錄也相應修改

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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章