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、查看procedure的status信息

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,如果修改表t1则t2中的记录也相应修改

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;

最新文章

  1. UTF-8 Unicode ANSI网页编码的区别
  2. 在CentOS或RHEL防火墙上开启端口
  3. PHP的学习--PHP的闭包
  4. iOS FMDB的使用
  5. OpenJudge计算概论-求分数序列和
  6. sort方法的使用、随机数的产生
  7. access 2007 vba (亖)
  8. C语言字符和字符串随记
  9. Secret of Success(成功的秘诀)
  10. Fedora 20中解决zip解压文件时中文文件名的乱码问题[已解决]
  11. ListView的使用(一)
  12. 暴力破解MD5的实现(MapReduce编程)
  13. python设计模式-观察者
  14. 全参考视频质量评价方法(PSNR,SSIM)以及与MOS转换模型
  15. virsh命令和虚拟机克隆
  16. shell 键盘输入
  17. github提交代码后没有contribution问题
  18. css给文字加下划线
  19. 区分action, service和dao
  20. 【zigbee】【蓝牙】射频信号放大器兼容AT2401C

热门文章

  1. SQL Server AlwaysON从入门到进阶(3)——基础架构
  2. 20160214.CCPP体系详解(0024天)
  3. Eclipse的Debug调试技巧
  4. Android Multimedia框架总结(十八)Camera2框架从Java层到C++层类关系
  5. 可能是CAP理论的最好解释
  6. 漏洞挖局利器-Fuzz技术介绍
  7. UE4读取scv文件 -- 数据驱动游戏性元素
  8. 用API给用户添加职责
  9. 3、Android构建仪表测试
  10. UNIX网络编程——名字与地址转换(gethostbyname,gethostbyaddr,getservbyname,getservbyport,getaddrinfo,getnameinfo函数)