兩台例項如果需要進行表結構對比時,一旦涉及的表過多或者欄位過多,對比起來非常麻煩。
這時候沿用mysql sql問題mysql illegal mix of collations for operation union 排查解決思路
來完成這部分的對比。
這裡拿表字段舉例
先從主庫information_schema
庫中將表columns
匯入到需要對比的庫中。
這裡需要注意匯出成sql檔案的時候,記得將temporary這個關鍵字去掉,這個代表臨時表的意思。臨時表會導致看不到任何東西。這個時候對比庫已經擁有的主庫的所有字段資訊,然後根據這些字段資訊和對比庫的字段做交叉對比。
參考語句:
select
a.table_name,
a.column_name,
b.column_name
from
(select
*from
columns b
where
b.table_schema =
'主庫名稱'
and b.table_name in
(select
*from
(select
a.table_name
from
information_schema.
`columns
` a where
a.table_schema =
'對比庫的名稱'
) a )
) aleft
join
(select
a.table_name,
a.column_name
from
information_schema.
`columns
` a where
a.table_schema =
'對比庫的名稱'
) b on a.table_name = b.table_name
and a.column_name = b.column_name
where
b.column_name is
null
;
查詢出來的結果就是對比庫和主庫之間差異字段。
同理: 表名稱、索引… 一系列的對比都可以參考該思路。另外補充一些根據mysql查詢表的sql語句
-- 根據表的建立時間進行排序
select
*from information_schema.
tables
where table_schema =
'marketing_db'
order
by create_time desc
;-- 檢視表的修改時間字段是否有預設值為當前時間戳
select
*from information_schema.
columns
where table_schema =
'marketing_db'
and column_name =
'updated'
and extra ='';
-- 匯出表的結構檔案
select
distinct a.table_name,
b.table_comment,
a.column_name,
a.column_type,
a.column_comment
from
`information_schema`
.columns a
left
join
`information_schema`
.tables b on a.table_name= b.table_name
where a.table_schema=
'marketing_db'
and a.table_name in
('t_activity_info'
,'t_activity_ticket_record');
-- 根據特定的表建立相同的表
create
table temp_jinmao_data.c_user like marketing_db.c_user ;
MYSQL 根據不同欄位的彙總相同欄位的總數
需求 彙總乙個使用者不同支付方式的購買的總杯數 buy num 杯數 pay code 支付方式 pay name 支付名稱 pay status 支付狀態 ms order 訂單表 ms user 使用者表 select u.id,pay name,u.username,sum buy num a...
mysql 修改表的字段
修改乙個表的字段 alter table member change memberid memberid bigint unsigned 修改含有外來鍵的字段 執行 begin 到 end 之間的 可能需要修改sql mode值 show variables like sql mode 儲存查詢出來...
Mysql之列 字段 表
數值 型別 介紹大小 範圍tinyint 十分小的資料 1個位元組 2 7 2 2 7 2 7 1 2 1 2 7 1smallint 較小的資料 2個位元組 2 15 2 2 15 2 1 mediumint 中大小資料 3個位元組 2 23 2 2 23 2 1 int標準的整數 4個位元組 2...