闽公网安备 35020302035485号
CREATE TABLE `user` ( `id` int(10) DEFAULT NULL, `name` varchar(50) DEFAULT NULL, `age` int(1) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8其中 id、name、age 是该表的三个不同字段,而每个类型+数字就是该字段的类型长度,比如 int(10)就是该字段是 int 类型长度为 10,这下大家应该能理解什么是 MySQL 表字段类型长度了吧(其实在后续的讲解中会发现这个并不是长度,而是宽度)

CREATE TABLE `table01` ( `id` int(11) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `num` int(10) unsigned DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8当插入负数时就会报错
INSERT into table01 VALUE(1,'zs',-10) ERROR 1264 (22003): Out of range value for column 'num' at row 1插入数据超过最大长度时也会报错
INSERT into table01 VALUE(2,'ls',1000000000000) ERROR 1264 (22003): Out of range value for column 'num' at row 1
CREATE TABLE `table03` ( `num1` int(10) DEFAULT NULL, `num2` int(10) unsigned zerofill DEFAULT NULL, `num3` int(5) unsigned zerofill DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8插入数据
insert into table03 value(1,1,1) insert into table03 value(11111,11111,11111) insert into table03 value(111111,111111,111111) insert into table03 value(12345678901,12345678901,12345678901)
结果:
CREATE TABLE `table04` ( `str1` varchar(10) DEFAULT NULL, `str2` varchar(1) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8插入数据:
insert into table04 value('a','a');
insert into table04 value('abc','abc');
报错:mysql> insert into table04 value('abc','abc');
ERROR 1406 (22001): Data too long for column 'str2' at row 1

create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
......
);
对某些值的宽度短于该列宽度的值进行左填补显示的,而不是为了限制在该列中存储值的宽度,也不是为了限制那些超过该列指定宽度的值的可被显示的数字位数,因此我们得出一下结论: