数据库教程-SQL Select语句

跨零代码为大家提供高品质的解决方案,请大家多多来访,跨零不胜感激,在此谢过。

在本教程中,您将学习如何使用SQL SELECT语句从单个表中查询数据。

1. SQL SELECT语句简介

要查询表中的数据,请使用SQL SELECT语句。 SELECT语句包含用于选择列,选择行分组数据连接表以及执行简单计算的语法。

SELECT语句是SQL中最复杂的命令之一,因此,在本教程中,我们将仅介绍基础知识。

下面说明了从单个表中检索数据的SELECT语句的基本语法。

SELECT      column1, column2, column3, ... FROM     table_name; 

在此语法中,指定查询SELECT子句中的数据是使用逗号分隔列的列表,并在FROM子句中指定表名。 在评估SELECT语句时,数据库系统首先计算FROM子句,然后再计算SELECT子句。

分号(;)不是查询的一部分。 通常,数据库系统使用分号分隔两个SQL查询。 有关更多信息,请查看SQL语法。

如果要查询表的所有列中的数据,可以使用星号(*)运算符而不是列列表,如下所示。

SELECT      * FROM     table_name; 

除了SELECTFROM子句之外,SELECT语句还可以包含许多其他子句,例如 –

  • WHERE – 用于根据指定条件过滤数据
  • ORDER BY – 用于对结果集进行排序
  • LIMIT – 用于限制返回的行
  • JOIN – 用于查询来自多个相关表的数据
  • GROUP BY – 用于根据一列或多列对数据进行分组
  • HAVING – 用于过滤分组

您将在后续教程中了解这些子句的使用。

2. SQL SELECT语句示例

我们将使用示例数据库中的employees表进行演示。

SQL Select语句

3. SQL SELECT – 查询所有列示例

要查询表中的所有列,请使用星号(*)而不是指定每列。 例如,以下语句从employees表中检索所有数据:

SELECT      * FROM     employees; 

执行上面示例代码,得到以下结果 –

+-------------+------------+-----------+---------------------------+----------------+------------+--------+--------+------------+---------------+ | employee_id | first_name | last_name | email                     | phone_number   | hire_date  | job_id | salary | manager_id | department_id | +-------------+------------+-----------+---------------------------+----------------+------------+--------+--------+------------+---------------+ |         100 | Steven     | Lee       | steven.lee@yiibai.com     | 0532-86011111  | 1987-06-17 |      4 | 24000  | NULL       |             9 | |         101 | Neena      | Wong      | neena.wong@kaops.com      | 0551-4243311   | 1989-09-21 |      5 | 17000  |        100 |             9 | |         102 | Lex        | Liang     | lex.liang@kaops.com       | 0571-87622362  | 1993-01-13 |      5 | 17000  |        100 |             9 | |         103 | Alexander  | Lee       | alexander.lee@kaops.com   | 020-95105105   | 1990-01-03 |      9 | 9000   |        102 |             6 | ... ... |         201 | Michael    | Zhou      | michael.zhou@yiibai.com   | 010-67237328   | 1996-02-17 |     10 | 13000  |        100 |             2 | |         202 | Pat        | Zhou      | pat.zhou@yiibai.com       | 0755-28114518  | 1997-08-17 |     11 | 6000   |        201 |             2 | |         203 | Susan      | Zhou      | susan.zhou@yiibai.com     | 0755-83587526  | 1994-06-07 |      8 | 6500   |        101 |             4 | |         204 | Hermann    | Wu        | hermann.wu@yiibai.com     | 0513-83512816  | 1994-06-07 |     12 | 10000  |        101 |             7 | |         205 | Shelley    | Wu        | shelley.wu@yiibai.com     | 0898-31686222  | 1994-06-07 |      2 | 12000  |        101 |            11 | |         206 | William    | Wu        | william.wu@yiibai.com     | 022-26144822   | 1994-06-07 |      1 | 8300   |        205 |            11 | +-------------+------------+-----------+---------------------------+----------------+------------+--------+--------+------------+---------------+ 40 rows in set 

使用星号(*)运算符只能方便地通过SQL客户端应用程序以交互方式查询数据。 但是,如果在应用程序的嵌入语句中使用星号(*)运算符,则可能存在一些潜在问题。

首先,因为表的结构将发展以适应新的业务需求,例如,可以添加新列并删除现有列。 如果使用星号(*)运算符并且未更改应用程序代码以使其与新表结构一起使用,则应用程序可能无法正常运行。

星号(*)运算符的另一个问题是它可能会增加数据库服务器和应用程序之间传输的不必要数据,因为应用程序可能只需要表的部分数据。

4. SQL SELECT – 查询特定列

SELECT语句用于准确指定要以任何顺序检索数据的列,它不必按表中定义的顺序排列。

例如,如果想要查看所有员工的员工ID,名字,姓氏和雇用日期,则使用以下查询:

SELECT      employee_id,      first_name,      last_name,      hire_date FROM     employees; 

请注意,结果集仅包含SELECT子句中指定的四列。如下所示 –

+-------------+------------+-----------+------------+ | employee_id | first_name | last_name | hire_date  | +-------------+------------+-----------+------------+ |         100 | Steven     | Lee       | 1987-06-17 | |         101 | Neena      | Wong      | 1989-09-21 | |         102 | Lex        | Liang     | 1993-01-13 | |         103 | Alexander  | Lee       | 1990-01-03 | ... ... |         202 | Pat        | Zhou      | 1997-08-17 | |         203 | Susan      | Zhou      | 1994-06-07 | |         204 | Hermann    | Wu        | 1994-06-07 | |         205 | Shelley    | Wu        | 1994-06-07 | |         206 | William    | Wu        | 1994-06-07 | +-------------+------------+-----------+------------+ 40 rows in set 

5. SQL SELECT – 执行简单的计算

如前所述,SELECT语句用于执行简单的计算。 例如,以下查询使用FLOOR()DATEDIFF()CURRENT_DATE函数计算员工的服务年份。要计算服务年份,将DATEDIFF()函数的结果除以365FLOOR()函数返回小于或等于数值表达式结果的最大整数。YoS是下面表达式的列别名,用于在返回的结果集中显示用户友好的标题。

FLOOR(DATEDIFF(NOW(), hire_date) / 365) 

完整的写法如下所示 –

SELECT      employee_id,     first_name,     last_name,     FLOOR(DATEDIFF(NOW(), hire_date) / 365) AS YoS FROM     employees; 

执行上面查询语句,得到以下结果 –

+-------------+------------+-----------+-----+ | employee_id | first_name | last_name | YoS | +-------------+------------+-----------+-----+ |         100 | Steven     | Lee       |  31 | |         101 | Neena      | Wong      |  29 | |         102 | Lex        | Liang     |  26 | |         103 | Alexander  | Lee       |  29 | |         104 | Bruce      | Wong      |  27 | |         105 | David      | Liang     |  21 | |         106 | Valli      | Chen      |  20 | |         107 | Diana      | Chen      |  19 | |         108 | Nancy      | Chen      |  24 | ... ... |         203 | Susan      | Zhou      |  24 | |         204 | Hermann    | Wu        |  24 | |         205 | Shelley    | Wu        |  24 | |         206 | William    | Wu        |  24 | +-------------+------------+-----------+-----+ 40 rows in set 

此查询适用于MySQL。 如果使用SQL Server,则可以使用以下查询:

SELECT      employee_id,     first_name,     last_name,     DATEDIFF(year, hire_date,CURRENT_TIMESTAMP) FROM     employees; 

通过上面示例和学习,您应该知道如何使用SQL SELECT语句从单个表中查询数据。

  

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 sql教程 只为你绽放。

本文固定链接: http://kua0.com/2019/01/25/数据库教程-sql-select语句/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注