zoukankan      html  css  js  c++  java
  • mysql 我们眼中的int(10)

    自我总结,欢迎拍砖!

    目的:定义int(3)和int(10)真的有区别吗?

    论证:

    1.创建student,student2表

    分别定义一个student,student2表

      create table student(id int(5) not null primary key,name varchar(20));

      create table student2(id int(10) not null primary key,name varchar(20));

    分别在这两个表中插入一条数据:

      insert into student set id =007,name ='tom';insert into student2 set id =007,name ='tom';

    查询一下两个表的记录:

       select * from student,student2;

    发现没什么区别。

    2.增加属性值 [ zerofill ]

    那么给student2表id字段加一个属性值 [ zerofill ]:

      alter table student2 modify id int(10) zerofill not null;   //除了id主键属性不需要重新定义,其他属性均需要重新定义

    可观察一下student2表修改前后的变化:

    加[ zerofill ]属性时,默认会加上unsigned修饰,则此时int的实际长度范围为:0~4294967295(int占4个字节,即32位,2^32),去除了负整数部分

    此时,再查一下两个表,会发现:

    student2表中id的长度为10,现在知道 [ zerofill ]属性的作用了吧:将id的值用0补全至id的长度10,舍去负整数部分

    可以修改id的长度试一试,例如改成int(3),int(5),int(10),其实并不影响id的实际长度。

    例如给student表写入一条记录:

      insert into student set id = 555555,name ='test007';

    我们会发现:

    即使student表id的长度是5,也不会影响id长度大于5的记录的显示。

    总结:定义数据库int字段时,一般不需要设置它的长度,若非要设置则可以加属性 [ zerofill ]区分。

    PS:1)不管设置成int(?),int实际长度都是用4个字节(32位,最高位区分正负数),所以最大值为:2^31,大概20亿左右(10位10进制的数)。

       2)清空表命令:truncate table student;

       3)命令行执行多个SQL命令时,可以用英文状态下的分号“;”来分割。

  • 相关阅读:
    ExtJs 第二章,Ext.form.Basic表单操作
    linux centos 下php的mcrypt扩展
    curl_errno错误码说明
    centos 安装composer
    虚拟机centOs Linux与Windows之间的文件传输
    CentOS 6.4 linux下编译安装 LNMP环境
    CentOS 6.4 php-fpm 添加service 添加平滑启动/重启
    CentOS 6.4 linux下编译安装MySQL5.6.14
    centOS linux 下PHP编译安装详解
    centOS linux 下nginx编译安装详解
  • 原文地址:https://www.cnblogs.com/xxyfhjl/p/4153737.html
Copyright © 2011-2022 走看看