国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MYSQL批量修改表前綴與表名sql語句

2024-07-24 12:37:19
字體:
來源:轉載
供稿:網友

在mysql中我們修改表表就是做了rename來修改了,但是rename只能一次修改一個表的名字并不能批量處理,如果要批量處理我們需要使用遍歷來操作,下面我來介紹一下mysql量修改表前綴與表名方法.

方法一:使用sql語句修改mysql數據庫表前綴名

首先我們想到的就是用sql查詢語句來修改,這個方法也很方便,只需進入phpmyadmin后,在運行 SQL 查詢框中輸入如下語名就可以了。

ALTER TABLE 原表名 RENAME TO 新表名;

如:ALTER TABLE old_post RENAME TO new_post;

Sql查詢語句有一個缺點,那就是一句SQL語句只能修改一張數據庫的表名,如果你要精確修改某一張表,很好用。如果數據庫表很多的話,不推薦使用。有木有,批量修改多個數據庫表前綴名稱的方法類?有的,請看下面的介紹.

例,代碼如下:

  1. Select CONCAT( 'ALTER TABLE ', table_name, 'RENAME TO ', table_name,';' ) 
  2. FROM information_schema.tables 
  3. Where table_name LIKE 'uc_%'

注意:like ‘uc_%’ 其中 uc_是你需要替換的表前綴.

下面這種代碼是今天遇到的,表頭前面是db,但是沒有下橫線顯得很亂,于是批量將”dbtable_name”改成”db_table_name”

主要用的函數是mysql的substring函數.

substring(str,pos)語法

substring(filed,m):截取filed字段從第m個字符開始到結束的字符串;

substring(filed,m,n):截取filed字段從第m個字符開始的長度為n的字符串;

str,字符

pos,從第幾個開始取.

實例代碼如下:

  1. Select CONCAT( 'ALTER TABLE ', table_name, 'RENAME TO db_'substring(table_name,3),';' ) 
  2. FROM information_schema.tables 
  3. Where table_name LIKE 'db%'
  4.  
  5. //重到結果 
  6.  
  7. ALTER TABLE uc_aaa RENAME TO uc_aaa; 
  8. ALTER TABLE uc_bbb RENAME TO uc_bbb; 

批量復制一下到記事本或者 et之類的編輯工具中,然后批量替換 RENAME TO uc 成 RENAME TO 你想要的表前綴

完成后 再執行,這樣就完成了表名的批量修改拉…

方法二:php腳本批量修改mysql數據庫表前綴

經測試,成功修改,如果你需要,請參考借鑒如下.

1、將下面的代碼復制到記事本,根據自己人情況修改好數據庫信息,并保存了editdata.php,代碼如下:

  1. <?php 
  2. //設置好相關信息 
  3. $dbserver='localhost';//連接的服務器一般為localhost 
  4. $dbname='newdata';//數據庫名 
  5. $dbuser='root';//數據庫用戶名 
  6. $dbpassword='123456';//數據庫密碼 
  7. $old_prefix='old_';//數據庫的前綴 
  8. $new_prefix='new_';//數據庫的前綴修改為 
  9. if ( !is_string($dbname) || !is_string($old_prefix)|| !is_string($new_prefix) ) 
  10.     { 
  11.                         return false; 
  12.                 } 
  13.     
  14.             if (!mysql_connect($dbserver$dbuser$dbpassword)) { 
  15.                 print 'Could not connect to mysql'
  16.                 exit
  17.             } 
  18.                 //取得數據庫內所有的表名 
  19.             $result = mysql_list_tables($dbname); 
  20.     
  21.             if (!$result) { 
  22.                 print "DB Error, could not list tablesn"
  23.                 print 'MySQL Error: ' . mysql_error(); 
  24.                 exit
  25.             } 
  26.                 //把表名存進$data 
  27.             while ($row = mysql_fetch_row($result)) { 
  28.                 $data[] = $row[0]; 
  29.             } 
  30.                 //過濾要修改前綴的表名 
  31.                 foreach($data as $k => $v
  32.                 { 
  33.                         $preg = preg_match("/^($old_prefix{1})([a-zA-Z0-9_-]+)/i"$v$v1); 
  34.                         if($preg
  35.                         { 
  36.                                 $tab_name[$k] = $v1[2]; 
  37.                                 //$tab_name[$k] = str_replace($old_prefix, '', $v); 
  38.                         } 
  39.     
  40.                 } 
  41. if($preg
  42.               //        echo '<pre>'; 
  43.         //        print_r($tab_name); 
  44.         //        exit(); 
  45.                 //批量重命名 
  46.                 foreach($tab_name as $k => $v
  47.                 { 
  48.                         $sql = 'RENAME TABLE `'.$old_prefix.$v.'` TO `'.$new_prefix.$v.'`'
  49.                  mysql_query($sql); 
  50.     
  51.            } 
  52. print  數據表前綴:.$old_prefix."<br>".已經修改為:.$new_prefix."<br>";  //Vevb.com 
  53.     
  54.  else 
  55.  { print 您的數據庫表的前綴.$old_prefix.輸入錯誤。請檢查相關的數據庫表的前綴; 
  56.     
  57.             if ( mysql_free_result($result) ) { 
  58.               return true; 
  59.             } 
  60. ?> 

批量刪除表也很簡單,代碼如下:

  1. Select CONCAT( 'drop table ', table_name, ';' ) 
  2. FROM information_schema.tables 
  3. Where table_name LIKE 'uc_%'

注意:like ‘uc_%’ 其中 uc_是你需要替換的表前綴.

執行查詢,會自動生成出 drop table table_name這樣的SQL語句,然后復制 drop語句 可以執行刪除的操作了.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铁岭县| 镇安县| 卓尼县| 安康市| 砚山县| 阜新| 长寿区| 双牌县| 剑阁县| 荆州市| 赤壁市| 绵竹市| 田东县| 台安县| 津南区| 濮阳市| 莱西市| 晋城| 兴国县| 桦川县| 潜山县| 天全县| 吉木萨尔县| 富川| 沁水县| 屯留县| 石河子市| 陈巴尔虎旗| 永吉县| 太仓市| 甘德县| 贵定县| 日照市| 宁波市| 福贡县| 平阳县| 滁州市| 海门市| 巴楚县| 西安市| 贵南县|