SELECT * 到底能不能用?新手第一个坑

本文涉及的产品
RDS AI 助手,专业版
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 拆解“SQL学会SELECT *就够了”的误区,详解其原理、初学爽感与三大隐患(性能崩塌、列序失控、资源浪费),并指出仅限探索/排查等有限场景可用。真进阶在于懂学会何时不用它!

别信“SQL学会这一句就够了”,这句话害了不少人。

大家好,我是这个DBA不太耶。

上次聊了数据库和Excel的区别,有朋友说:“你倒是教点实在的啊,我连SQL长啥样都不知道。”

行,今天就讲最基础的一个命令:SELECT *

一、SELECT * 是干嘛的?

说白了:​把这张表里所有的列、所有的行,全端出来​。

  • SELECT = 我要查
  • * = 所有列(星号是通配符)
  • FROM 表名 = 从哪张表

所以 SELECT * FROM orders; 就是把订单表里每一列、每一行全部显示。

这是SQL里最简单的命令,没有之一。新手教程第一课几乎都是它。

二、第一次执行,确实爽

我刚接触数据库时,IT给我一个测试库说,你先看看订单表长什么样。

我打开客户端,照着教程敲了:

sql

SELECT * FROM orders;

执行。

一万行数据,两秒钟刷出来,滚动丝般顺滑。那一刻我突然理解了什么叫“数据库不是Excel”。Excel到一万行早就在转圈了,这边一万行只是热身。

那一刻你会觉得:数据库真牛,SQL真简单。

但如果你以为这就是SQL的全部,那后面有的是坑等着你。

三、为什么说它是个坑?

坑1:数据量大了会炸

假设一张表有100列、1000万行。你执行 SELECT *,相当于一次性把所有数据全拉出来。网络带宽扛不住,你的客户端可能直接内存溢出,甚至把数据库服务器拖慢。

正确做法:​只查你需要的列​。

-- 别这样
SELECT * FROM orders;

-- 要这样
SELECT order_id, customer_name, order_date FROM orders;

坑2:列顺序不可控

SELECT * 返回的列顺序是表定义的顺序。如果你的代码里写死了“第一列是订单号”,哪天表结构调整了(比如加了一列),列顺序一变,程序直接报错。

坑3:性能浪费

哪怕你只想看前10行,数据库也得先把所有列的数据加载出来。尤其是那些带 TEXTBLOB 大字段的表,纯粹浪费IO和内存。

四、什么时候可以用 SELECT *?

不是完全不能用,但只限几个场景:

  1. 探索性查询​:刚接触一张新表,不知道有哪些列,先 SELECT * 看一眼数据结构。
  2. 临时排查问题​:快速确认某条记录的所有字段值。
  3. 测试环境​:数据量小,怎么折腾都行。

生产环境、正式脚本、性能要求高的地方,千万别这么干。

五、一个口诀帮你记住

平时随便用,​生产要慎重​。

查啥写啥列,​星号是懒虫​。

六、说句大实话

SELECT * 是新手村的第一把木剑——能砍怪,但别指望它屠龙。

学会它是第一步。学会​什么时候不用它​,才是真正的进阶。

大家第一次执行 SELECT * 查了多少行数据?有没有干过SELECT * 然后把电脑卡死的蠢事哈哈哈~

相关文章
|
2月前
|
SQL 关系型数据库 MySQL
5款好用的免费MySQL客户端,新手必备!
告别枯燥命令行!数据库小学妹精选5款免费MySQL图形化工具:Workbench(官方全能)、phpMyAdmin(免安装Web版)、DBeaver(多库支持)、HeidiSQL(Windows轻量之选)、TablePlus(高颜值跨平台)。小白友好,语法高亮、自动补全、可视化结构一应俱全,助你高效学SQL!
|
2月前
|
SQL 人工智能 安全
AI圈开始“养马”了?聊聊龙虾退位、爱马仕登基
AI智能体“龙虾”(OpenClaw)的衰落与“爱马仕”(Hermes Agent)的崛起:前者因API限策与高危漏洞(CVSS 9.9)式微;后者以持久记忆、技能自生成、跨平台互通等实用能力破圈,成技术圈新“拐杖”。但技术无银弹,懂你的工具才是真助力。
|
2月前
|
SQL 数据库
多表关联查询入门:LEFT JOIN、INNER JOIN一文搞懂|转行学DB第6天
本文通俗易懂地讲解了数据库多表查询的三种JOIN操作:INNER JOIN(内连接)只返回两表匹配的数据,适用于查询交集数据;LEFT JOIN(左连接)保留左表所有记录并匹配右表数据,适用于查询主表完整信息;RIGHT JOIN(右连接)则保留右表所有记录。
|
2月前
|
SQL 关系型数据库 MySQL
主键、外键和约束:让数据库“有规矩”才能不出错!|转行学DB第5天
本文用通俗易懂的语言讲解了主键(数据的唯一标识)、外键(表间关联)以及唯一约束、非空约束等其他常见约束规则。通过具体SQL示例展示了各种约束的使用方法,并分享了新手容易踩的坑和实用建议。
|
2月前
|
SQL 关系型数据库 MySQL
数据量大查询慢?索引让你的SQL秒级响应!|转行学DB第9天
用生活化比喻(如字典目录)详解索引原理:它通过B+树结构加速查询,避免全表扫描;涵盖创建、查看、删除索引方法,联合索引的最左前缀原则,以及读写平衡等实战要点——让查询从“等几秒”变“秒出”!
数据量大查询慢?索引让你的SQL秒级响应!|转行学DB第9天
|
2月前
|
SQL NoSQL 关系型数据库
数据库分类一次讲清|转行学DB第2天
数据库小学妹(UI转行萌新)用通俗语言拆解数据库分类:从关系型(MySQL/Oracle)、NoSQL(Redis/MongoDB/Cassandra)、NewSQL(TiDB)到2026年爆火的向量数据库(Pinecone/Milvus),按数据模型、部署架构、业务负载三大维度梳理,配场景化案例与选学路径,助新手轻松入门。
|
2月前
|
SQL 数据库 数据库管理
从运营到DBA,我用了这3个“偷懒”方法学SQL
用运营人思维教小白轻松学SQL:①把SQL当Excel对话,理解SELECT/FROM/WHERE;②建“报错翻译本”,快速定位解决错误;③用“填空题法”抄改练,复用模板上手。不求完美,先跑通、看懂、不崩溃!
从运营到DBA,我用了这3个“偷懒”方法学SQL
|
2月前
|
SQL NoSQL BI
运营转DBA:我终于知道数据库不是Excel了
小耶分享数据库入门干货:零基础也能懂!对比Excel,解析数据库高效查数、并发处理、数据安全等核心优势;手把手教SELECT/WHERE/JOIN三招入门;避坑提醒——DELETE前先SELECT。转行不难,SQL即问数据的语言!
运营转DBA:我终于知道数据库不是Excel了
|
22天前
|
SQL 人工智能 数据库
模型都卷成麻花了,你还在用老办法管数据库?
本文聚焦大模型爆发下DBA新挑战:AI Agent带来的动态查询压力、向量检索成标配、NL2SQL重塑取数流程。倡导“懂数据+懂业务+懂AI”的复合能力转型。
|
2月前
|
SQL 安全 数据库
学SQL,谁还没过差点把表删了的时候?
专治SQL新手两大痛点:手滑删错(用事务+SELECT预检+双确认)和查询慢(LIMIT探路+EXPLAIN+索引)。干货不绕弯,坑都替你踩过了!