首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >SELECT * 到底能不能用?新手第一个坑

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

原创
作者头像
这个DBA有点耶
发布2026-04-23 14:13:26
发布2026-04-23 14:13:26
800
举报

别信“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 *,相当于一次性把所有数据全拉出来。网络带宽扛不住,你的客户端可能直接内存溢出,甚至把数据库服务器拖慢。

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

代码语言:SQL
复制
-- 别这样
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 * 然后把电脑卡死的蠢事哈哈哈~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、SELECT * 是干嘛的?
  • 二、第一次执行,确实爽
  • 三、为什么说它是个坑?
  • 四、什么时候可以用 SELECT *?
  • 五、一个口诀帮你记住
  • 六、说句大实话
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档