大家看看速腾价格来看看,怎么设计表结构才好

随笔 - 141&
文章 - 14&
评论 - 337&
&&&&&&&&&&&
本章主要介绍怎样对比数据库的表结构的差异,这里主要介绍使用mysqldiff工具来对比表结构的差异,其实在5.6版本之后通过查询information库中的系统表也能对比出来,但是mysqldiff还有一个好处就是可以直接生产差异的SQL语句这个功能就是我们需要利用的,而通过分析系统表要实现这个就比较难;接下来就来看看怎样使用这个工具。
mysqldiff --server1=user:pass@host:port:socket --server2=user:pass@host:port:socket db1.object1:db2.object1 db3:db4
这个语法有两个用法:
db1:db2:如果只是指定数据库,那么就将两个数据库中互相缺少的对象显示出来,而对象里面的差异不进行对比;这里的对象包括表、存储过程、函数、触发器等。
db1.object1:db2.object1:如果指定了具体表对象,那么就会详细对比两个表的差异,包括表名、字段名、备注、索引、大小写等都有的表相关的对象。
接下来看一些主要的参数:
--server1:配置server1的连接
--server2:配置server2的连接
--character-set:配置连接时用的字符集,如果不显示配置默认使用&character_set_client&
--width:配置显示的宽度
--skip-table-options:这个选项的意思是保持表的选项不变,即对比的差异里面不包括表名、AUTO_INCREMENT,ENGINE, CHARSET等差异。
-d DIFFTYPE, --difftype:差异的信息显示的方式,有[unified|context|differ|sql](default: unified),如果使用sql那么就直接生成差异的SQL这样非常方便。
--changes-for=:例如--changes-for=server2,那么对比以sever1为主,生成的差异的修改也是针对server2的对象的修改。
--show-reverse:这个字面意思是显示相反的意思,其实是生成的差异修改里面同时会包含server2和server1的修改。
create table test1
(id int not null primary key,
a varchar(10) not null,
b varchar(10),
c varchar(10) comment 'c',
ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='test1';
create table test2
(id int not null ,
a varchar(10),
b varchar(5),
c varchar(10),
ENGINE=myisam DEFAULT CHARSET=utf8 COMMENT='test2';
1.不使用--skip-table-options
--server1=root:root@localhost --server2=root:root@localhost --changes-for=server2
--show-reverse
--difftype=sql study.test1:study.test2
2.使用--skip-table-options
其实用SQL语句也可以达到查询的效果,这里就贴上平时用的对比语句。
###############################################################################################################################
##判断两个数据库相同表的字段不为空是否相同
select a.TABLE_SCHEMA,a.TABLE_NAME,a.COLUMN_NAME,a.COLUMN_TYPE,a.IS_NULLABLE,a.COLUMN_DEFAULT,b.TABLE_SCHEMA,b.TABLE_NAME,b.COLUMN_NAME,b.COLUMN_TYPE,b.IS_NULLABLE ,b.COLUMN_DEFAULT,b.COLUMN_COMMENT
from information_schema.`COLUMNS` a inner join information_schema.`COLUMNS` b
on a.TABLE_SCHEMA='db1' and b.TABLE_SCHEMA='db2'and a.TABLE_NAME=b.TABLE_NAME and a.COLUMN_NAME=b.COLUMN_NAME and a.IS_NULLABLE&&b.IS_NULLABLE
where a.IS_NULLABLE='NO';
################################################################################################################################
##判断两个数据库相同表的字段默认值是否相同
select a.TABLE_SCHEMA,a.TABLE_NAME,a.COLUMN_NAME,a.COLUMN_DEFAULT,b.TABLE_SCHEMA,b.TABLE_NAME,b.COLUMN_NAME,b.COLUMN_DEFAULT from information_schema.`COLUMNS` a
inner join information_schema.`COLUMNS` b on a.TABLE_SCHEMA='db1' and b.TABLE_SCHEMA='db2'
and a.TABLE_NAME=b.TABLE_NAME and a.COLUMN_NAME=b.COLUMN_NAME and a.COLUMN_DEFAULT&&b.COLUMN_DEFAULT;
#################################################################################################################################
##判断两个数据库相同表的字段数据类型是否相同,这里是判断数据类型不同如果要判断数据类型的长度不同需要用COLUMN_TYPE字段
select a.TABLE_SCHEMA,a.TABLE_NAME,a.COLUMN_NAME,a.DATA_TYPE,a.COLUMN_DEFAULT,b.TABLE_SCHEMA,b.TABLE_NAME,b.COLUMN_NAME,b.DATA_TYPE ,b.COLUMN_DEFAULT
from information_schema.`COLUMNS` a inner join information_schema.`COLUMNS` b on a.TABLE_SCHEMA='db1' and b.TABLE_SCHEMA='db2'
and a.TABLE_NAME=b.TABLE_NAME and a.COLUMN_NAME=b.COLUMN_NAME and a.DATA_TYPE&&b.DATA_TYPE;
##################################################################################################################################
##判断两个数据库相同表的中互相不存在的字段
select a.TABLE_SCHEMA,a.TABLE_NAME,a.COLUMN_NAME,a.DATA_TYPE,a.COLUMN_DEFAULT
from information_schema.`COLUMNS` a
where a.TABLE_SCHEMA='db1' and a.COLUMN_NAME NOT IN(SELECT b.COLUMN_NAME from information_schema.`COLUMNS` b where b.TABLE_SCHEMA='db2' and a.TABLE_SCHEMA='db1'
and a.TABLE_NAME=b.TABLE_NAME );
select a.TABLE_SCHEMA,a.TABLE_NAME,a.COLUMN_NAME,a.DATA_TYPE,a.COLUMN_DEFAULT
from information_schema.`COLUMNS` a
where a.TABLE_SCHEMA='db2' and a.COLUMN_NAME NOT IN(SELECT b.COLUMN_NAME from information_schema.`COLUMNS` b where b.TABLE_SCHEMA='db1' and a.TABLE_SCHEMA='db2'
and a.TABLE_NAME=b.TABLE_NAME );
####mysql没有full jion所以变相的多做了一次select查询,这种方法性能比较差,对于表比较多的数据库建议使用上面的分开查询
select b.TABLE_SCHEMA,b.TABLE_NAME,b.COLUMN_NAME,b.DATA_TYPE,c.TABLE_SCHEMA,c.TABLE_NAME,c.COLUMN_NAME,c.DATA_TYPE from
(select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,DATA_TYPE from information_schema.`COLUMNS` a where a.TABLE_SCHEMA in('db2','db1') )a left join
(select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,DATA_TYPE from information_schema.`COLUMNS` a where a.TABLE_SCHEMA in('db2')) b
on a.TABLE_NAME=b.TABLE_NAME AND a.COLUMN_NAME=b.COLUMN_NAME left join
(select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,DATA_TYPE from information_schema.`COLUMNS` a where a.TABLE_SCHEMA in('db1')) c on a.TABLE_NAME=c.TABLE_NAME AND a.COLUMN_NAME=c.COLUMN_NAME
where b.COLUMN_NAME is null or c.COLUMN_NAME is null ;
#######################################################################################################################
##判断两个数据库互相不存在的表
select a.TABLE_SCHEMA,a.TABLE_NAME
from information_schema.TABLES a
where a.TABLE_SCHEMA='db1' and a.TABLE_NAME NOT IN(SELECT b.TABLE_NAME from information_schema.TABLES b where b.TABLE_SCHEMA='db2');
select a.TABLE_SCHEMA,a.TABLE_NAME
from information_schema.TABLES a
where a.TABLE_SCHEMA='db2' and a.TABLE_NAME NOT IN(SELECT b.TABLE_NAME from information_schema.TABLES b where b.TABLE_SCHEMA='db1');
select b.TABLE_SCHEMA,b.TABLE_NAME,c.TABLE_SCHEMA,c.TABLE_NAME from
(select TABLE_SCHEMA,TABLE_NAME from information_schema.TABLES a where a.TABLE_SCHEMA in('db2','db1') )a left join
(select TABLE_SCHEMA,TABLE_NAME from information_schema.TABLES a where a.TABLE_SCHEMA in('db2')) b
on a.TABLE_NAME=b.TABLE_NAME left join
(select TABLE_SCHEMA,TABLE_NAME from information_schema.TABLES a where a.TABLE_SCHEMA in('db1')) c on a.TABLE_NAME=c.TABLE_NAME
where b.TABLE_NAME is null or c.TABLE_NAME is null ;
&这里没有演示对数据库的对比,数据库的对比显示的只是缺少的数据库对象,理解起来更加容易。
&&& 作者:
&&& 博客:
本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。
《欢迎交流讨论》
阅读(...) 评论()大家来看看这个功能如何设计_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:61,941贴子:
大家来看看这个功能如何设计收藏
手游《干掉月亮》中,Combo后出现环绕一圈的星形状粒子,然后朝着分数运动,自己试了下做不了,大家觉得这是如何实现的?我在想,也许是每个星星死亡时再生出一个子粒子,然后如何用代码控制每个粒子朝着分数运动?我没有见到有类似目测参数。
上海张学友、王菲演唱会一站式购票!票品安全且真票!立即订购!
这不你已经说出方案了嘛,获取分数的屏幕坐标转到场景坐标后,就可以控制移动过去了
我想知道怎么让月亮跟着拍子改变口型。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或自己设计的鱼缸,大家来看看怎么样_观赏鱼吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:200,795贴子:
自己设计的鱼缸,大家来看看怎么样收藏
在公司无聊,趁经理出门,偷偷画了个图。
票牛教你如何买到热门、便宜、真实的演出门票!
三角侧滤,不如侧滤
完成图如下,大家看看怎么样,那块外板是镜子,可以遮一下滤材。
油膜怎么出
楼主设计的很漂亮的,干电脑设计的?感觉放滤材的三角区域太小,放不了多少滤材啊。
那就试试5楼的建议,底滤四角溢流,感觉能非常美观,考虑一下,设计设计。
设计很合理啊,过滤可以设计成上溢下吸,就不用担心油膜了
梁玉玺洗地机特价优惠 全国连锁 7天无理由退换货
用的什么软件?
侧滤效果很大,水清365天不换……
感觉透视出问题
过滤不行吧
家里有个侧+上滤的1.2缸飘过。侧滤就是这种斜角的。表示中看不中用,放滤材很难受,而且那个V形角之难清理,一脸血泪。
长1米,宽40,高45。。今天把图纸交给玻璃店做了,表示遇到真正的奸商,没有过滤系统要350,加上过滤要430,我是不是被坑了,说那个三角不好做,而且要用镀膜反射玻璃。。。。哎,明天上图吧。话说,我叫奸商帮我在底板加了隔层,打算买2种底砂,各位有什么好介绍呢?
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或后使用快捷导航没有帐号?
查看: 1393|回复: 11
大家来看看,怎么设计表结构才好。
高级会员, 积分 861, 距离下一级还需 139 积分
论坛徽章:7
有多种商品,每种商品都会有一个编号,表示属于某个客户的,但是各个商品都会有不同或者相同的属性字段,而且长短也有可能不一样。如果以后需要按照客户编号查询某个客户的商品,我是该把这些商品都设计到一个表里面(这样的话,就会需要一张很大的表,会有冗余的字段),还是每个商品都只有一张表,查询的时候用一个 union all 连结起来?
中级会员, 积分 465, 距离下一级还需 35 积分
论坛徽章:1
当然是一个表里, 不然,怎么能知道你某一个商品编号是存在哪个表当中呢 ?
高级会员, 积分 861, 距离下一级还需 139 积分
论坛徽章:7
chenzhoushiyu 发表于
当然是一个表里, 不然,怎么能知道你某一个商品编号是存在哪个表当中呢 ?
按照客户编号来查商品。 看看哪些客户买了哪些商品
高级会员, 积分 548, 距离下一级还需 452 积分
论坛徽章:1
如果冗余字段不是太多的话,还是在一张表的好
以后所有操作都在一张表中,比你jion好多了
金牌会员, 积分 2608, 距离下一级还需 392 积分
论坛徽章:15
说的再清晰一些,都有哪些字段,以及需求。需求决定设计方向。
金牌会员, 积分 1291, 距离下一级还需 1709 积分
论坛徽章:2
个人认为分而治之,从业务角度出发做内聚,相似的商品放在一个表,当然也要根据具体情况,表太多会造成关联查询,速度慢,而且不方便维护
高级会员, 积分 868, 距离下一级还需 132 积分
论坛徽章:9
一张商品表,
一张商品属性表(也可不用)。
商品表的 属性字段,用char型。可以用位来表示不同属性如:01010等等。
商品表再加个所属客户字段,也可同上描述。
这样有多少种属性都能描述。
高级会员, 积分 861, 距离下一级还需 139 积分
论坛徽章:7
tangfei8494 发表于
一张商品表,
一张商品属性表(也可不用)。
具体是怎么样的,能讲详细点吗?
金牌会员, 积分 1235, 距离下一级还需 1765 积分
论坛徽章:2
中级会员, 积分 334, 距离下一级还需 166 积分
论坛徽章:3
项目中我碰到这种情况,而且不同商品的不同属性是由用户自己维护的。
所以设计时 有一张 字典表、一张配置表 ,一张商品和顾客的关系表 ,商品表
扫一扫加入本版微信群请完成以下验证码
人气值4852
阴影部分是承重
(11.62 KB, 下载次数: 2)
16:13 上传
全部评论: 9条
该用户从未签到
QQ图片21.png (14.95 KB, 下载次数: 0)
随便你做了一下。没动墙体感觉不是很好。动墙体有种无力感
16:14 上传
随便你做了一下。没动墙体感觉不是很好。动墙体有种无力感
该用户从未签到
难道就没人了吗?看了一眼全走了?
厨房 那堵墙去掉 开放式的-。那堵墙很不舒服的感觉-沙发做个小隔断 会不会更好点=。&
签到天数: 222 天[LV.7]常住居民III
难道就没人了吗?看了一眼全走了?
厨房 那堵墙去掉 开放式的-。那堵墙很不舒服的感觉-沙发做个小隔断 会不会更好点=。
沙发那我就放了个盆栽,比隔断好点把。厨房那墙去掉过。感觉更怪了&
该用户从未签到
动线太少,主要墙体大都是承重墙,搞不懂开发商怎么设计的
是不是该考虑软装?&
该用户从未签到
厨房 那堵墙去掉 开放式的-。那堵墙很不舒服的感觉-沙发做个小隔断 会不会更好点=。
沙发那我就放了个盆栽,比隔断好点把。厨房那墙去掉过。感觉更怪了
该用户从未签到
动线太少,主要墙体大都是承重墙,搞不懂开发商怎么设计的
是不是该考虑软装?
(291.55 KB, 下载次数: 0)
10:25 上传
该用户从未签到
是不是该考虑软装?
个人感觉储物功能有点少,还有酒柜呢,需要衣帽间吗等等。。。
并不是给客户做。只是自己拿到了玩玩&
该用户从未签到
个人感觉储物功能有点少,还有酒柜呢,需要衣帽间吗等等。。。
并不是给客户做。只是自己拿到了玩玩
该用户从未签到
并不是给客户做。只是自己拿到了玩玩
自己做也得端正态度啊亲,问题不在这
精品推荐 /1
一年一度的意大利米兰家具展,已经更成为中国家居行业的盛会,大批设计师、家居从业人员蜂拥而至。2017年米兰展,你要与我们同行吗?中国室内设计联盟作为12年的设计平台,有着丰富的游学与设计交流组织经验!
报名咨询:(微信/电话)
官方新浪微博
官方腾讯微博
COPYRIGHT&& &中国室内设计联盟 ALL RIGHTS RESERVED.

我要回帖

更多关于 大家看看我发育正常吗 的文章

 

随机推荐