PostgreSQL中的几种SQL从句

版权声明:本文为博主原创之文章,未经博主允许谢绝转载。 https://blog.csdn.net/pg_hgdb/article/details/84106971

本文主要介绍了适用于PostgreSQL中的SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY和LIMIT从句的一些需要注意的事项。

SELECT

SELECT是使用最频繁的,超过所有其他从句。其他的一些从句可能我们几乎不会用到,但是SELECT的情况不同,因为它是一个强制性的从句。

SELECT最重要的部分是:

1)SELECT * 返回数据源中的所有列。

2)虽然SELECT在语法上被命名为第一个从句(除了那些使用WITH子句的查询),但它不是最先执行的。 值得注意的是,SELECT也不是最后执行的从句。

3)可以在SELECT从句中为表达式(或任何列)指定引用名称或ALIAS。但需要注意的是,这些给定的名称可以在ORDER BY和GROUP BY从句中使用,但不能在WHERE或HAVING从句中使用。

4)当查询中存在GROUP BY从句(或聚合函数)时,SELECT不应该命名任何未分组的列。而只能是任何聚合函数中的那些列或功能上依赖于分组列的那些列。

5)SELECT不仅返回特定的列,而且它的使用也扩展到INSERT和CREATE TABLE语句。

更多与SELECT相关的详细信息,请参阅PostgreSQL的官方手册。

FROM

扫描二维码关注公众号,回复: 4201314 查看本文章

FROM在大多数情况下是强制性从句。如果需要从简单表达式返回的实际存储的数据,将需要FROM从句。如果没有FROM从句,就没有数据来执行相关操作。因此,查询任何表都是绝对需要FROM从句的。

FROM最重要的部分是::

1)虽然FROM在语法上被列为SELECT查询中的第二个子句,但它却是第一个执行的。

2)FROM提供(通过加载)其子句中命名的任何表中的所有行。

3)可以在FROM子句中给表名起一个别名,但需要在整个查询过程中由该ALIAS引用。

4)FROM是查询表时必需的从句。

更多与FROM相关的详细信息,请参阅PostgreSQL的官方手册。

WHERE 

WHERE是一个可选的从句。除了SELECT之外,WHERE从句还可以与其他SQL命令一起使用。如果没有WHERE从句,UPDATE和DELETE语句可能会影响所有目标行,这可能不是我们想要的。

聚合函数不能在WHERE从句的布尔条件表达式中使用。

WHERE从句无法访问SELECT从句中列出的列名的别名。

WHERE最重要的部分是::

1)聚合函数不可访问,不能在WHERE从句的布尔条件检查中使用。 

2)SELECT从句中的别名列不能在WHERE从句中引用。

3)WHERE从句布尔表达式条件检查可以有如下结果:true,false或NULL。

4)将删除WHERE从句布尔表达式的值为false或NULL的任何行。

5)可以通过利用AND或OR关键字在WHERE从句中检查多个布尔条件。

更多与WHERE相关的详细信息,请参阅PostgreSQL的官方手册。

GROUP BY

这是一个可选从句。此从句为所选的那些创建单行,其中包含指定分组列值的匹配项。

GROUP BY最重要的部分是:

1)Postgres不仅可以对源表中的列进行分组,还可以对SELECT列列表中列出的列进行分组。

2)在特定的查询中,GROUP BY可以通过删除SELECT从句列的重复值来模仿DISTINCT从句的行为。

3)列顺序与GROUP BY无关。

4)除聚合外,不能引用那些不是GROUP BY从句目标的列。

5)在许多情况下,可以在PRIMARY KEY上对该键的功能相关列进行分组。

6)在没有GROUP BY从句的情况下,仍然对使用聚合函数的查询执行分组。

更多与GROUP BY相关的详细信息,请参阅PostgreSQL的官方手册。

HAVING 

这是一个可选从句。HAVING使用布尔条件检查过滤结果集中的行,就像WHERE从句一样,而且它还会过滤由GROUP BY从句和/或聚合函数形成的行。

HAVING最重要的部分是:

1)除了任何GROUP BY列之外,HAVING从句还可以引用聚合函数中命名的列(甚至是那些未分组的列)。

2)HAVING负责在应用聚合函数或分组后移除行。

3)可以在HAVING从句中引用非聚合列。

4)尽管HAVING从句经常与GROUP BY从句一起使用,但也可以单独使用它。查询结果仅在聚合函数中形成这些列的单个组。

更多与HAVING相关的详细信息,请参阅PostgreSQL的官方手册。

ORDER BY

这是一个可选从句。当需要特定排序时使用ORDER BY。否则,数据库将以任意顺序返回结果。有两种可用的排序模式,ASC(升序)或DESC(降序)顺序,ASC是默认值。如果结果集包含NULL值,那么这些也可以在排序中使用。

ORDER BY最重要的部分是:

1)排序表达式是查询的SELECT列表中允许的任何表达式。

2)PostgreSQL允许使用SELECT从句中不存在的ORDER BY列。

3)除非使用ORDER BY从句,否则查询结果是以任意顺序返回的。

4)ORDER BY和LIMIT从句非常适合用于确定“Top”行结果集。

5)可以按SELECT列表中的列位置编号对结果进行排序,但指定的数字不得大于SELECT从句列表中的项目数。也就是说,如果SELECT从句只有3个项目,则ORDER BY 4将产生错误。

6)每个单独的表达式仅按其列出的选项排序。例如,ORDER BY col1 ASC,col2 ASC与ORDER BY col1,col2 ASC是不同的。

更多与ORDER BY相关的详细信息,请参阅PostgreSQL的官方手册。

LIMIT 

LIMIT是一个可选从句。LIMIT实际上由2个子从句组成,OFFSET是其中的第二个子从句。

LIMIT最重要的部分是:

1)如果查询本身在结果集中产生较少的行,则LIMIT可能返回的行数少于定义的数量。换句话说,它对返回的行数没有影响。

2)LIMIT ALL语法是可接受的,并且具有与完全不包括LIMIT从句相同的效果。

3)虽然使用OFFSET从句可以跳过多行,但这不是任何性能优化的解决方案。

4)OFFSET 0相当于不使用OFFSET从句。

更多与ORDER BY相关的详细信息,请参阅PostgreSQL的官方手册。

By Kalath

猜你喜欢

转载自blog.csdn.net/pg_hgdb/article/details/84106971
今日推荐