怎样查询不同表的字段差异 information_schema结构对比
用INFORMATION_SCHEMA.COLUMNS直接对比两表字段差异最稳妥需按column_name及data_type、is_nullable、column_default等关键属性做差集或LEFT JOIN注意MySQL与PostgreSQL在字段名、default值表达、character_maximum_length含义及大小写敏感性上的差异。查两个表字段差异要用 INFORMATION_SCHEMA.COLUMNS直接对比 information_schema.columns 是最稳的路不用依赖外部工具或拼接 ddl。核心思路是把两张表的字段拉出来按 column_name 和关键属性比如 data_type、is_nullable、column_default做差集或全外连接。注意MySQL 8.0 和 PostgreSQL 的 INFORMATION_SCHEMA 字段名略有不同比如 PostgreSQL 用 character_maximum_lengthMySQL 用同名但含义更窄别直接复制粘贴跨数据库跑。MySQL 下快速比字段用 LEFT JOIN 找 A 有 B 没有的列这是最常用也最不容易漏的写法——一次只聚焦一个方向逻辑清晰还能顺手带上类型差异。先查表 A 有、表 B 没有的字段SELECT column_name, data_type, is_nullable, column_defaultFROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema your_db AND table_name table_aAND column_name NOT IN ( SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema your_db AND table_name table_b);反过来查 B 有 A 没有的改下子查询里的表名就行想同时看类型/默认值是否一致换成 LEFT JOINON 条件加上 column_name再加 WHERE b.column_name IS NULL OR a.data_type ! b.data_typePostgreSQL 要注意 information_schema.columns 的默认值表现PostgreSQL 里 column_default 字段返回的是带函数调用的原始字符串比如 now()::text 或 2024-01-01::date不是干净的值。直接用 对比会误判。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手依托大模型帮助用户记录、整理和分析音视频内容体验用大模型做音视频笔记、整理会议记录。