MySQL的增删查改语句用法示例总结
1.创建列
altertabletablenameaddcolnametypenotnulldefault'0′;
例:
altertablemmanapp_mmanmediaaddappid_idintegernotnulldefault372;
2.删除列
altertabletablenamedropcolumncolname;
例:
altertablemmanapp_mmanmediadropcolumnappid_id;
3.在已经存在的列上创建外键关联
ALTERTABLEyourtablenameADD[CONSTRAINTsymbol]FOREIGNKEY[id](index_col_name,…)REFERENCEStbl_name(index_col_name,…)[ONDELETE{RESTRICT|CASCADE|SETNULL|NOACTION}][ONUPDATE{RESTRICT|CASCADE|SETNULL|NOACTION}]
例:
ALTERTABLEmmanapp_mmanmediaADDCONSTRAINTfk_mdappidFOREIGNKEY(appid_id)
4.删除外键关联:
ALTERTABLEyourtablenameDROPFOREIGNKEYfk_symbol;
例:
ALTERTABLEmmanapp_mmanmediaDROPFOREIGNKEYfk_mdappid
附文档两份:
一.mysql对列和表的相关操作
增加主键
altertabletabelnameaddnew_field_idint(5)unsigneddefault0notnullauto_increment,addprimarykey(new_field_id);
增加一个新列
altertableinfosaddextinyintnotnulldefault'0′;
删除列
altertablet2dropcolumnc;
重命名列/改变列类型
altertablet1changeabinteger; altertablet1changebbbigintnotnull; altertableinfoschangelistlisttinyintnotnulldefault'0′;
重命名表
altertablet1renamet2;
加索引
mysql>altertabletablenamechangedepnodepnoint(5)notnull; mysql>altertabletablenameaddindex索引名(字段名1[,字段名2…]); mysql>altertabletablenameaddindexemp_name(name);
加主关键字的索引
mysql>altertabletablenameaddprimarykey(id);
加唯一限制条件的索引
mysql>altertabletablenameadduniqueemp_name2(cardnumber);
删除某个索引
mysql>altertabletablenamedropindexemp_name;
二.对表增/删约束关系
InnoDB允许你用ALTERTABLE往一个表中添加一个新的外键约束:
ALTERTABLEyourtablename ADD[CONSTRAINTsymbol]FOREIGNKEY[id](index_col_name,…) REFERENCEStbl_name(index_col_name,…) [ONDELETE{RESTRICT|CASCADE|SETNULL|NOACTION}] [ONUPDATE{RESTRICT|CASCADE|SETNULL|NOACTION}]
记住先创建需要的索引。你也可以用ALTERTABLE往一个表添加一个自引用外键约束。
InnoDB也支持使用ALTERTABLE来移除外键:
ALTERTABLEyourtablenameDROPFOREIGNKEYfk_symbol;
当年创建一个外键之时,如果FOREIGNKEY子句包括一个CONSTRAINT名字,你可以引用那个名字来移除外键。另外,当外键被创建之时,fk_symbol值被InnoDB内部保证。当你想要移除一个外键之时,要找出标记,请使用SHOWCREATETABLE语句。例子如下:
mysql>SHOWCREATETABLEibtest11c\G ***************************1.row*************************** Table:ibtest11c CreateTable:CREATETABLEibtest11c( Aint(11)NOTNULLauto_increment, Dint(11)NOTNULLdefault'0′, Bvarchar(200)NOTNULLdefault”, Cvarchar(175)defaultNULL, PRIMARYKEY(A,D,B), KEYB(B,C), KEYC(C), CONSTRAINT0_38775FOREIGNKEY(A,D) REFERENCESibtest11a(A,D) ONDELETECASCADEONUPDATECASCADE, CONSTRAINT0_38776FOREIGNKEY(B,C) REFERENCESibtest11a(B,C) ONDELETECASCADEONUPDATECASCADE )ENGINE=INNODBCHARSET=latin1 1rowinset(0.01sec) mysql>ALTERTABLEibtest11cDROPFOREIGNKEY0_38775;
InnoDB解析程序允许你在FOREIGNKEY…REFERENCES…子句中用`(backticks)把表和列名名字围起来。InnoDB解析程序也考虑到lower_case_table_names系统变量的设置。
InnoDB返回一个表的外键定义作为SHOWCREATETABLE语句输出的一部分:
SHOWCREATETABLEtbl_name;
从这个版本起,mysqldump也将表的正确定义生成到转储文件中,且并不忘记外键。
你可以如下对一个表显示外键约束:
SHOWTABLESTATUSFROMdb_nameLIKE‘tbl_name';
外键约束被列在输出的Comment列。
当执行外键检查之时,InnoDB对它照看着的子或父记录设置共享的行级锁。InnoDB立即检查外键约束,检查不对事务提交延迟。
要使得对有外键关系的表重新载入转储文件变得更容易,mysqldump自动在转储输出中包括一个语句设置FOREIGN_KEY_CHECKS为0。这避免在转储被重新装载之时,与不得不被以特别顺序重新装载的表相关的问题。也可以手动设置这个变量:
mysql>SETFOREIGN_KEY_CHECKS=0; mysql>SOURCEdump_file_name; mysql>SETFOREIGN_KEY_CHECKS=1;
如果转储文件包含对外键是不正确顺序的表,这就以任何顺序导入该表。这样也加快导入操作。设置FOREIGN_KEY_CHECKS为0,对于在LOADDATA和ALTERTABLE操作中忽略外键限制也是非常有用的。
InnoDB不允许你删除一个被FOREIGNKEY表约束引用的表,除非你做设置SETFOREIGN_KEY_CHECKS=0。当你移除一个表的时候,在它的创建语句里定义的约束也被移除。
如果你重新创建一个被移除的表,它必须有一个遵从于也引用它的外键约束的定义。它必须有正确的列名和类型,并且如前所述,它必须对被引用的键有索引。如果这些不被满足,MySQL返回错误号1005并在错误信息字符串中指向errno150。