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。
下一篇: 几个缩减MySQL以节省磁盘空间的建议