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;