1.插入或替换记录,如果存在则先删除再插入,不存在则直接插入
replace into 表名 values
实例:replace into emp(id,ename,age,job,add_time) values('5','you',34,'waiter',now());//insert语句替换为replace,其它不变
2.插入或更新记录,插入一条记录,如果该记录存在则更新
INSERT INTO ... ON DUPLICATE KEY UPDATE ...
实例:insert into emp(id,ename,age,job,add_time) values(6,'sfd',12,'model',now()) on duplicate key update ename='jj',age=255;
3.插入或忽略,如果我们插入一条记录,如果记录已存在就啥也不干忽略。
insert ignore into 表名 values
实例:insert ignore into emp(id,ename,age,job,add_time) values(7,'fff',12,'model',now()) ;
4.快照
create table tablename select * from tablename
实例:create table emp_tmp select * from emp where id='5';
新表跟旧表 表结构一致,数据根据查询条件来。
5.插入查询结果集
insert into select
实例:insert into emp_tmp(ename,age) select ename,age from emp where ename='you';
6.强制使用索引
数据库查询优化器通常会分析sql语句采用最合适的索引,但这不是绝对的,不一定总能使用最优索引,如果我们很清楚最优索引,那么可以强制使用
select * from 表名 force index(索引名) where
实例:select * from emp force index(index_age) where age=12 order by age desc;