mysql中自动修改数据表的设计(默许的数据列修改)
By admin
- One minute read - 45 words9.9.6 自动修改数据表的设计(默许的数据列修改)
在创建(create table)或修改(alter table)一个数据表的时候,MYSQL会在特定条件下对这个数据表的设计方案自动做出一些修改,其理由或者是那么做可以让数据表的效率更高,或者是设计思路MYSQL无法实现. 这里要特别提醒那些从期货数据库系统迁移过来的读者注意:MYSQL在对数据表设计方案自动做出勤率修改时不会给出任何提示,所以一事实上要用SHOW CREATE TABLE命令去检查一下最终的数据表设计方案是不是所想像的样子。在下面的例子里。MYSQL自做主张地把一个CHAR(2)数据列改成了一个VARCHAR(20)数据列,还给那两个数据列加上了defautl null属性. CREATE TABLE test1(col1 VARCHAR(20), col2 CHAR(20)) show create table test1 create table test1( col1 varchar(20) default null, col2 varchar(20) default null )engine=MYISAM default charset=latin1
以下是mysql会对数据表设计方案自动做出的几项重大修改: 1.如果n<4,VARCHAR(n)数据列将被修改为CHAR(n)数据列. 2.如果n>3,并且在同一个数据表里还有其他的VARCHAR,TEXT,或BLOG数据列的话,CHAR(n)将被系统自动修改为CARCHAR(n).如果数据表里只有固定长度的数据列,但CHAR(n)将不发生变化. 3.即使没有设定,MYSQL也会自动给primary key数据列自动加上NOT NULL属性. mysql文档把这种自动方式的修改称为默许的数据列修改(client column changes),这方面的详细信息可以在HTTP://dev.mysql.com/doc/mysql/en/silent-column-changes.html网址处的文章里找到。 总之在数据库的设计和创建工作这后,一定要仔细检查数据库,数据库里的数据表,数据表里的数据列,数据列的各有关属性是不是都如所想.
以上摘自**<>第3版** 第195页