程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL學習筆記_10_MySQL高級操作(下)

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

編輯:MySQL綜合教程

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

 

[sql] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片
  1. 1、set autocommit = 0; #關閉自動提交 2、delete from t1 where id > 4;
  2. 3、savepoint p1; #設置還原點 4、delete from t1;
  3. 5、rollback to p1; #回滾到p1還原點 6、rollback; #回滾到最原始的還原點
  4. 7、commit ; #提交數據到服務器 8、set autocommit = 1; #開啟自動提交,關閉事務處理
    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?在CODE上查看代碼片派生到我的代碼片
    1. mysql>\d // #修改定界符為// mysql>create procedure p1()
    2. ->begin ->set @i = 0;
    3. ->while @i < 100 do ->insert into t2(name) values(concat("user",@i));
    4. ->set @i = @i + 1; ->end while;
    5. ->end;// mysql>\d ;
      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?在CODE上查看代碼片派生到我的代碼片
      1. mysql>\d // mysql>create trigger t1 before inserton t1 for each row
      2. ->begin ->insert into t2(name) values(new.name);
      3. ->end// mysql>\d ;
        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?在CODE上查看代碼片派生到我的代碼片
        1. mysql>\d // mysql>create trigger t2 before delete on t1 for each row
        2. ->begin ->delete from t2 where id =old.id;
        3. ->end// mysql>\d ;
          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?在CODE上查看代碼片派生到我的代碼片
          1. mysql>\d // mysql>create trigger t3 before update on t1 for each row
          2. ->begin ->update t2 set id =new.id where id = old.id;
          3. ->end// mysql>\d ;
            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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved