1、MySQL中delete、truncate、drop之间的区别?
delete:DML语句、可回滚、可以是删除某一行或者是多行
truncate:DDL语句、不可回滚、清空表中的数据
drop:DDL语句、不可回滚、删除表、索引、权限等等都会删除。
执行效率上:drop > truncate >> delete
2、SQL的执行顺序?
from .... left join ..... on ... where ...group by.... having..... selete ..... order by...limit....
3、MySQL整体的执行流程
4、where和having的区别?
执行顺序:from...where....group by(聚合函数 sum/avg/max/min/count)...haviing
- where是分组之前过滤,having是分组之后过滤
- where不可以跟聚合函数,having后可以跟聚合函数
- having后跟的字段必须有在select语句后面出现的字段
1)where 和 having 均可使用
select name from user where age >13; 会先判断条件再查询
select name from user having age>13; 先查询所有再分
2)只能用where 不能用having
select name from user where name = "zhangsan" ; 正确
select name from user having age >18; 错误,筛选后只有name字段,没有age
3)只能用having,不能用where
select AVG(age) as avg from user where avg >18; 正确的
select AVG(age) as avg from user having avg >18; 错误的
注意:where后面跟的是数据库里的字段,不能跟聚合函数,因为它在聚合函数之前就执行了!