趋近智
GROUP BY 进行数据分组使用 SELECT 语句可以从表中精确指定要获取哪些列。这种精确性通常正是进行数据分析所需要的。然而,有些时候,特别是在首次接触新的数据集或表时,您可能希望查看表中的所有内容。SQL 提供了一个方便的简写方式,这样就不必查找并输入每个列名了。
要从表中选择所有列,您可以使用星号 (*) 字符(通常称为通配符)来代替列名列表。
语法直接明了:
SELECT *
FROM table_name;
让我们再次以 Products 表为例,它可能包含 product_id、product_name、category、price 和 stock_quantity 等列。
如果您想查看当前列出的所有产品的完整信息,您会这样写:
SELECT *
FROM Products;
执行此查询会指示数据库管理系统 (DBMS) 返回 Products 表中的所有行,并且对每一行,都包含该表结构中定义的所有列的数据。结果会类似这样(显示几行示例数据):
| product_id | product_name | category | price | stock_quantity |
|---|---|---|---|---|
| 101 | 量子小部件 | 电子产品 | 49.99 | 150 |
| 102 | 磁通电容器 | 小工具 | 19.95 | 88 |
| 103 | 超级扳手 | 工具 | 24.50 | 210 |
| 201 | 涡轮增压器 | 电子产品 | 99.99 | 45 |
| ... | ... | ... | ... | ... |
列的显示顺序与其在表创建时定义的顺序一致(不过,在严格的SQL标准中,这种顺序并不总是得到保证或依赖)。
SELECT * 的使用场景在以下几种情况下,使用 SELECT * 特别有用:
SELECT * 结合 LIMIT 子句(您之前学过)是快速查看表结构和其所含数据类型的好方法。例如,SELECT * FROM Products LIMIT 5; 会显示前 5 行的所有列。* 会比输入每个列名更快。WHERE 子句一起使用,我们将在下一章介绍)。尽管 SELECT * 很方便,但通常不建议在生产代码、自动化脚本或复杂分析中使用。原因如下:
SELECT product_name, price FROM Products; 立即告知读取者正在使用哪些数据。此外,如果底层表结构发生变化(例如,添加了新列或列重新排序),SELECT * 可能会返回意料之外的结果,甚至可能破坏预期特定数量或顺序列的应用程序代码。明确命名列会使您的查询更能适应此类变化。SELECT * 可能导致歧义。明确选择 table_alias.column_name 可以避免混淆。推荐: 主要将 SELECT * 用于交互式查询和初步查看。对于在应用程序、报告或后续分析步骤中使用的查询,请养成明确列出所需列的习惯。这会使SQL代码更高效、更具可读性和更易于维护。
这部分内容有帮助吗?
*通配符及其含义。*通配符的SELECT语句用法。SELECT语句的官方文档,通常包含性能考量和使用指南。© 2026 ApX Machine Learning用心打造