Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2147776
  • 博文数量: 227
  • 博客积分: 10521
  • 博客等级: 上将
  • 技术积分: 3452
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-20 14:59
个人简介

低调做人,高调做事!

文章分类

全部博文(227)

文章存档

2013年(4)

2012年(8)

2011年(16)

2010年(24)

2009年(92)

2008年(83)

分类: LINUX

2009-02-20 09:58:07

其实这段是在看mysql权威指南的时候总结的,以做个备注。

在创建数据表(create table)和修改数据表(alter table)的时候,mysql会在特定条件下对这个数据表的设计方案自动做出一些修改,其理由是可以让数据表的效率更高,或者是设计思路mysql无法实现。

特别提醒那些从其他数据库迁移过来的用户注意:mysql在对数据表设计方案自动做出修改的时候,是没有任何提示的,所以一定要用 show create table 命令去检查一下最终的数据表设计方案。

下面是mysql对数据表设计方案自动做出的几项重大修改:

1,如果 n<4,varchar(n)数据列将被修改为 char(n) 数据列。

2,如果 n>3,并且在同一个数据表里还有其他的varchar,text或者blob数据列的话,char(n)将被修改为 varchar(n)。如果数据表里面只有固定长度的数据列,则char(n) 将不发生变化。

3,mysql允许 timestamp 数据列带有 null 或者 not null 属性,但是他没有实际的意思。因为mysql无法把 null 值存入 timestamp 属性。

4,即使没有设定,mysql也会给 primary key 数据列自动加上 not null 的属性。

5,如果没有给某个数据列设置默认值,mysql就会给他自动定义一个适合的值(null,0或者空字符串)。
阅读(1809) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~