相关子查询的效率最低,尽量用表连接的方式替代!

数据添加:
  insert语法:

  insert into 表名(字段1,字段2,....)

  value(值1,值2,....),(值1,值2,.....); 

  insert语句方言:
    只能用在SQL查询语句中:

 insert into 表名 set 字段1=值1,字段2=值2,.....;

  insert子查询:

    insert语句里面也可以写select子句

  ignore关键字:
    ignore关键字会让insert只插入数据库不存在的记录

insert ignore into 表名 .....;

数据修改:
  update语法:

update [ignore] 表名
set 字段1=值1,字段2=值2,....
[where 条件1....]
[order by....]
[limit ....];#这里的limit只能有一个参数,也就是说只能修改从第一行开始的语句

  update表连接:
    因为相关子查询效率非常低,所以我们可以利用表连接的方式来改造update语句,可以修改多张表的记录

update 表1 join 表2 on 条件
set 字段1=值1,字段2=值2,....;
或:
update 表1,表2
set 字段1=值1,字段2=值2,...
where 连接条件;

    把Allen调往research部门,职务调整为analyst:

update t_emp e JOIN t_dept d
set e.deptno=d.deptno,e.job="ANALYST"
where e.ename="ALLEN" and d.dname="RESEARCH";

    把底薪低于公司平均底薪的员工,底薪增加150:

UPDATE t_emp e JOIN (SELECT AVG(sal) as avg from t_emp) t
ON e.sal<t.avg
set e.sal=e.sal+150;

  update表外链接:  

update 表1 [left|right] join 表2 on 条件
set 字段1=值1,字段2=值2,....;

数据删除:
  delete语法:

delete [ignore] from 表名
[where 条件1,条件2,...]
[order by ...]
[limit ...];

truncate语句:用来清空对应的表格 例:truncate table XXX;

  delete表连接:

delete 表1,... from 表1 join 表2 on 条件
[where 条件1,条件2,...]
[order by ...]
[limit ...];
Posted on 2020-06-27 12:25  Schrodinger'sdoris  阅读(153)  评论(0编辑  收藏  举报