北京h5网站建设,网站设计公司需要什么资质,水果电商网站开发方案,做销售在哪些网站注册好mysql数据库中数据类型的长度
在mysql中新建数据表的时候会有长度一说#xff0c;其实用建表语句建数据表的时候也有涉及
例如#xff1a;
CREATE TABLE user(
uid int(4),
name varchar(255),
passward varchar(20)
birthday data
)
不知道你有没有注意这个数据类型…mysql数据库中数据类型的长度
在mysql中新建数据表的时候会有长度一说其实用建表语句建数据表的时候也有涉及
例如
CREATE TABLE user(
uid int(4),
name varchar(255),
passward varchar(20)
birthday data
)
不知道你有没有注意这个数据类型后面的括号有什么玄机今天看了《Mysql 5.6 从零开始学》这本书算是把这个地方搞清楚了。
括号里的数字叫数据的宽度我们不能一概而论因为不同的数据类型对宽度的处理也不一样
1、整数类型这里显示的宽度和数据类型的取值范围是没有任何关系的显示宽度只是指明Mysql最大可能显示的数字个数数值的位数小于指定的宽度时会由空格填充如果插入了大于显示宽度的值只要该值不超过该类型的取值范围数值依然可以插入而且能够显示出来。
例如上面的udi显示的宽度是4但是我向uid中插入100001也是可以的保存和显示的都会是100001
如果你不设置宽度系统将添加默认的宽度 tinyint(4),smallint(6),mediumint(9),int(11),bigint(20),这些默认的宽度是跟该类型的取值范围长度相关。
2、字符串类型字符串类型这个宽度才真的用上了。不管是char还是varchar宽度都定义了字符串的最大长度
例如上面的 password varchar(20),如果你输入了一个21个字符的密码那么保存和显示的只会是前20个字符你将丢失一个字符信息char同理。由于varchar是变长存储的所以实际开发中我们一般都把varchar的宽度设为最长255反正你没用完它也不会浪费空间。
3、浮点和日期等数据类型对数据的宽度没有要求一般也不设置默认是0
mysql 各数据类型的 大小及长度
数字型
类型大小范围有符号范围无符号用途TINYINT1 字节(-128127)(0255)小整数值SMALLINT2 字节(-32 76832 767)(065 535)大整数值MEDIUMINT3 字节(-8 388 6088 388 607)(016 777 215)大整数值INT或INTEGER4 字节(-2 147 483 6482 147 483 647)(04 294 967 295)大整数值BIGINT8 字节(-9 233 372 036 854 775 8089 223 372 036 854 775 807)(018 446 744 073 709 551 615)极大整数值FLOAT4 字节(-3.402 823 466 E381.175 494 351 E-38)0(1.175 494 351 E-383.402 823 466 351 E38)0(1.175 494 351 E-383.402 823 466 E38)单精度 浮点数值DOUBLE8 字节(1.797 693 134 862 315 7 E3082.225 073 858 507 201 4 E-308)0(2.225 073 858 507 201 4 E-3081.797 693 134 862 315 7 E308)0(2.225 073 858 507 201 4 E-3081.797 693 134 862 315 7 E308)双精度 浮点数值DECIMAL对DECIMAL(M,D) 如果MD为M2否则为D2依赖于M和D的值依赖于M和D的值小数值
字符类型
CHAR0-255字节定长字符串VARCHAR0-255字节变长字符串TINYBLOB0-255字节不超过 255 个字符的二进制字符串TINYTEXT0-255字节短文本字符串BLOB0-65 535字节二进制形式的长文本数据TEXT0-65 535字节长文本数据MEDIUMBLOB0-16 777 215字节二进制形式的中等长度文本数据MEDIUMTEXT0-16 777 215字节中等长度文本数据LOGNGBLOB0-4 294 967 295字节二进制形式的极大文本数据LONGTEXT0-4 294 967 295字节极大文本数据
枚举集合
ENUM 最多65535个成员 64KB SET 最多64个成员 64KB
时间类型
类型大小 (字节)范围格式用途DATE31000-01-01/9999-12-31YYYY-MM-DD日期值TIME3‘-838:59:59’/‘838:59:59’HH:MM:SS时间值或持续时间YEAR11901/2155YYYY年份值DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值TIMESTAMP81970-01-01 00:00:00/2037 年某时YYYYMMDD HHMMSS混合日期和时间值时间戳
所以MySQL中int长度经常定义为11位包含所有范围。