MySQL修改表结构操作命令总结
表的结构如下:
mysql>showcreatetableperson; |person|CREATETABLE`person`( `number`int(11)DEFAULTNULL, `name`varchar(255)DEFAULTNULL, `birthday`dateDEFAULTNULL )ENGINE=MyISAMDEFAULTCHARSET=utf8|
删除列:
ALTERTABLEpersonDROPCOLUMNbirthday;
添加列:
ALTERTABLEpersonADDCOLUMNbirthdaydatetime;
修改列,把number修改为bigint:
ALTERTABLEpersonMODIFYnumberBIGINTNOTNULL;
或者是把number修改为id,类型为bigint:
ALTERTABLEpersonCHANGEnumberidBIGINT;
添加主键:
ALTERTABLEpersonADDPRIMARYKEY(id);
删除主键:
ALTERTABLEpersonDROPPRIMARYKEY;
添加唯一索引:
ALTERTABLEpersonADDUNIQUEname_unique_index(`name`);
为name这一列创建了唯一索引,索引的名字是name_unique_index.
添加普通索引:
ALTERTABLEpersonADDINDEXbirthday_index(`birthday`);
删除索引:
ALTERTABLEpersonDROPINDEXbirthday_index; ALTERTABLEpersonDROPINDEXname_unique_index;
禁用非唯一索引
ALTERTABLEpersonDISABLEKEYS;
ALTERTABLE...DISABLEKEYS让MySQL停止更新MyISAM表中的非唯一索引。
激活非唯一索引
ALTERTABLEpersonENABLEKEYS;
ALTERTABLE...ENABLEKEYS重新创建丢失的索引。
把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:
ALTERTABLEpersonCONVERTTOCHARACTERSETutf8;
修改表某一列的编码
ALTERTABLEpersonCHANGEnamenamevarchar(255)CHARACTERSETutf8;
仅仅改变一个表的默认字符集
ALTERTABLEpersonDEFAULTCHARACTERSETutf8;
修改表名
RENAMETABLEpersonTOperson_other;
移动表到其他数据库
RENAMETABLEcurrent_db.tbl_nameTOother_db.tbl_name;