SELECT语句就像叠加在数据库表上的过滤器,即选择查询用于定位数据库特定的列和行。下面是SELECT语句的基础语法。
- SELECT [ALL|DISTINCT SELECT_LIST
- FROM {table_name|view_name}
- [WHERE search_condition]
- [GROUP BY group_by_expression]
- [HAVING search_condition]
- [ORDER BY order_by_expression [ASC|DESC]]
复制代码用中括号[]括起来的表示可选的,用大括号{}括起来的表示必须从中选择其中的一个。下面我们对SELECT语句的每个子句进行详细的解析。 1.SELECT子句 (1)SELECT子句:指定由查询返回的列,可以一次返回多个列,用“,”分开即可。可用空格或关键字AS定义列别名。 (2)SELECT子句中,应避免使用通配符 *,尽可能查询符合某条件的数据,以提高查询效率。 (3)关键字DISTINCT的作用为去重,默认为ALL,既显示所有数据。 2.FROM子句 (1)FROM子句:用于指定所要查询的表或视图,用“,”分隔不同的表或视图,空格或关键字AS定义列别名。 (2)FROM子句完整格式:FROM user_name.table.name;(用户名.表名) 3.WHERE子句 (1)WHERE子句:指定被检索表中返回行的搜索条件,若无此子句,则默认所有行都满足条件。 (2)比较运算符:>、<、>=、<=、=、<>、!=、BETWEEN...AND... (3)逻辑运算符:AND、OR、NOT (4)多行运算符:IN(set)、ANY(condition)、ALL(conditon) (4)除了上述运算符,还有IS NULL/IS NOT NULL 条件,LIKE条件(% 通配所有字符,_ 配一个字符) 4.GROUP BY子句 (1)GROUP BY子句:把表中的行划分为组,然后你可以用组函数返回每一组的摘要信息。 (2)GROUP BY子句中可以包含多个列,不能使用列别名,不能使用WHERE来约束分组结果。 (3)组函数:AVG、SUM、MAX、MIN、COUNT、STDDEV(标准差)、VARIANCE(方差)。 5.HAVING子句 (1)HAVING子句:指定组或聚合的筛选条件,通常与GROUP BY子句混合使用。 (2)HAVING筛选器可以使用和WHERE相同的运算符,用于约束GROUP BY创建的分组。 6.ORDER BY子句 (1)ORDER BY子句:指定排序显示返回的行,ASC以升序排序(默认),DESC以降序排序。 (2)除非使用FOR UPDATE子句,ORDER BY子句应该放最后。 (3)ORDER BY子句可以指定一个表达式,一个别名作为排序条件,也可进行多列排序。
|