MySQL的增删查改语句用法示例总结 |
本文标签: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 附文档两份: 增加主键 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往一个表添加一个自引用外键约束 。 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系统变量的设置 。 SHOW CREATE TABLE tbl_name; 从这个版本起,mysqldump也将表的正确定义生成到转储文件中,且并不忘记 外键 。 SHOW TABLE STATUS FROM db_name LIKE ‘tbl_name; 外键约束被列在输出的Comment列 。 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操作中忽略外键限制也是非常有用的 。 |