对比数据库字段不同的sql (mysql版)
-- 使用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 col
WHERE 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 col
WHERE 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_type
FROM old_column_info o, new_column_info n
WHERE o.`table_schema` = n.table_schema
AND o.`table_name` = n.table_name
AND o.`column_name` = n.column_name
AND (o.column_type != n.column_type
OR 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_type
FROM old_column_info o, new_column_info n
WHERE o.`table_schema` = n.table_schema
AND o.`table_name` = n.table_name
AND o.`column_name` = n.column_name
AND o.column_type != n.column_type;
-- 查询老库里存在但新库里不存在的数据
SELECT
o.table_schema, o.table_name, o.table_comment,
o.`COLUMN_NAME` AS old_column_name, o.`COLUMN_TYPE` AS old_column_type
FROM old_column_info o
WHERE NOT EXISTS(
SELECT 1 FROM new_column_info n
WHERE o.`table_schema` = n.table_schema
AND o.`table_name` = n.table_name
AND o.`column_name` = n.column_name
);
-- 查询新库里存在但老库里不存在的数据
SELECT
n.table_schema, n.table_name, n.table_comment,
n.`COLUMN_NAME` AS new_column_name, n.`COLUMN_TYPE` AS new_column_type
FROM new_column_info n
WHERE NOT EXISTS(
SELECT 1 FROM old_column_info o
WHERE o.`table_schema` = n.table_schema
AND o.`table_name` = n.table_name
AND o.`column_name` = n.column_name
);
对比数据库字段不同的sql (mysql版)的更多相关文章
- mysql用户授权、数据库权限管理、sql语法详解
mysql用户授权.数据库权限管理.sql语法详解 —— NiceCui 某个数据库所有的权限 ALL 后面+ PRIVILEGES SQL 某个数据库 特定的权限SQL mysql 授权语法 SQL ...
- MySQL 对比数据库表结构
200 ? "200px" : this.width)!important;} --> 介绍 本章主要介绍怎样对比数据库的表结构的差异,这里主要介绍使用mysqldiff工具 ...
- 常用的PHP数据库操作方法(MYSQL版)
常用的PHP数据库操作方法(MYSQL版) 作者: 字体:[增加 减小] 类型:转载 时间:2011-06-08 最近一直在折腾自己的网站首页,写的大部分PHP脚本都要用到和MYSQL数据库相关的 ...
- SQL优化 MySQL版 - B树索引详讲
SQL优化 MySQL版 - -B树索引详讲 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] 为什么要进行SQL优化呢?很显然,当我们去写sql语句时: 1会发现性能低 2.执行时间太 ...
- SQL优化 MySQL版 - 索引分类、创建方式、删除索引、查看索引、SQL性能问题
SQL优化 MySQL版 - 索引分类.创建方式.删除索引.查看索引.SQL性能问题 作者 Stanley 罗昊 [转载请注明出处和署名,谢谢!] 索引分类 单值索引 单的意思就是单列的值,比如说有 ...
- Python进阶----数据库的基础,关系型数据库与非关系型数据库(No SQL:not only sql),mysql数据库语言基础(增删改查,权限设定)
day37 一丶Python进阶----数据库的基础,mysql数据库语言基础(增删改查,权限设定) 什么是数据库: 简称:DataBase ---->DB 数据库即存放数据的仓库, ...
- 技术分享|SQL和 NoSQL数据库之间的差异:MySQL(VS)MongoDB
在当今市场上,存在各种类型的数据库,选择适合你业务类型的数据库对应用的开发和维护有着重要意义.本篇文章,将为大家分享SQL和NoSQL语言之间的区别,同时还将比较这两种类型的数据库,以帮助小伙伴们选择 ...
- MySQL 数据库性能优化之SQL优化
前言 有人反馈之前几篇文章过于理论缺少实际操作细节,这篇文章就多一些可操作性的内容吧. 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础. 优化目标 ...
- 如何找出MySQL数据库中的低效SQL语句
面对业务的迅猛发展,DBA的一项重要工作就是及时发现数据库中的低效SQL语句,有的可以立刻着手解决(比如缺少合适的索引),有的需要尽快反馈给开发人员进行修改. MySQL数据库有几个配置选项可以帮助我 ...
随机推荐
- Python之函数的递归、匿名函数、内置函数
一.函数的递归 ''' 1 什么是函数递归 函数递归调用(是一种特殊的嵌套调用):在调用一个函数的过程中,又直接或间接地调用了该函数本身 递归必须要有两个明确的阶段: 递推:一层一层递归调用下去,强调 ...
- Sklearn环境搭建与常用包
开发环境搭建 直接安装Anaconda IPython IPython是公认的现代科学计算中最重要的Python工具之一.它是一个加强版的Python交互命令行工具,有以下几个明显的特点: 1. 可以 ...
- 3、ObjectARX开发创建直线、圆、圆弧和修改对象属性
一.本节课程 Arx二次开发创建直线.圆.圆弧和修改对象属性 二.本节要讲解的知识点 1.如何应用C++ ARX二次开发创建直线. 2.如何应用C++ ARX二次开发创建圆. 3.如何应用C++ AR ...
- [Unity Shader] 常用的数值类型和语义
书看到第八章,跟随写了一些例子,但有些数值类型的使用还是需要特别注意,经常需要查阅,在这里做一下总结. 1 ShaderLab属性类型和Cg变量类型的匹配关系 Color.Vector:float4, ...
- Unity优化方向——优化Unity游戏中的垃圾回收(译)
介绍 当我们的游戏运行时,它使用内存来存储数据.当不再需要该数据时,存储该数据的内存将被释放,以便可以重用.垃圾是用来存储数据但不再使用的内存的术语.垃圾回收是该内存再次可用以进行重用的进程的名称. ...
- Kafka科普系列 | Kafka中的事务是什么样子的?
事务,对于大家来说可能并不陌生,比如数据库事务.分布式事务,那么Kafka中的事务是什么样子的呢? 在说Kafka的事务之前,先要说一下Kafka中幂等的实现.幂等和事务是Kafka 0.11.0.0 ...
- 持续更新 | 想不到的key
前言 开坑写一些我认为比较巧妙的东西想不到的东西 正文 判断回文串的时候 考虑一下枚举中心位往两边扩展 最大子矩阵与单调栈 遇难则反系列 算合法可以转换成算不合法.同理,不合法转换成合法计算有时也会简 ...
- python2.7 倒计时
From: http://www.vitostack.com/2016/06/05/python-clock/#more Python公告 Python 发布了一个网站 http://pythoncl ...
- [java] jar file
查看 .jar 内的文件 jar tf jarfile.jar maven 项目中, java 读取目标文件 运行 mvn package 打包项目是, src/main/resources 下的文件 ...
- -lPods-NewsPushClientSDK is not an object file (not allowed in a library)
今天在给客户定制SDK的过程中,出现了下面的一个问题,具有代表性,现在记录下来 问题: Showing All Errors Only : /Applications/Xcode.app/Conten ...