被取消的命令MySQL 之前提供了一個 rename database db_old to db_new 的命令來直接對數(shù)據(jù)庫改名,可能由于實現(xiàn)的功能不完備(比如,這條命令可能是一個超大的事務(wù),或者是由于之前的表很多還是 MyISAM 等),后來的版本直接取消了這條命令。更改數(shù)據(jù)庫名大致上有以下幾種方案:
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),寬甸企業(yè)網(wǎng)站建設(shè),寬甸品牌網(wǎng)站建設(shè),網(wǎng)站定制,寬甸網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,寬甸網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
一、mysqldump 導入導出要說最簡單的方法,就是直接用 mysqldump 工具,在舊庫導出再往新庫導入(最原始、最慢、最容易想到)的方法:舊庫 yttdb_old 導出(包含的對象:表、視圖、觸發(fā)器、事件、存儲過程、存儲函數(shù))
二、改整庫的表名利用 MySQL 更改表名的方法來批量把舊庫的所有表依次遍歷,改名為新庫的表。這種方法比第一種要快很多倍,但是沒有第一步操作起來那么順滑,不能一步到位。比如,要把數(shù)據(jù)庫 yttdb_old 改名為 yttdb_new,如果數(shù)據(jù)庫 yttdb_old 里只有磁盤表,那很簡單,直接改名即可?;蛘邔憘€腳本來批量改,非常簡單。但是一般舊庫里不只有磁盤表,還包含其他各種對象。這時候可以先考慮把舊庫的各種對象導出來,完了在逐一改完表名后導進去。
三、歷史方案其實在 MySQL 早期還有一種方法。假設(shè) MySQL 部署好了后,所有的 binlog 都有備份,并且二進制日志格式還是 statement 的話,那就可以簡單搭建一臺從機,讓它慢慢追主機到新的庫名,等確切要更改舊庫的時候,再直接晉升從機為主機即可。這里只需要從機配置一個參數(shù)來把舊庫指向為新庫:replicate-rewrite-db=yttdb_old-yttdb_new不過這種局限性很大,不具備標準化,不推薦。
總結(jié)其實針對 MySQL 本身改庫名,大致就這么幾種方法:
如果數(shù)據(jù)量小,推薦第一種;
數(shù)據(jù)量大,則推薦第二種;
數(shù)據(jù)量巨大,那就非 MySQL 本身能解決的了。
可通過部署第三方 ETL 工具,通過解析 MySQL 二進制日志或其他的方式來把舊庫數(shù)據(jù)直接讀取到新庫達到改名的目的等等。
采用rename關(guān)鍵字,具體命令格式如下:
alter table 舊表名 rename [to | as] 新表名;
rename table 舊表名 to 新表名。
SQL中在做查詢時怎樣給某一個字段重命名
MySQL中,如何使用SQL語句來對表中某一個字段進行重命名呢?我們將使用alter table 這一SQL語句。
重命名字段的語法為:alter table 表名 change 字段名 字段新名稱 字段的類型。
現(xiàn)在我們來嘗試把test表中的.t_name字段重命名為t_name_new字段。
1、首先查看一下當前test表的結(jié)構(gòu)
mysql describe test;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| t_id | int(11) | YES | | NULL | |
| t_name | var20) | YES | | NULL | |
| t_password | 32) | YES | | NULL | |
| t_birth | date | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
2、使用alter table語句來修改字段名稱
mysql alter table test change t_name t_name_new var20);
Query OK, 0 rows affected (0.11 sec)
Records: 0 Duplicates: 0 Warnings: 0
3、查看修改過后的結(jié)果
mysql describe test;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| t_id | int(11) | YES | | NULL | |
| t_name_new | var20) | YES | | NULL | |
| t_password | 32) | YES | | NULL | |
| t_birth | date | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
至此,我們可以順利的修改表中字段名稱了。
關(guān)于MySQL中使用SQL語句對字段進行重命名,本文就介紹這么多,希望對大家有所幫助,謝謝! ;
常見的主要有三種方法:
如果所有表都是MyISAM類型的話,可以直接修改文件夾的名字。
關(guān)閉mysql→把data目錄中的db_name目錄重命名為new_db_name→開啟mysql
新建數(shù)據(jù)庫,在新的數(shù)據(jù)庫里重命名所有舊數(shù)據(jù)庫中的表,再刪除舊的數(shù)據(jù)庫。具體操作命令如下:創(chuàng)建新的數(shù)據(jù)庫→重命名數(shù)據(jù)表名稱→刪除舊的數(shù)據(jù)庫。
CREATE DATABASE new_db_name;
RENAME TABLE db_name.table1 TO new_db_name.table1,db_name.table2 TO new_db_name.table2;
DROP DATABASE db_name;
利用mysqldump命令從舊的數(shù)據(jù)導出數(shù)據(jù),再導入新數(shù)據(jù)庫。具體操作命令如下:導出數(shù)據(jù)→創(chuàng)建新的數(shù)據(jù)庫→導入數(shù)據(jù)→刪除舊的數(shù)據(jù)庫。
mysqldump -u root -p -h ip db_name db_name_dump.SQL
mysql -u root -p -h ip -e “CREATE DATABASE new_db_name”
mysql -u root -p -h ip new_db_name db_name_dump.SQL
mysql -u root -p -h ip -e “DROP DATABASE db_name”