(总结)mysql中对已存在的表做增/删/改列的相关操

1.创建列     alter table tablename add colname type not null default '0';     例:     alter table mmanapp_mmanmedia add appid_id integer not null default 372; 2.删除列     alter table tablename drop column colname;     例:     alter table mmanapp_mmanmedia drop column appid_id; 3.在已经存在的列上创建外键关联     ALTER TABLE yourtablename    ADD [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)    REFERENCES tbl_name (index_col_name, ...)    [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]    [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]     例:     ALTER TABLE mmanapp_mmanmedia ADD CONSTRAINT fk_mdappid FOREIGN KEY(appid_id) 4.删除外键关联:     ALTER TABLE yourtablename DROP FOREIGN KEY fk_symbol;     例:     ALTER TABLE mmanapp_mmanmedia DROP FOREIGN KEY fk_mdappid 附文档两份: 一.mysql对列和表的相关操作 增加主键 alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add primary key (new_field_id); 增加一个新列 alter table infos add ex tinyint not null default '0'; 删除列 alter table t2 drop column c; 重命名列/改变列类型 alter table t1 change a b integer; alter table t1 change b b bigint not null; alter table infos change list list tinyint not null default '0'; 重命名表 alter table t1 rename t2; 加索引 mysql> alter table tablename change depno depno int(5) not null; mysql> alter table tablename add index 索引名 (字段名1[,字段名2 …]); mysql> alter table tablename add index emp_name (name); 加主关键字的索引 mysql> alter table tablename add primary key(id); 加唯一限制条件的索引 mysql> alter table tablename add unique emp_name2(cardnumber); 删除某个索引 mysql>alter table tablename drop index emp_name; 二.对表增/删约束关系 InnoDB允许你用ALTER TABLE往一个表中添加一个新的 外键约束: ALTER TABLE yourtablename     ADD [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)     REFERENCES tbl_name (index_col_name, ...)     [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]     [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}] 记住先创建需要的索引。你也可以用ALTER TABLE往一个表添加一个自引用外键约束。 InnoDB也支持使用ALTER TABLE来移除 外键: ALTER TABLE yourtablename DROP FOREIGN KEY fk_symbol; 当年创建一个外键之时,如果FOREIGN KEY子句包括一个CONSTRAINT名字,你可以引用那个名字来移除 外键。另外,当外键被创建之时,fk_symbol值被InnoDB内部保证。当你想要移除一个外键之时,要找出标记,请使用SHOW CREATE TABLE语句。例子如下: mysql> SHOW CREATE TABLE ibtest11c\G *************************** 1. row ***************************        Table: ibtest11c Create Table: CREATE TABLE `ibtest11c` (   `A` int(11) NOT NULL auto_increment,   `D` int(11) NOT NULL default '0',   `B` varchar(200) NOT NULL default '',   `C` varchar(175) default NULL,   PRIMARY KEY  (`A`,`D`,`B`),   KEY `B` (`B`,`C`),   KEY `C` (`C`),   CONSTRAINT `0_38775` FOREIGN KEY (`A`, `D`) REFERENCES `ibtest11a` (`A`, `D`) ON DELETE CASCADE ON UPDATE CASCADE,   CONSTRAINT `0_38776` FOREIGN KEY (`B`, `C`) REFERENCES `ibtest11a` (`B`, `C`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=INNODB CHARSET=latin1 1 row in set (0.01 sec)   mysql> ALTER TABLE ibtest11c DROP FOREIGN KEY 0_38775; InnoDB解析程序允许你在FOREIGN KEY ... REFERENCES ...子句中用`(backticks)把表和列名名字围起来。InnoDB解析程序也考虑到lower_case_table_names系统变量的设置。 InnoDB返回一个表的外键定义作为SHOW CREATE TABLE语句输出的一部分: SHOW CREATE TABLE tbl_name; 从这个版本起,mysqldump也将表的正确定义生成到转储文件中,且并不忘记 外键。 你可以如下对一个表显示外键约束: SHOW TABLE STATUS FROM db_name LIKE 'tbl_name'; 外键约束被列在输出的Comment列。 当执行外键检查之时,InnoDB对它照看着的子或父记录设置共享的行级锁。InnoDB立即检查外键约束,检查不对事务提交延迟。 要使得对有外键关系的表重新载入转储文件变得更容易,mysqldump自动在转储输出中包括一个语句设置FOREIGN_KEY_CHECKS为0。这避免在转储被重新装载之时,与不得不被以特别顺序重新装载的表相关的问题。也可以手动设置这个变量: mysql> SET FOREIGN_KEY_CHECKS = 0; mysql> SOURCE dump_file_name; mysql> SET FOREIGN_KEY_CHECKS = 1; 如果转储文件包含对外键是不正确顺序的表,这就以任何顺序导入该表。这样也加快导入操作。设置FOREIGN_KEY_CHECKS为0,对于在LOAD DATA和ALTER TABLE操作中忽略外键限制也是非常有用的。 InnoDB不允许你删除一个被FOREIGN KEY表约束 引用的表,除非你做设置SET FOREIGN_KEY_CHECKS=0。当你移除一个表的时候,在它的创建语句里定义的约束也被移除。 如果你重新创建一个被移除的表,它必须有一个遵从于也引用它的外键约束的定义。它必须有正确的列名和类型,并且如前所述,它必须对被 引用的键有索引。如果这些不被满足,MySQL返回错误号1005 并在错误信息字符串中指向errno 150。

一转眼2014年就要过去了,今年发生了很多事,年初时我告诉自己“无论如何2014年要安安稳稳的度过”这一年也顺利、平稳的度过了,回看起2013年给自己订的2014计划才觉得,每一年的计划一定要像年度预算一样,宁可多写些也不要让自己回顾起来无所查证。一、生活 2014年已经慢慢开始熟悉和融入了北京的

之前有朋友在博客里希望我能列出自己使用的所有Vim插件,一直没有时间,趁周末的最后的几个小时,就给大家列一下,大家可以实行拿来主义,取自己需要的,呵呵~OK,一个个来说吧~~plugin: 编程相关: 公共: taglist 相信无人不知其大名,用来提供单个源代码文件的函数列表之类的功能。最近在使用一

最近看《python核心编程》,书中实现了一个简单的1对1的TCPserver,但是在实际使用中1对1的形势明显是不行的,所以研究了一下如何在server端通过启动不同的线程(进程)来实现每个链接一个线程。 其实python在类的设计上已经考虑到了这一方面的需求,我们只要在自己的server上继承一下SocketServer.BaseRequest

昨晚在CSDN无意中看到这个html:first-child*+body {...}测试页面,解读一下:html:first-child就是html 自己html:first-child* 就是html下子一级的所有,可以是headhtml:first-child*+body 就是可以head后面的body这个选择符FF2不认,IE7也不认,Opera跟Safari可以,一开始还以为FF下的html跟body里还有层什么,FF的html下有别的东西很久前的事

今天在翻unix网络编程的时候,无意中看到了使用匿名定义结构体/类定义数组的一段代码。 于是写了测试代码如下: #include #include #include #include using namespace std;struct st{ int a; int b; char *p; int c;}sts[]={ {1,1,"hh",1}, {2,2,"ff",2}};class CObj{ public: int a; string s; int b;}objs[]={ {1,"x",11}, {2,"y",22}};int main(int argc, const char *argv[]

一. 发现问题最近新版本上线,公司内部的几台iphone测试机测试都一切正常,但是外网用户却频频反馈崩溃。在友盟上看了错误率统计,曲线如下:可以看出,错误率确实有了很大的上浮。基本可以确认一定是出问题了。二. 还原崩溃现场我们游戏用得cocos2dx-lua,既然是崩溃,那就一定是到了c++端了,我们点

我的朋友圈中卖各种东西的都有,其实从我的角度来讲是不排斥朋友圈卖货的,第一要保证货源可靠,第二要保证正品,因为大家在各行各业接触的人是不同的,如果大家能把这些人利用起来,哪怕自己是倒爷,只要不是太过分,我觉得都是各取所需,这样的人我都会留着,比如我也经常帮我姐在朋友圈卖

最近博友在本博问了很多Vim相关的问题,我已经渐渐感觉到仅凭我一个人即使对vim再怎么精通都是无法回答这所有的问题的,所以在这里把问题列出来,希望知道的朋友能够帮忙解答。对于这种博友互助,我也在考虑有没有更好的方式,如果大家有什么好的建议或意见都可以跟我提出来,我们一起想更好的

(1)输出格式控制综述:    printf的格式控制的完整格式:%  -  0  m.n  l或h    ①%:格式说明的起始符号,不可缺少。    ②-: 有-表示左对齐输出,如省略表示右对齐输出。    ③0:有0表示指定空位填0,如省略表示指定空位不填。    ④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。

python逐渐成为笔者最常用的语言之一,因此vim对python有些配置的不合理也渐渐显现出来,这次我们先来解决python的缩进问题。我们来通过例子来说明,来看一下默认配置下python的缩进情况:1.dict的语法缩进val1 = { 1:"1", 2:"2" }2.list的语法缩进val2 = [ 1, 2, 3 ]3.tuple的语法缩进val3 = ( 1, 2, 3 )4.函数多行参数的缩进de

你会喜欢下面的文章? You'll like the following article.