SQL SELECT 语句

SQL SELECT 语句

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;

请注意,SQL不区分大小写。所以数据库系统处理SELECT和select都是相同操作。 但是,为了使SQL语句更具可读性,我们将使用SQL关键字的大写字母(如SELECT和FROM)和小写字母(如表名和列名)等标识符。

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

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

SQL SELECT语句示例

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

在这里插入图片描述

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客户端应用程序以交互方式查询数据。 但是,如果在应用程序的嵌入语句中使用星号()运算符,则可能存在一些潜在问题。首先,因为表的结构将发展以适应新的业务需求,例如,可以添加新列并删除现有列。 如果使用星号()运算符并且未更改应用程序代码以使其与新表结构一起使用,则应用程序可能无法正常运行。星号()运算符的另一个问题是它可能会增加数据库服务器和应用程序之间传输的不必要数据,因为应用程序可能只需要表的部分数据。

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

SQL SELECT - 执行简单的计算

如前所述,SELECT语句用于执行简单的计算。 例如,以下查询使用FLOOR(),DATEDIFF()和CURRENT_DATE函数计算员工的服务年份。要计算服务年份,将DATEDIFF()函数的结果除以365。FLOOR()函数返回小于或等于数值表达式结果的最大整数。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语句从单个表中查询数据。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三季人 G

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值