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;

  • 相关阅读:
    无法删除文件提示找不到指定文件导致文件无法删除的解决方法
    c++多线程编程(三)
    c++多线程编程(二)
    c++多线程编程(一)
    面试中的C++常见问题
    展示组件(Presentational component)和容器组件(Container component)之间有何不同
    如果你创建了类似于下面的 Twitter 元素,那么它相关的类定义是啥样子的?
    React 中 refs 的作用是什么?
    typescript 类(类的定义、继承、修饰符、抽象类)
    typescript 接口 interface
  • 原文地址:https://www.cnblogs.com/itrena/p/5927059.html
Copyright © 2011-2022 走看看