4.4
創(chuàng)新互聯(lián)于2013年開(kāi)始,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元宿州做網(wǎng)站,已為上家服務(wù),為宿州各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
MySQL數(shù)據(jù)表的修改
在MySQL中,允許對(duì)創(chuàng)建好的數(shù)據(jù)表進(jìn)行修改,修改時(shí)可以有以下幾種形式:修改表名、修改字段名、修改字段類(lèi)型、修改字段排列位置、添加字段、刪除字段、添加字段約束、刪除約束等,它們一般都是使用“Alter table表名”命令,但后跟的具體參數(shù)不同,下面分別介紹其語(yǔ)句格式。
4.4.1修改表名
語(yǔ)句格式一:Alter table表名RENAME [TO] 新表名;
語(yǔ)句格式二:RENAME TABLE 表名 TO 新表名;
在上面語(yǔ)句格式中,“表名”為要更名的表,“新表名”為要更改成的表名,格式一中參數(shù)“TO”可以省略。
下面截圖中的“ALTER TABLE”語(yǔ)句將dept更名為t_dept。
1、修改表引擎方法\x0d\x0a alter table table_name engine=innodb;\x0d\x0a2、查看系統(tǒng)支持的存儲(chǔ)引擎\x0d\x0a show engines;\x0d\x0a3、查看表使用的存儲(chǔ)引擎\x0d\x0a 兩種方法:\x0d\x0a a、show table status from db_name where name='table_name';\x0d\x0a b、show create table table_name;\x0d\x0a 如果顯示的格式不好看,可以用\g代替行尾分號(hào) \x0d\x0a 有人說(shuō)用第二種方法不準(zhǔn)確\x0d\x0a 我試了下,關(guān)閉掉原先默認(rèn)的Innodb引擎后根本無(wú)法執(zhí)行show create table table_name指令,因?yàn)橹敖ǖ氖荌nnodb表,關(guān)掉后默認(rèn)用MyISAM引擎,導(dǎo)致Innodb表數(shù)據(jù)無(wú)法被正確讀取。\x0d\x0a4 關(guān)閉Innodb引擎方法\x0d\x0a 關(guān)閉mysql服務(wù): net stop mysql\x0d\x0a 找到mysql安裝目錄下的my.ini文件:\x0d\x0a 找到default-storage-engine=INNODB 改為default-storage-engine=MYISAM\x0d\x0a 找到#skip-innodb 改為skip-innodb\x0d\x0a 啟動(dòng)mysql服務(wù):net start mysql
1. 修改表的名字
alter table table_name rename table_new_name;
其中,table_name是舊表名,table_new_name是新表名。
2.修改字段的數(shù)據(jù)類(lèi)型
語(yǔ)法: alter table 表名 modify 字段名 數(shù)據(jù)類(lèi)型
3.修改字段名
語(yǔ)法: alter table 表名 change 舊字段名 新字段名 新數(shù)據(jù)類(lèi)型
Online DDL 工具:pt-osc
對(duì)于 MySQL Online DDL 目前主流的有三種工具:
原生 Online DDL;
pt-osc(online-schema-change),
gh-ost
本文主要講解 pt-online-schema-change 的使用以及三種工具的簡(jiǎn)單對(duì)比。
一、原理及限制
1.1 原理
1.?創(chuàng)建一個(gè)與原表結(jié)構(gòu)相同的空表,表名是?_new?后綴;
2. 修改步驟 1 創(chuàng)建的空表的表結(jié)構(gòu);
3. 在原表上加三個(gè)觸發(fā)器:delete/update/insert,用于 copy 數(shù)據(jù)過(guò)程中,將原表中要執(zhí)行的語(yǔ)句在新表中執(zhí)行;
4. 將原表數(shù)據(jù)以數(shù)據(jù)塊(chunk)的形式 copy 到新表;
5. rename 原表為 old 表,并把新表 rename 為原表名,然后刪除舊表;
6. 刪除觸發(fā)器。
4.4.3修改字段類(lèi)型
語(yǔ)句格式:ALTER TABLE 表名 MODIFY 字段名?數(shù)據(jù)類(lèi)型;
在上面語(yǔ)句格式中,“表名”指定要修改的是哪個(gè)表,“MODIFY”表示要修改表中字段數(shù)據(jù)類(lèi)型,“字段名”指定要修改表中哪個(gè)字段(的數(shù)據(jù)類(lèi)型),“數(shù)據(jù)類(lèi)型”指定表中字段要修改成的新數(shù)據(jù)類(lèi)型。
下面截圖中的“ALTER TABLE”語(yǔ)句將t_dept表中deptno字段數(shù)據(jù)類(lèi)型由原來(lái)的 int(10)修改為varchar(20)。