對比資料庫欄位不同的sql (mysql版)

來源:互聯網
上載者:User

標籤:name   engine   project   from   sts   mat   def   creat   orm   

-- 使用test庫 `test_project_management` `oel_project_management`USE test;-- 舊錶DROP TABLE old_column_info;CREATE TABLE `old_column_info` (  `id` INT(11) NOT NULL AUTO_INCREMENT,  `table_schema` VARCHAR(64) NOT NULL COMMENT ‘資料庫‘,  `table_name` VARCHAR(64) NOT NULL COMMENT ‘表名‘,  `table_comment` VARCHAR(128) DEFAULT NULL COMMENT ‘表備忘‘,  `column_name` VARCHAR(64) NOT NULL COMMENT ‘列名‘,  `column_type` VARCHAR(32) NOT NULL COMMENT ‘列類型‘,  `is_nullable` VARCHAR(8) NOT NULL COMMENT ‘是否可為空白‘,  `column_default` VARCHAR(32) DEFAULT NULL COMMENT ‘預設值‘,  `column_comment` VARCHAR(128) DEFAULT NULL COMMENT ‘列備忘‘,  PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=utf8;-- 舊錶DROP TABLE new_column_info;CREATE TABLE `new_column_info` (  `id` INT(11) NOT NULL AUTO_INCREMENT,  `table_schema` VARCHAR(64) NOT NULL COMMENT ‘資料庫‘,  `table_name` VARCHAR(64) NOT NULL COMMENT ‘表名‘,  `table_comment` VARCHAR(128) DEFAULT NULL COMMENT ‘表備忘‘,  `column_name` VARCHAR(64) NOT NULL COMMENT ‘列名‘,  `column_type` VARCHAR(32) NOT NULL COMMENT ‘列類型‘,  `is_nullable` VARCHAR(8) NOT NULL COMMENT ‘是否可為空白‘,  `column_default` VARCHAR(32) DEFAULT NULL COMMENT ‘預設值‘,  `column_comment` VARCHAR(128) DEFAULT NULL COMMENT ‘列備忘‘,  PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=utf8;-- 插入舊錶結構INSERT INTO `old_column_info` (  `table_schema`,  `table_name`,  `table_comment`,  `column_name`,  `column_type`,  `is_nullable`,  `column_default`,  `column_comment`) SELECT ‘project_management‘, tab.table_name, tab.table_comment, col.`COLUMN_NAME`, col.`COLUMN_TYPE`, col.`IS_NULLABLE`, col.`COLUMN_DEFAULT`, col.`COLUMN_COMMENT` FROM information_schema.`TABLES` tab, information_schema.columns colWHERE col.table_schema = tab.`TABLE_SCHEMA`AND col.table_name = tab.`TABLE_NAME`AND col.table_schema = ‘test_project_management‘;-- 插入舊錶結構INSERT INTO `new_column_info` (  `table_schema`,  `table_name`,  `table_comment`,  `column_name`,  `column_type`,  `is_nullable`,  `column_default`,  `column_comment`) SELECT ‘project_management‘, tab.table_name, tab.table_comment, col.`COLUMN_NAME`, col.`COLUMN_TYPE`, col.`IS_NULLABLE`, col.`COLUMN_DEFAULT`, col.`COLUMN_COMMENT` FROM information_schema.`TABLES` tab, information_schema.columns colWHERE col.table_schema = tab.`TABLE_SCHEMA`AND col.table_name = tab.`TABLE_NAME`AND col.table_schema = ‘oel_project_management‘;-- 查看欄位名稱未變單資料結構變了的SELECT o.table_schema, o.table_name, o.table_comment, o.`COLUMN_NAME` AS old_column_name, o.`COLUMN_TYPE` AS old_column_type,n.`COLUMN_NAME` AS new_column_name, n.`COLUMN_TYPE` AS new_column_typeFROM old_column_info o, new_column_info nWHERE o.`table_schema` = n.table_schemaAND o.`table_name` = n.table_nameAND o.`column_name` = n.column_nameAND (o.column_type != n.column_typeOR o.`is_nullable` != n.`is_nullable`);-- 查看欄位名稱未變單資料結構變了的SELECT o.table_schema, o.table_name, o.table_comment, o.`COLUMN_NAME` AS old_column_name, o.`COLUMN_TYPE` AS old_column_type,n.`COLUMN_NAME` AS new_column_name, n.`COLUMN_TYPE` AS new_column_typeFROM old_column_info o, new_column_info nWHERE o.`table_schema` = n.table_schemaAND o.`table_name` = n.table_nameAND o.`column_name` = n.column_nameAND o.column_type != n.column_type;-- 查詢老庫裡存在但新庫裡不存在的資料SELECTo.table_schema, o.table_name, o.table_comment, o.`COLUMN_NAME` AS old_column_name, o.`COLUMN_TYPE` AS old_column_typeFROM old_column_info oWHERE NOT EXISTS(SELECT 1 FROM new_column_info nWHERE  o.`table_schema` = n.table_schemaAND o.`table_name` = n.table_nameAND o.`column_name` = n.column_name);-- 查詢新庫裡存在但老庫裡不存在的資料SELECTn.table_schema, n.table_name, n.table_comment, n.`COLUMN_NAME` AS new_column_name, n.`COLUMN_TYPE` AS new_column_typeFROM new_column_info nWHERE NOT EXISTS(SELECT 1 FROM old_column_info oWHERE  o.`table_schema` = n.table_schemaAND o.`table_name` = n.table_nameAND o.`column_name` = n.column_name);

對比資料庫欄位不同的sql (mysql版)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.