数据库自学笔记(2)--- HAVING和WHERE, ANY 和 ALL,IN和EXIST。

1.HAVING和WHERE:

WHERE 和 HAVING 的做用对象不同。WHERE做用于基本表或视图,挑出知足条件的元组。HAVING做用于组(group),通常配合GROUP BY 使用。html

 

2.ANY 和 ALL:

all 是将后面的内容当作一个总体,spa

如: >all (select age from student where sex = 'girl')上面一句语句表示比全部女生年纪大(比年纪最大的女生的年纪还要大)至关于内容的 and 语句。orm

若是是any,它表示其中任意一个条件均可以 >any (select age from student where sex = 'girl')htm

这一句表示的意思是,只要比任意一个女生年纪大就能够了(比年纪最小的女生的年纪大)至关于内容中添加了or 语句。对象

其余还有不少种应用,好比<>ANY 表明 不等于查询结果中的某个值。blog

 

3.IN和EXIST:

EXIST:存在,后面通常都是子查询,当子查询返回行数时,exists返回true。若是内层查询结果为null的话,返回false.ci

select * from class where exists (select'x"form stu where stu.cid=class.cid)get

当in和exists在查询效率上比较时,in查询的效率快于exists的查询效率 。form

exists(xxxxx)后面的子查询被称作相关子查询, 他是不返回列表的值的.class

 

IN:包含 ,查询和全部女生年龄相同的男生 select * from stu where sex='男' and age in(select age from stu where sex='女')

in()后面的子查询 是返回结果集的,换句话说执行次序和exists()不同.

子查询先产生结果集, 而后主查询再去结果集里去找符合要求的字段列表去.符合要求的输出,反之则不输出.

 

 

参考:http://www.javashuo.com/article/p-ffxvcutn-dc.html

相关文章
相关标签/搜索