Mysql 增加主键或者修改主键的sql语句操作
添加表字段
altertabletable1addtransactorvarchar(10)notNull; altertabletable1addidintunsignednotNullauto_incrementprimarykey
修改某个表的字段类型及指定为空或非空
altertable表名称change字段名称字段名称字段类型[是否允许非空];
altertable表名称modify字段名称字段类型[是否允许非空];
altertable表名称modify字段名称字段类型[是否允许非空];
修改某个表的字段名称及指定为空或非空
altertable表名称change字段原名称字段新名称字段类型[是否允许非空
删除某一字段
ALTERTABLEmytableDROP字段名;
添加唯一键
ALTERTABLE`test2`ADDUNIQUE(`userid`)
修改主键
ALTERTABLE`test2`DROPPRIMARYKEY,ADDPRIMARYKEY(`id`)
增加索引
ALTERTABLE`test2`ADDINDEX(`id`) ALTERTABLE`category`MODIFYCOLUMN`id`int(11)NOTNULLAUTO_INCREMENTFIRST,ADDPRIMARYKEY(`id`);
修改主键的sql语句块如下
mailbox表新增字段
DROPPROCEDUREIFEXISTSmailbox_column_update; CREATEPROCEDUREmailbox_column_update()BEGIN --新增删除标志列 IFNOTEXISTS(SELECT1FROMinformation_schema.COLUMNSWHERETABLE_SCHEMA='cbs'ANDtable_name='mailbox'ANDCOLUMN_NAME='delete_flag')THEN ALTERTABLEmailboxADDdelete_flagintDEFAULT2NOTNULL; ENDIF; --新增删除日期列 IFNOTEXISTS(SELECT1FROMinformation_schema.COLUMNSWHERETABLE_SCHEMA='cbs'ANDtable_name='mailbox'ANDCOLUMN_NAME='delete_date')THEN ALTERTABLEmailboxADDdelete_dateintDEFAULT0NOTNULL; ENDIF; --如果存在字段account_mail,则修改字段长度 IFEXISTS(SELECT1FROMinformation_schema.COLUMNSWHERETABLE_SCHEMA='cbs'ANDtable_name='mailbox'ANDCOLUMN_NAME='email_account') THEN altertablemailboxmodifycolumnemail_accountvarchar(320); ENDIF; --如果不存在主键列,则设置双主键 IF((SELECTcount(*)FROMinformation_schema.KEY_COLUMN_USAGEWHERETABLE_SCHEMA='cbs'ANDtable_name='mailbox'ANDCONSTRAINT_NAME='PRIMARY'AND(COLUMN_NAME='email_account'ORCOLUMN_NAME='company_id'))=0)THEN ALTERTABLEmailboxADDprimarykey(company_id,email_account); --如果只存在一个主键列 ELSEIF((SELECTcount(*)FROMinformation_schema.KEY_COLUMN_USAGEWHERETABLE_SCHEMA='cbs'ANDtable_name='mailbox'ANDCONSTRAINT_NAME='PRIMARY'AND(COLUMN_NAME='email_account'ORCOLUMN_NAME='company_id'))<2)THEN ALTERTABLEmailboxDROPPRIMARYKEY,ADDprimarykey(company_id,email_account); ENDIF; END; CALLmailbox_column_update(); DROPPROCEDUREIFEXISTSmailbox_column_update;
补充:mysql修改主键自增,新增联合主键
ALTERTABLE`onduty_history` MODIFYCOLUMN`id`int(11)NOTNULLAUTO_INCREMENTFIRST, MODIFYCOLUMN`name`varchar(50)CHARACTERSETutf8COLLATEutf8_general_ciNOTNULLAFTER`id`, MODIFYCOLUMN`onduty_date`datetimeNOTNULLAFTER`name`, ADDUNIQUEKEY(`id`), ADDPRIMARYKEY(`name`,`onduty_date`);
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。