SQL SELECT 语句

2025年1月10日 | 阅读 8 分钟

在 SQL 中,SELECT 语句用于从数据库的表中查询或检索数据。返回的数据存储在表中,结果表称为结果集。此语句是一个非常强大的工具,其语法由于可以组合表、列、函数和运算符的多种方式而复杂,可形成合法的语句。

语法

在上述语法中,<select_list> 是 <table_list> 中列出的表中的列和表达式的集合。<table_list> 是从中检索行的表的列表。<condition> 是用于限制获取的行的有效 Oracle SQL 条件,而 <column1> ,<column2>, …… <columnN> 是 <table_list> 中包含的列。方括号中的组件是可选的。

<strong>GROUP BY 子句</strong> 用于基于指定列中存在的唯一值对行进行分组。HAVING 子句与 GROUP BY 子句结合使用,用于进一步限制检索到的行。ORDER BY 子句也是可选的,用于对查询返回的行进行排序。

以下是如何在表中 Ya 一个 SELECT 语句的示例。

SELECT 语句用于检索表中的所有列:要检索表中的所有列,我们在 SELECT 语句中使用星号 (*) 通配符。当我们不知道列名或不想键入所有列名时,最常用它。

例如:使用以下语法选择表中所有可用的字段

让我们以一个 Employee 表为例,使用 select 语句获取记录。

EMPLOYEE 关系

EMP_IDEMP_NAMECITYPHONE_NO工资Comm
1克里希纳河昌迪加尔773728737815000500
2Rusin阿格拉986273827120000200
3Angel德里913267382216000100
4RobinKapurthala9467238263300001000
5Chris勒克瑙785384738222000750
6威廉勒克瑙985384738222000750

输出

EMP_IDEMP_NAMECITYPHONE_NO工资Comm
1克里希纳河昌迪加尔773728737815000500
2Rusin阿格拉986273827120000200
3Angel德里913267382216000100
4RobinKapurthala9467238263300001000
5Chris勒克瑙785384738222000750
6威廉勒克瑙985384738222000750

SELECT 语句用于检索表中的选定列:如果我们想从给定表中检索选定的列,则在 select 语句中指定 <table_list> 中的列名。在 select 语句中指定列名的顺序不一定与其在表中出现的顺序相同。

例如:使用以下语法选择表中可用的选定字段

示例 1:让我们以一个 Employee 表为例,获取所有员工的 EMP_ID 记录。

输出

EMP_ID
1
2
3
4
5
6

示例 2:要获取 EMP_NAME 和 SALARY,请使用以下查询

EMP_NAME工资
克里希纳河15000
Rusin20000
Angel16000
Robin30000
Chris22000
威廉22000

SELECT 语句用于从表中检索 DISTINCT 行:每当我们使用 SELECt 语句检索列时,可能会产生重复的行。要仅返回所选重复行集的一个副本,我们在 SELECT 语句中 along with DISTINCT 或 UNIQUE 关键字。

例如:使用以下语法从表中选择 DISTINCT 行。

示例 1:让我们以一个 Employee 表为例,从表中获取记录。

输出

CITY工资
昌迪加尔15000
阿格拉20000
德里16000
Kapurthala30000
勒克瑙22000

SELECT 语句用于使用 WHERE 子句在表中限制行:如果表包含许多行,通常不想检索表中的所有行。SQL 提供了一个 WHERE 子句,您可以在其中指定限制行的条件。WHERE 子句由一个或多个条件组成,这些条件必须在行被查询检索之前得到满足。在这些条件中,可以使用各种运算符来比较值。

例如:使用以下语法从表中选择限制行

示例 1:让我们以以下示例检索 emp_id 为 1 的员工信息。

输出

EMP_IDEMP_NAMECITYPHONE_NO工资COMM
1克里希纳河昌迪加尔773728737815000500

这表明您可以在 WHERE 子句中指定列,即使它们未从表中选择。

如果您想指定多个条件,则可以通过使用逻辑运算符 AND 和 OR 来实现。

示例 2:让我们以以下示例检索 EMPLOYEE 表中的 EMP_ID EMP_NAME、CITY、SALARY,其中 SALARY 大于 15000 且 CITY 等于“Lucknow”。

输出

EMP_IDEMP_NAMECITY工资
5Chris勒克瑙22000
6威廉勒克瑙22000

解释:执行上述查询后,它包含满足“WHERE”子句中两个条件的行。

示例 3:让我们以以下示例检索 EMPLOYEE 表中的 EMP_ID、CITY、SALARY,其中 SALARY 大于 15000 或 CITY 等于“Lucknow”。

输出

EMP_IDEMP_NAMECITY工资
2Rusin阿格拉20000
3Angel德里16000
4RobinKapurthala30000
5Chris勒克瑙22000
6威廉勒克瑙22000

解释:执行上述查询后,它包含满足“WHERE”子句中任一条件的 EMPLOYEE 关系行。

使用 SELECT 语句时,必须考虑以下几点。

  • 字符字符串区分大小写。因此,EMP_NAME 的值以大写字母指定,以便与表中的值匹配。
  • 字符和日期值用单引号括起来。
  • 日期值对格式敏感。默认格式为 DD-MON-YY。
  • 数字、常量不应括在引号中。

在 SELECT 语句中使用表达式:<select_list> 可以由多个列组成。除了多个列之外,您还可以在 <select_list> 中指定表达式,其中可能包含常量、函数等。

示例 1:让我们以以下示例检索 employee 表中的员工姓名、总工资(SAL+COMM)信息。

输出

EMP_IDEMP_NAMECITYSAL+COMM
1克里希纳河昌迪加尔15500
2Rusin阿格拉20200
3Angel德里16100
4RobinKapurthala31000
5Chris勒克瑙22750
6威廉勒克瑙22750

解释:执行上述查询后,SQL 将 <select_list> 中的每个元素视为一个单独的列,即使该表达式引用了多个列。

例如:“SAL+COMM”将被视为一列。引用带别名的列:当您在 <select_list> 中指定复杂表达式时,可以通过为其分配别名来记录该表达式代表的内容。如有必要,您还可以为表列指定别名。

示例 1:让我们以以下示例检索 employee 表中的员工姓名、总工资(SAL+COMM)信息。

输出

EMP_IDEMP_NAMECITYTOTAL_SAL
1克里希纳河昌迪加尔15500
2Rusin阿格拉20200
3Angel德里16100
4RobinKapurthala31000
5Chris勒克瑙22750
6威廉勒克瑙22750

解释:执行上述查询后,“AS”关键字是可选的。

默认情况下,SELECT 子句中的列名在查询结果中以大写形式列出,作为列的标题。在列别名周围放置双引号 ("") 可确保列别名的大小写敏感性,并允许您在别名名称中指定空格和特殊字符。别名有助于为复杂表达式提供简短名称。

示例

输出

EMP_IDEMP_NAMECITYTOTAL SALARY
1克里希纳河昌迪加尔15500
2Rusin阿格拉20200
3Angel德里16100
4RobinKapurthala31000
5Chris勒克瑙22750
6威廉勒克瑙22750

解释:在执行上述查询时。别名提供了两个好处:

  • 您可以给出准确描述表达式的名称。
  • 您可以在 ORDER BY 子句中引用别名。

在 SELECT 语句中使用连接运算符:连接运算符用于连接两个或多个字符串。它是 SQL 中重要的字符串运算符之一。它用于将字符串嵌入查询返回的值中,组合字符串并创建可分配给列的新值。

示例

输出

EMP_ID姓名
1MY NAME IS Krishna
2MY NAME IS Rusin
3MY NAME IS Angel
4MY NAME IS Robin
5MY NAME IS Chris
6MY NAME IS William

解释:执行上述查询后,连接运算符将字符串 'MY NAME IS' 与 EMP_NAME 列连接起来。

将 SELECT 语句与 ORDER BY 子句结合使用:ORDER BY 子句用于按升序或降序排列数据。默认情况下,数据按升序排序。通过在列名后使用 DESC 关键字,我们可以按降序排列数据。

例如:使用以下语法对表中的字段进行排序

语法

示例 1:让我们以以下示例检索 Employee 表中的员工姓名、城市、工资信息,并按升序显示员工姓名。

输出

EMP_NAMECITY工资
Angel德里16000
Chris勒克瑙22000
克里希纳河昌迪加尔15000
RobinKapurthala30000
Rusin阿格拉20000
威廉勒克瑙22000

解释:执行上述查询时,在为 EMP_NAME 列指定 ORDER BY 子句时,我们没有指定升序或降序,但顺序仍为升序。这表明默认顺序是升序。

示例 2:让我们以以下示例检索 Employee 表中的员工姓名、城市、工资信息,并按降序显示员工姓名。

输出

EMP_NAMECITY工资
威廉勒克瑙22000
Rusin阿格拉20000
RobinKapurthala30000
克里希纳河昌迪加尔15000
Chris勒克瑙22000
Angel德里16000

解释:执行上述查询后,检索到的记录将按 EMP_NAME 降序排序。

 
下一个主题DBMS SQL Insert