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