zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    mysql基础
    协程
    锁与队列
    线程练习
    线程
    并发编程
    进程
    操作系统发展史
    第六周----例行报告
    附加题找bug
  • 原文地址:https://www.cnblogs.com/itrena/p/5927059.html
Copyright © 2011-2022 走看看