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子句中,这时子查询生成的临时派生表成为主查询的查询对象。