推荐用 DESCRIBE table_name 或 SHOW COLUMNS FROM table_name 查表所有字段名,前者更简洁,后者支持 LIKE 过滤(如 SHOW COLUMNS FROM users LIKE '%user%'),且需注意当前数据库上下文及表名大小写敏感性。

MySQL 怎么查表的所有字段名
直接用 DESCRIBE table_name 或 SHOW COLUMNS FROM table_name 最快。前者更简洁,后者支持加 LIKE 过滤字段名,比如只看带 user 的列:SHOW COLUMNS FROM users LIKE '%user%'。
注意别漏掉数据库名——如果当前没 USE db_name,得写全:DESCRIBE mydb.users。执行后返回的 Field 列就是字段名,Type 和 Null 等列顺手也能看到类型和是否允许空值。
PostgreSQL 查字段名要走系统表
PostgreSQL 没有 DESCRIBE,得查 information_schema.columns:SELECT column_name FROM information_schema.columns WHERE table_name = 'users' ORDER BY ordinal_position。
关键点有三个:
-
table_name是小写的,除非建表时用了双引号(如"Users"),否则大写名查不到 - 加
ORDER BY ordinal_position才能按建表顺序输出,不然字段可能乱序 - 如果跨 schema,得加
AND table_schema = 'public'(或你的 schema 名)
SQL Server 用 sys.columns 最稳
SELECT name FROM sys.columns WHERE object_id = OBJECT_ID('users') ORDER BY column_id 是最常用写法。
容易错的地方:
-
OBJECT_ID('users')返回NULL时,说明表不存在或不在当前 database,得先确认USE your_db - 别用
sys.tables拼接查,多一层 JOIN 容易出错且没必要 - 字段顺序靠
column_id,不是name,否则id可能排在最后
SQLite 怎么看字段定义
SQLite 没有标准信息视图,用 PRAGMA table_info(table_name),返回五列:cid、name、type、notnull、dflt_value。
这个命令简单直接,但要注意:
-
name列就是你要的字段名,不用再解析 - 不支持
WHERE过滤,想筛字段得靠应用层处理 - 如果表是
WITHOUT ROWID或虚拟表(如fts5),PRAGMA仍可用,但部分字段值可能为NULL
SELECT DATABASE()、SELECT current_database() 或 DB_NAME() 确认当前环境,比重跑十遍语句省时间。

















