2015-04-03

mysql 替换字段,替换表名,快速删除数据 以及相关技巧

1.mysql_交换指定两条记录的某个字段的值
方法一:

mysql语句如下:
update question set sort=(case when id=7 then (select a.sort from (select tmp.* from question tmp) a
where a.id=8) when id=8  then (select a.sort from (select tmp.* from question tmp) a where a.id=7) end)
where id=7 or id=8; 

方法二:

update question as q1 join question as q2 on (q1.id=7 and q2.id = 8)
or(q1.id = 8 and q2.id=7)
set q1.sort = q2.sort,q2.sort=q1.sort;

2.重命名rename table {$v} to {$v}_old,{$v}_new to {$v}

3.删除大数据表数据:

(1).建一张临时表。将不需要删除的数据插入进来。
INSERT INTO t_copy SELECT * FROM t WHERE ... ;
(2).重命名表。(处理的表 t 改为t_old  临时表改为 t)
RENAME TABLE t TO t_old, t_copy TO t;
(3).删除表。
DROP TABLE t_old;

4.查询当前数据库的数据表

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES where  table_schema='{$this->db}'

5.导入数据的时候,

可以先关闭索引。ALTER TABLE `".$table."` DISABLE KEYS  

等执行完毕后再开启索引。ALTER TABLE ".$v['TABLE_NAME']." ENABLE KEYS

6.获取数据表执行语句

"SHOW CREATE TABLE ".$this->db.'.'.$table