📜  PostgreSQL选择

📅  最后修改于: 2020-11-30 08:39:28             🧑  作者: Mango

PostgreSQL选择

在PostgreSQL中,SELECT命令是用于从数据库表中检索数据的核心命令,并且数据以结果表的形式返回,称为结果集

select命令包含几个子句,我们可以使用这些子句轻松编写查询。执行select命令时的基本任务是从数据库中的表查询数据。

SELECT命令的各个子句如下:

  • 借助ORDER BY子句对行进行排序。
  • 使用GROUP BY子句将行分组
  • 借助WHERE子句过滤行。
  • 借助HAVING子句过滤组。
  • 在DISTINCT运算符的帮助下选择单独的行。
  • UNION,INTERSECT和EXCEPT的帮助下执行设置操作。
  • 使用诸如LEFT JOIN,INNER JOIN,CROSS JOIN,FULL OUTER JOIN条件的联接与其他表联接。

在这里,我们将讨论SELECT和FROM子句以及将在PostgreSQL教程的其他部分中讨论的其他子句。

PostgreSQL Select命令的语法

SELECT命令用于从单个表中恢复数据。

SELECT命令的语法如下:

SELECT select_list
FROM table_name;

以下是以上语法中使用的参数:

Parameters Description
Select_list It is used to define a select list which can be a column or a list of columns in a table from which we want to retrieve the data
Table_name In this, we will define the name of the table from which we want to query data.

注意:如果我们描述列的列表,则可以使用逗号分隔两列。如果不需要从表的所有列中选择数据,则可以使用星号(*)代替描述所有列名,因为选择列表可以具有确切的值或表达式。

SQL语言不区分大小写,这意味着select或SELECT的结果相同。

PostgreSQL select命令的其他语法

SELECT column1, column2,
……
columnN 
FROM table_name;  

在这里,我们使用以下参数:

Parameters Description
column1, column2,….columnN These are used to describe the columns from where we retrieve the data.

如果要从表中检索所有字段,则必须使用以下语法:

SELECT * FROM table_name;  

PostgreSQL中的Select命令示例

在这里,我们将通过以下示例了解PostgreSQL中Select命令的用法。

为了更好地理解,我们将使用我们先前在javatpoint数据库的Company模式中创建的Employee表。

  • 使用SELECT命令从一列查询数据

在此示例中,我们将在SELECT命令的帮助下employee表中查找所有Employee的名称:

Select 
name 
from "Company".employee;

输出量

一旦执行上述查询,我们将得到以下结果:

注意:

  • 为了分隔两个SQL语句,我们将使用分号(;)。
  • 在以上查询中,在select命令的末尾,我们添加了分号(;)。此时,分号不是SQL声明的一部分,因为它用于指示PostgreSQL SQL命令的结尾。
  • 使用SELECT命令从多列查询数据

如果要查看特定表的多个列的数据,可以执行以下查询。

例如,假设我们需要获取员工的姓名,年龄和地址。因此,我们可以在SELECT命令中定义这些列名,如下面的查询所示:

select 
name, 
age, 
address 
from "Company".employee;

输出量

执行完上述命令后,我们将得到以下结果:

  • 使用Select命令查询表所有列中的数据

如果要获取特定表中的所有列数据,则可以执行以下查询。

在这里,我们使用以下查询的帮助,从Company模式下的employee表中选择所有列和行:

SELECT
   *
FROM
"Company".employee;

输出量

执行完上面的查询后,我们将得到以下结果:

在上面的示例中,我们使用(*)星号符号,而不是在select命令中写入所有列名称。有时我们表中有n个列,写所有列名变得很繁琐。

但是有时在SELECT命令中使用星号(*)并不是一个好过程。

如果由于以下原因而在代码中使用嵌入式SQL语句:

  • 我们有一个包含几列的表,并且不必使用带有星号(*)速记的SELECT命令从表的所有列中恢复数据。
  • 除此之外,如果我们检索数据库的不重要数据,它将增加数据库和应用程序层之间的负载。而且我们的应用程序的输出将变得不那么容易访问和刻意。因此,这是在SELECT子句中公开描述列名的最佳方法,因为每次都可能仅从表中获取所需的数据。
  • 将SELECT命令与表达式一起使用

在以下示例中,我们将在select命令的帮助下返回所有员工的全名和地址:

SELECT 
name  AS full_name,
address
FROM 
 "Company".employee;

在上面的查询中,我们将使用列别名AS full_name为名称表达式分配列标题。

输出量

执行完上面的查询后,我们将得到以下结果:

  • 将SELECT命令与表达式一起使用

在这里,我们将使用一个表达式执行select命令,在该表达式中,我们将From子句跳过到select命令中,因为该命令未引用任何表。

SELECT 4* 2 AS result;

输出量

执行上面的命令后,我们将获得以下输出: