确认表名和数据库上下文是查询前提:用SHOW TABLES或SELECT DATABASE()定位表,注意大小写和schema前缀;SELECT *在生产环境需谨慎,因其引发性能、安全及维护问题;查不到数据时应排查表空、事务未提交或WHERE条件错误。
直接写 SELECT * FROM table_name; 就能查出整张表的数据,但新手常因忽略表名、数据库上下文或权限问题卡在第一步。
很多新手输完 SELECT * FROM users; 报错 Table 'users' doesn't exist,不是语法错,而是压根没连对库或表名记错了。
SHOW TABLES; 看当前数据库里有哪些表(MySQL)SELECT current_database();(PostgreSQL)或 SELECT DATABASE();(MySQL)确认当前数据库Users 和 users 是两个表public.users),必须写全名:SELECT * FROM public.users;
它确实最省事,但实际开发中容易引发性能、安全和维护问题。
TEXT 或 BLOB,* 会把所有字段都拉过来,网络和内存开销翻倍password_hash、api_key 这类敏感字段,* 会一并查出,哪怕你根本不用SELECT id, name, email FROM users;
执行成功但返回空结果集,不等于没数据,很可能是查询条件或环境问题。
SELECT COUNT(*) FROM table_name; 确认是否真没数据COMMIT,当前会话就查不到WHERE deleted_at IS NULL,而测试数据没设这个字段WHERE status = 'active' 查不到 status 为 NULL 的行,要用 IS NULL 单独判断真正麻烦的不是语法本身,而是表在哪、有没有读权限、数据是否可见——这些往往比 SELECT * 多敲几个字母更耗时间。