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命令时,可以用英文状态下的分号“;”来分割。

  • 相关阅读:
    Linux Shell 01 脚本与变量
    Linux下shell颜色配置
    Linux下Redis安装及配置
    Linux Shell 03 条件测试
    OSX下VirtualBox安装CentOS
    Log4j配置与使用
    Linux 环境变量的配置
    OS X下安装Redis及配置开机启动
    圈复杂度
    (转)Qt Model/View 学习笔记 (一)——Qt Model/View模式简介
  • 原文地址:https://www.cnblogs.com/xxyfhjl/p/4153737.html
Copyright © 2011-2022 走看看