Mysql基础教程(01):Selct

MySQL SELECT 语句

本文介绍了 MySQL 中的 SELECT 语句的基本形式,以及如何使用 SELECT 语句从数据库中查询数据。

SELECT 语句用于从一个或多个表中检索数据,是 MySQL 中使用最多的语句。

SELECT 语句语法

以下是 SELECT 语句的语法:

SELECT columns_list
FROM table_name;

说明:

  1. 关键字 SELECT 后跟着一个或多个数据表的列。
  2. columns_list 可以有多个列,他们之间需要用逗号 , 分隔。
  3. 当要检索数据表中的所有列的时候,使用 SELECT * FROM table_name
  4. 关键字 FROM 后跟着要从中检索数据的表名。
  5. 分号 ; 表示语句的结束,它是可选的。如果有两条或更多条语句,则需要使用分号 ; 将它们分开,以便 MySQL 单独执行每条语句。

将 SQL 关键字书写为大写形式是一个好的编码习惯。但是,SQL 不区分大小写。比如下面的语句也是完全正确执行的:

select columns_list
from table_name;

SELECT 语句的正确语义应是 FROM table_name SELECT columns_list,即:从某个表检索某几列数据。MySQL 解析 SELECT 语句的时候,会首先评估 FROM 子句,再评估 SELECT 子句。

SELECT 语句实例

我们使用 Sakila 示例数据库中的演员表 actor 作为演示。以下是 actor 表的定义:

+-------------+-------------------+------+-----+-------------------+-----------------------------------------------+
| Field       | Type              | Null | Key | Default           | Extra                                         |
+-------------+-------------------+------+-----+-------------------+-----------------------------------------------+
| actor_id    | smallint unsigned | NO   | PRI | NULL              | auto_increment                                |
| first_name  | varchar(45)       | NO   |     | NULL              |                                               |
| last_name   | varchar(45)       | NO   | MUL | NULL              |                                               |
| last_update | timestamp         | NO   |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP |
+-------------+-------------------+------+-----+-------------------+-----------------------------------------------+

从中我们可以看到 actor 表中定义了 4 个字段: actor_id, first_name, last_name, last_update

actor 表中总共有 200 条数据,如下:

|        1 | 星驰        || 2024-05-23 10:38:29 |
|        2 | 德华        || 2024-05-23 10:38:39 |
|        3 | 朝伟        || 2024-05-23 10:38:47 |
|        4 | 小龙        || 2024-05-23 10:54:41 |
|        5 | 青云        || 2024-05-23 10:54:57 |
|        6 | 天乐        || 2024-05-23 10:55:03 |
|        7 | 连杰        || 2024-05-23 10:55:09 |
|        8 | 子丹        || 2024-05-23 10:55:20 |
|        9 ||| 2024-05-23 10:55:27 |
|       10 | 正英        || 2024-05-23 10:56:11 |
...
|      198 | MARY        | KEITEL       | 2006-02-15 04:34:33 |
|      199 | JULIA       | FAWCETT      | 2006-02-15 04:34:33 |
|      200 | THORA       | TEMPLE       | 2006-02-15 04:34:33 |
+----------+-------------+--------------+---------------------+

使用 SELECT 语句查询一个字段

以下 SELECT 语句从 actor 表选择所有演员的姓氏(last_name)

SELECT
    last_name
FROM
    actor;

以下是部分输出:

+--------------+
| last_name    |
+--------------+
| AKROYD       |
| AKROYD       |
| AKROYD       |
| ALLEN        |
| ALLEN        |
| ALLEN        |
| ASTAIRE      |
| BACALL       |
...

使用 SELECT 语句查询多个字段

以下 SELECT 语句从 actor 表选择所有演员的名字 (first_name) 和姓氏 (last_name)

SELECT
    first_name, last_name
FROM
    actor;

以下是部分输出:

+-------------+-------------+
| first_name  | last_name   |
+-------------+-------------+
| 星驰        ||
| 德华        ||
| 朝伟        ||
| 小龙        ||
| 青云        ||
| 天乐        ||
| 连杰        ||
| 子丹        ||
|||
| 正英        ||
|||
| 一龙        ||
|||
| 宝强        ||
|||
| 润发        ||
|||

使用 SELECT 语句查询所有字段

使用以下 SELECT 语句查询演员表中的所有字段:

SELECT
    *
FROM
    actor

以下是部分输出:

+----------+-------------+-------------+---------------------+
| actor_id | first_name  | last_name   | last_update         |
+----------+-------------+-------------+---------------------+
|        1 | 星驰        || 2024-05-23 10:38:29 |
|        2 | 德华        || 2024-05-23 10:38:39 |
|        3 | 朝伟        || 2024-05-23 10:38:47 |
|        4 | 小龙        || 2024-05-23 10:54:41 |
|        5 | 青云        || 2024-05-23 10:54:57 |
|        6 | 天乐        || 2024-05-23 10:55:03 |
|        7 | 连杰        || 2024-05-23 10:55:09 |
|        8 | 子丹        || 2024-05-23 10:55:20 |
|        9 ||| 2024-05-23 10:55:27 |
|       10 | 正英        || 2024-05-23 10:56:11 |
|       11 ||| 2024-05-23 10:56:19 |
|       12 | 一龙        || 2024-05-23 10:56:53 |
|       13 ||| 2024-05-23 10:57:01 |
|       14 | 宝强        || 2024-05-23 10:57:22 |
|       15 ||| 2024-05-23 10:57:32 |
|       16 | 润发        || 2024-05-23 10:58:35 |
|       17 ||| 2024-05-23 10:59:23 |

没有 FROM 的 SELECT

在 MySQL 中,某些情况下你要检索的数据不存在于任何表中,这时您可以省略 FROM 子句。语法如下:

SELECT expression_list

比如下面的这几种情况:
查询时间:

SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2024-05-23 10:33:06 |
+---------------------+
1 row in set (0.01 sec)

数值计算

SELECT 1+2
+-----+
| 1+2 |
+-----+
|   3 |
+-----+
1 row in set (0.00 sec)

虚拟表 dual

像上面的没有 FROM 子句的情况,也可以添加一个虚拟表 dual。如下所示:

SELECT NOW() FROM dual;
SELECT 1+2 FROM dual;

运算结果和上面的实例完全相同。

dual 表是一个虚拟表,完全可以忽略。它存在的目的只是让你的 SQL 看起来更加工整。

结论

本文通过实例介绍了 MySQL 中 SELECT 语句的语法,用法。 SELECT 语句的要点如下:

  • SELECT 语句用于从数据表中检索数据。
  • SELECT 关键字后跟字段的名称,多个字段使用逗号分隔。
  • FROM 关键字后跟数据表的名称。
  • SELECT * 可以从表的所有列中选择数据。
  • SELECT 后面可以直接跟表达式,这种情况下可以省略 FROM
  • dual 表是一个虚拟表,可以让没有 FROM 的语句满足 SELECT ... FROM 语句的结构。

←Mysql教程(0):学习框架

Mysql基础教程(02):WHERE→

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

叁拾舞

你的鼓励将是我最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值