设为首页 收藏本站
查看: 546|回复: 0

[经验分享] 分析MySQL数据类型的长度

[复制链接]

尚未签到

发表于 2018-10-8 07:40:57 | 显示全部楼层 |阅读模式
  分析MySQL数据类型的长度
  mysql有几种数据类型可以限制类型的"长度",有CHAR(Length)、VARCHAR(Length)、TINYINT(Length)、SMALLINT(Length)、MEDIUMINT(Length)、INT(Length)、BIGINT(Length)、FLOAT(Length, Decimals)、DOUBLE(Length, Decimals)和DECIMAL(Length, Decimals)。
  然而,这些数据类型的长度,并不是都指数据的大小。具体说就是:
  (1)CHAR、VARCAHR的长度是指字符的长度,例如CHAR[3]则只能放字符串"123",如果插入数据"1234",则从高位截取,变为"123"。 VARCAHR同理。
  (2)TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT的长度,其实和数据的大小无关!Length指的是显示宽度,举个例子:
  [cpp] view plain copy

  •   mysql> create table test(id int(3) zerofill);
  •   Query OK, 0 rows affected (0.09 sec)

  •   mysql> insert into test(id) values(1),(1234);
  •   Query OK, 2 rows affected (0.06 sec)
  •   Records: 2  Duplicates: 0  Warnings: 0

  •   mysql> select * from test;
  •   +------+
  •   | id   |
  •   +------+
  •   |  001 |
  •   | 1234 |
  •   +------+
  •   2 rows in set (0.00 sec)
  可以看出,id的显示宽度为3,不足的左边补0,数据长度超过的则原样输出。如果没有zerofill,则看不出显示宽度,没有前导零。
  (3)FLOAT、DOUBLE和DECIMAL的长度指的是全部数位(包括小数点后面的),例如DECIMAL(4,1)指的是全部位数为4,小数点后1位,如果插入1234,则查询的数据是999.9。过程如下
  [cpp] view plain copy

  •   mysql> alter table test add realnum decimal(4,1);
  •   Query OK, 2 rows affected (0.03 sec)
  •   Records: 2  Duplicates: 0  Warnings: 0

  •   mysql> insert into test(id,realnum) values(2,1234);
  •   Query OK, 1 row affected, 1 warning (0.05 sec)

  •   mysql> select * from test;
  •   +------+---------+
  •   | id   | realnum |
  •   +------+---------+
  •   |  001 |    NULL |
  •   | 1234 |    NULL |
  •   |  002 |   999.9 |
  •   +------+---------+
  •   3 rows in set (0.02 sec)
  附录 常见MySQL数据类型(留作备忘)
  类 型
  大 小
  描 述
  CAHR(Length)
  Length字节
  定长字段,长度为0~255个字符
  VARCHAR(Length)
  String长度+1字节或String长度+2字节
  变长字段,长度为0~65 535个字符
  TINYTEXT
  String长度+1字节
  字符串,最大长度为255个字符
  TEXT
  String长度+2字节
  字符串,最大长度为65 535个字符
  MEDIUMINT
  String长度+3字节
  字符串,最大长度为16 777 215个字符
  LONGTEXT
  String长度+4字节
  字符串,最大长度为4 294 967 295个字符
  TINYINT(Length)
  1字节
  范围:-128~127,或者0~255(无符号)
  SMALLINT(Length)
  2字节
  范围:-32 768~32 767,或者0~65 535(无符号)
  MEDIUMINT(Length)
  3字节
  范围:-8 388 608~8 388 607,或者0~16 777 215(无符号)
  INT(Length)
  4字节
  范围:-2 147 483 648~2 147 483 647,或者0~4 294 967 295(无符号)
  BIGINT(Length)
  8字节
  范围:-9 223 372 036 854 775 808~9 223 372 036 854 775 807,或者0~18 446 744 073 709 551 615(无符号)
  FLOAT(Length, Decimals)
  4字节
  具有浮动小数点的较小的数
  DOUBLE(Length, Decimals)
  8字节
  具有浮动小数点的较大的数
  DECIMAL(Length, Decimals)
  Length+1字节或Length+2字节
  存储为字符串的DOUBLE,允许固定的小数点
  DATE
  3字节
  采用YYYY-MM-DD格式
  DATETIME
  8字节
  采用YYYY-MM-DD HH:MM:SS格式
  TIMESTAMP
  4字节
  采用YYYYMMDDHHMMSS格式;可接受的范围终止于2037年
  TIME
  3字节
  采用HH:MM:SS格式
  ENUM
  1或2字节
  Enumeration(枚举)的简写,这意味着每一列都可以具有多个可能的值之一
  SET
  1、2、3、4或8字节
  与ENUM一样,只不过每一列都可以具有多个可能的值


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-615404-1-1.html 上篇帖子: mysql 从库升级为主库的步骤 下篇帖子: centos 6.5安装MySQL 5.6.35-1024
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表