- distinct 去除重复的列
如下:
SELECT DISTINCT depart FROM teacher;
SELECT depart FROM teacher;
between and 和 >= <=
后者在数据较多的情况下效率更高or 和 in
如果in和or所在列有索引或者主键的话,or和in 没啥差别。
执行计划和执行时间几乎一样。 但如果in 和 or 所在列没有索引的话,
性能差别就很大了。 在没有索引的情况下,随着in或者or后面的数据量越多
in的效率不会有太大的下降,但是or 会随着记录越多的话性能下降非常厉害
因此在给in和or的效率下定义的时候应该再加上一个条件,就是所在的列是否
索引或者是否有主键 如果有索引或者主键 性能没有什么区别 反之 in比or的效率
高的多。。。
4.where 和 having的区别
有时我们需要根据结果去得到一点信息 这时where 便无法使用
首先 where 是一个约束声明,使用where来约束数据库的数据,
where是在结果返回之前起作用的,且where 中不能使用聚合函数。
having是一个过滤声明,是在查询返回结果集以后对查询结果进行的
过滤操作,再having中可以使用聚合函数。
union 和 union all的区别
union 和 union的作用大致相同都是为了将两个表拼在一起
但是union会将相同的信息过滤掉,不显示,有时相同的关键信息就被过滤掉了,因此这时就需要用到union all 将两个表的信息全部展示。any 等关键字
any关键字:
假设any内部的查询语句返回的结果个数是三个,
那么,
select…from…where a>any(…)
翻译就如下
select…from…where a >result or a > result2 or a>result3
all 关键字:
all关键字与any关键字类似,只不过上面的or改成and
some关键字:
some关键字和any关键字是一样的功能
-
TIMESTAMPDIFF(日期单位,日期,从什么时候开始) 函数可以计算年龄
SELECT sname ,TIMESTAMPDIFF(YEAR,sbirthday,NOW()) AS age FROM student;