SELECT [ALL     |   DISTINCT    ] <目标列表达式> FROM  <表名后视图名>或<子查询>


WHERE <条件表达式> GROUP BY <列名1> [HAVING<条件表达式>]


ORDER BY <列名> [ASC|DESC]。



上面的查询语句的意思:


①根据WHERE子句的条件表达式从FROM子句指定的基本表、视图或派生表中找出满足条件的元组,


②再按SELECT子句的目标列表达式选出元组中的属性值形成的结果表。


③如果有GROUP BY子句,则按相应的列名1分组,列名1相同分为一组,通常在每组中作用聚集函数(聚集函数类似于AVG()求平均数等函数)。


④如果GROPU BY子句带有HAVING短语,则只有满足条件的组才能被输出。 


⑤如果有ORDER BY子句,则还需要按ORDER BY子句后的列名进行排序(升序或者降序。)





①select 子句中的目标列表达式不仅可以是属性列,还可以是目标表达式,还可以是字符串常量和函数。


②其中的DISTINCT是用来消除重复行的。


下面给出常用的查询条件:(查询条件一般是位于where子句中)。


比较:=,>,<等。


确定范围:BETWEEN AND ,NOT BETWEEN AND


确定集合:IN,NOT IN


字符匹配:LIKE,NOT LIKE。


空值:IS NULL ,IS NOT NULL。


多重条件(逻辑运算):AND ,OR,NOT




聚集函数:


① COUNT(*)         统计元组个数。


②SUM(DISTINCT  |  ALL  列名) 统计一列中值的个数。


③AVG   (DISTINCT  |  ALL  列名 )统计一列中值的平均数。


④MAX    (DISTINCT  |  ALL  列名 ) 求一列中的最大值。


⑤MIN (DISTINCT  |  ALL  列名 ) 求一列中的最小值。


!!!!!注意!!!!!!!!!!!!!


WHERE子句中是不能用聚集函数作为条件表达式。


聚集函数只能用于SELECT子句和GROUP BY中的HAVING子句。




GROUP BY 子句


GROUP BY子句将查询结果按某一列或多列的值分组,值相等的为一组。


如果我们分组后还要求其需要满足一定的条件才行。则可以使用HAVING短语指定筛选条件。




WHERE 子句和HAVING子短语的区别在于作用对象不同。


WHERE子句的作用对象:其作用于基本表或视图,从中选择满足条件的元组。


HAVING短语作用于组,从中选择满足条件的组。






在连接查询中,WHERE子句中用来连接两个表的条件称为连接条件或连接谓词。






嵌套查询:


一个SELET-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询。






集合查询


SELECT语句的查询结果是元组的集合,所以多个SELECT 语句的结果可进行集合操作,集合操作主要包括并操作UNION、交操作INTERSECT和差操作EXCEPT。


注意:参加集合操作的各查询结果的列数必须相同,对应项的数据类型也必须相同。




基于派生表的查询


子查询不仅可以出现在WHERE子句中,还可以出现在FROM子句中,这时子查询生成的临时派生表成为主查询的查询对象。