mysql 两个表结构图_查询比较MySQL中两个表的结构

为了自动化我的一个MySQL数据库的备份过程,我想比较两个表的结构(当前版本与旧版本).

你能想到一个可以比较两个表的查询吗?

以下是一些可以比较的示例表.

CREATE TABLE product_today

(

pname VARCHAR(150),

price int,

PRIMARY KEY (pname)

);

CREATE TABLE product_yesterday

(

pname VARCHAR(150),

price int,

PRIMARY KEY (pname)

);

CREATE TABLE product_2days_back

(

pname VARCHAR(15),

price int,

PRIMARY KEY (pname)

);

前两个表具有相同的结构.最后一个是不同的.我只需要知道两个表是否有不同的结构.我对他们的不同感兴趣.

解决方法:

当前数据库中的两个表格

如果您想知道两个表是否不同,请运行此命令

SELECT IF(COUNT(1)>0,'Differences','No Differences') Comparison FROM

(

SELECT

column_name,ordinal_position,

data_type,column_type,COUNT(1) rowcount

FROM information_schema.columns

WHERE table_schema=DATABASE()

AND table_name IN ('product_today','product_yesterday')

GROUP BY

column_name,ordinal_position,

data_type,column_type

HAVING COUNT(1)=1

) A;

如果您确实需要查看差异,请运行此操作

SELECT column_name,ordinal_position,data_type,column_type FROM

(

SELECT

column_name,ordinal_position,

data_type,column_type,COUNT(1) rowcount

FROM information_schema.columns

WHERE table_schema=DATABASE()

AND table_name IN ('product_today','product_yesterday')

GROUP BY

column_name,ordinal_position,

data_type,column_type

HAVING COUNT(1)=1

) A;

特定数据库中的两个表格

如果您想知道数据库mydb中两个表是否不同,请运行此命令

SELECT IF(COUNT(1)>0,'Differences','No Differences') Comparison FROM

(

SELECT

column_name,ordinal_position,

data_type,column_type,COUNT(1) rowcount

FROM information_schema.columns

WHERE table_schema='mydb'

AND table_name IN ('product_today','product_yesterday')

GROUP BY

column_name,ordinal_position,

data_type,column_type

HAVING COUNT(1)=1

) A;

如果您确实需要查看差异,请运行此操作

SELECT column_name,ordinal_position,data_type,column_type FROM

(

SELECT

column_name,ordinal_position,

data_type,column_type,COUNT(1) rowcount

FROM information_schema.columns

WHERE table_schema='mydb'

AND table_name IN ('product_today','product_yesterday')

GROUP BY

column_name,ordinal_position,

data_type,column_type

HAVING COUNT(1)=1

) A;

两个不同数据库中的两个表格

如果您想知道db1.tb1和db2.tb2是否不同,请运行此命令

SELECT IF(COUNT(1)>0,'Differences','No Differences') Comparison FROM

(

SELECT

column_name,ordinal_position,

data_type,column_type,COUNT(1) rowcount

FROM information_schema.columns

WHERE

(

(table_schema='db1' AND table_name='tb1') OR

(table_schema='db2' AND table_name='tb2')

)

AND table_name IN ('product_today','product_yesterday')

GROUP BY

column_name,ordinal_position,

data_type,column_type

HAVING COUNT(1)=1

) A;

如果您确实需要查看差异,请运行此操作

SELECT column_name,ordinal_position,data_type,column_type FROM

(

SELECT

column_name,ordinal_position,

data_type,column_type,COUNT(1) rowcount

FROM information_schema.columns

WHERE

(

(table_schema='db1' AND table_name='tb1') OR

(table_schema='db2' AND table_name='tb2')

)

AND table_name IN ('product_today','product_yesterday')

GROUP BY

column_name,ordinal_position,

data_type,column_type

HAVING COUNT(1)=1

) A;

试试看 !!!

标签:information-schema,mysql,ddl,schema

来源: https://codeday.me/bug/20190805/1587882.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值