
别信“SQL学会这一句就够了”,这句话害了不少人。
大家好,我是这个DBA不太耶。
上次聊了数据库和Excel的区别,有朋友说:“你倒是教点实在的啊,我连SQL长啥样都不知道。”
行,今天就讲最基础的一个命令: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行,数据库也得先把所有列的数据加载出来。尤其是那些带 TEXT、BLOB 大字段的表,纯粹浪费IO和内存。
不是完全不能用,但只限几个场景:
SELECT * 看一眼数据结构。生产环境、正式脚本、性能要求高的地方,千万别这么干。
平时随便用,生产要慎重。查啥写啥列,星号是懒虫。
SELECT * 是新手村的第一把木剑——能砍怪,但别指望它屠龙。
学会它是第一步。学会什么时候不用它,才是真正的进阶。
大家第一次执行 SELECT * 查了多少行数据?有没有干过SELECT * 然后把电脑卡死的蠢事哈哈哈~
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。