MySQL SELECT 语句
MySQL 中的 SELECT 语句用于从一个或多个表中获取数据。 我们可以使用这个语句检索所有字段或指定的字段,并匹配指定的条件。 该语句还可以与各种脚本语言一起使用,例如 PHP 和 Ruby 等等。
SELECT 语句语法
这是最常用的 SQL 查询。从表中提取数据的通用语法如下所示:
SELECT field_name1, field_name 2,... field_nameN
FROM table_name1, table_name2...
[WHERE condition]
[GROUP BY field_name(s)]
[HAVING condition]
[ORDER BY field_name(s)]
[OFFSET M ][LIMIT N];
所有字段的语法:
SELECT * FROM tables [WHERE conditions]
[GROUP BY fieldName(s)]
[HAVING condition]
[ORDER BY fieldName(s)]
[OFFSET M ][LIMIT N];
参数解释
SELECT语句使用以下参数:
参数名称 | 描述 |
---|---|
field_name(s) 或 * | 用于指定要在结果集中返回的一个或多个列。* 返回表的所有字段。 |
table_name(s) | 我们希望提取数据的表的名称。 |
WHERE | 可选语句。它指定了在结果集中返回匹配记录的条件。 |
GROUP BY | 可选语句。它从多个记录中收集数据,并按一个或多个列进行分组。 |
HAVING | 可选语句。它与 GROUP BY 子句配合使用,仅返回满足条件的行。 |
ORDER BY | 可选语句。用于对结果集中的记录进行排序。 |
OFFSET | 可选语句。指定从哪一行开始返回。默认情况下,从零开始。 |
LIMIT | 可选语句。用于限制返回的记录数。 |
注意:需要注意的是,MySQL总是先评估FROM子句,然后再评估SELECT子句。
MySQL SELECT语句示例:
让我们通过各种示例来了解SELECT命令在MySQL中的工作原理。假设我们有一个名为 employee_detail 的表,其中包含以下数据:
1. 如果我们想从表中检索 单个列 ,我们需要执行以下查询:
mysql> SELECT Name FROM employee_detail;
我们将获得如下输出,可以看到只有一列记录。
2. 如果我们想要查询表中的多列数据,我们需要执行以下查询:
mysql> SELECT Name, Email, City FROM employee_detail;
我们将获得以下输出,可以看到员工的姓名、电子邮件和城市。
3. 如果我们想要从表的 所有列 中获取数据,我们需要使用带有select语句的所有列名。指定所有列名对用户来说不方便,所以MySQL使用 星号 (*)来检索所有列数据,如下所示:
mysql> SELECT * FROM employee_detail;
我们将获得以下输出,在这里我们可以看到表格的所有列。
4. 在这里,我们使用具有 SUM函数 和 HAVING 子句的SELECT命令来获取员工姓名、城市和总工作小时数。此外,它还使用 GROUP BY 子句按Name列对它们进行分组。
SELECT Name, City, SUM(working_hours) AS "Total working hours"
FROM employee_detail
GROUP BY Name
HAVING SUM(working_hours) > 5;
它将产生以下输出:
5. MySQL SELECT语句还可以通过使用 JOIN语句 从多个表中检索记录。假设我们有一个名为 “customer” 和 “orders” 的表,包含以下数据:
表:customer
表格:订单
执行以下SQL语句,使用 INNER JOIN 查询, 返回两个表中匹配的记录:
SELECT cust_name, city, order_num, order_date
FROM customer INNER JOIN orders
ON customer.cust_id = orders.order_id
WHERE order_date < '2020-04-30'
ORDER BY cust_name;
查询成功执行后,我们将得到以下输出: