存储宽度 是实际存储记录宽度

存储宽度默认是写死的,就算修改宽度也改变不了,改变的是显示宽度

============有符号和无符号int=============

创建一个 无符号的 int 整数类型

mysql> create table t3(id int(1) unsigned);
Query OK, 0 rows affected (0.01 sec) mysql> desc t3;
+-------+-----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------------+------+-----+---------+-------+
| id | int(1) unsigned | YES | | NULL | |
+-------+-----------------+------+-----+---------+-------+
1 row in set (0.00 sec)

mysql> insert into t3 values(25555555);
Query OK, 1 row affected (0.00 sec) mysql> select * from t3;
+----------+
| id |
+----------+
| 25555555 |
+----------+
1 row in set (0.00 sec)

整数类型 最大  4个字节存储

无符号int类型 最大 这个数 4294967295   无符号范围0-4294967295 
mysql> insert into t3 values(25555555555555555555555555555555555);
Query OK, 1 row affected, 2 warnings (0.00 sec) mysql> select * from t3;
+------------+
| id |
+------------+
| 25555555 |
| 4294967295 |
+------------+
2 rows in set (0.00 sec)


自己定义宽度的 int(1) 没有限制现在存储 ,因为 mysql  不管是 tinyint 、int、bigint 整数类型 都不用设置宽度的
整数类型的那个设置宽度 不是存储宽度,而是显示宽度

对于tinyint、int、bigint的存储宽度 mysql已经固定死了,例如用tinyint mysql只用1个字节
int用4个字节、bigint8个字节,能改变的只有显示宽度
显示宽度设置5,int 最大存储宽度是4个字节
mysql> create table t4(id int(5) unsigned);
Query OK, 0 rows affected (0.01 sec) mysql> show tables;
+---------------+
| Tables_in_db4 |
+---------------+
| t1 |
| t2 |
| t3 |
| t4 |
+---------------+
4 rows in set (0.00 sec) mysql> desc t4;
+-------+-----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------------+------+-----+---------+-------+
| id | int(5) unsigned | YES | | NULL | |
+-------+-----------------+------+-----+---------+-------+
1 row in set (0.00 sec) mysql> insert into t4 values(1),(255);
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from t4;
+------+
| id |
+------+
| 1 |
| 255 |
+------+
2 rows in set (0.00 sec)
显示宽度 是查询表的时候,显示的结果的宽度
======用zerofill测试整数类型的显示宽度=============

再创建一张表t5 加上zerofill用0填充,加上这个可以看到显示宽度意思
mysql> create table t5(id int(5) zerofill);
Query OK, 0 rows affected (0.01 sec) mysql> insert into t5 values(1),(2);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0 mysql>
mysql> select * from t5;
+-------+
| id |
+-------+
| 00001 |
| 00002 |
+-------+
2 rows in set (0.00 sec)
如果插入的记录的宽度 超过设置的显示宽度他会正常显示

mysql> insert into t5 values(111111111111111111111111111111111111111111);
Query OK, 1 row affected, 2 warnings (0.00 sec) mysql> select * from t5;
+------------+
| id |
+------------+
| 00001 |
| 00002 |
| 4294967295 |
+------------+
3 rows in set (0.00 sec)

这个是显示宽度

不设置宽度时候
mysql> create table t6(id int unsigned);
Query OK, 0 rows affected (0.01 sec) mysql> desc t6;
+-------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id | int(10) unsigned | YES | | NULL | |
+-------+------------------+------+-----+---------+-------+
1 row in set (0.00 sec)
无符号int整数类型默认宽度是10字节,有符号int整数类型默认宽度是11字节

默认不加任何东西就是 有符号int整数类型
mysql> create table t7(id int);
Query OK, 0 rows affected (0.02 sec) mysql> desc t7;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

注意:为该类型指定宽度时,仅仅只是指定查询结果的显示宽度,与存储范围无关,存储范围如下

其实我们完全没必要为整数类型指定宽度,使用默认的就可以了

默认的显示宽度,都是在最大值的基础上加1

对于整数类型 没有必要设置宽度 设置的宽度是显示宽度,对于其他类型来说设置的宽度是  存储宽度

int的存储宽度是4个Bytes,即32个bit,即2**32

无符号最大值为:4294967296-1


有符号最大值:2147483648-1


有符号和无符号的最大数字需要的显示宽度均为10,而针对有符号的最小值则需要11位才能显示完全,所以int类型默认的显示宽度为11是非常合理的


最后:整形类型,其实没有必要指定显示宽度,使用默认的就ok

mysql int 整数类型 解释显示宽度 和 存储宽度的更多相关文章

  1. mysql中整数类型后面的数字,是不是指定这个字段的长度?比如int(11),11代表11个字节吗?

    原文地址:    http://www.cnblogs.com/stringzero/p/5707467.html 原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int ...

  2. mysql中整数类型后面的数字,比如int(11),11代表11个字节吗?

    原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int(11)是指11个字节,int(10)就是10个字节.我错了. http://zhidao.baidu.com/li ...

  3. 将String类型转换为int整数类型

    示例如下: public class demo { public static void main(String[] args) { String s="10"; 6 7 //St ...

  4. mysql格式化整数类型时间生成年月日时分秒格式(long或string接收)

    数据库格式: 数据库mysql语句: FROM_UNIXTIME( s.timemodified, '%Y-%m-%d %h:%i:%s' ) 生成结果: 测试sql为: SELECT *, FROM ...

  5. Mysql数据类型《一》整数类型

    数值类型 1. 整数类型 整数类型:TINYINT SMALLINT MEDIUMINT INT BIGINT 作用:存储年龄,等级,id,各种号码等 ======================== ...

  6. mysql整数类型

    数值类型 1.整数类型 整型类型的后面的宽度,不是存储宽度,是显示宽度,不够位数用0添加,够位数使用原数据 整数类型:TINYINT SMALLINT MEDIUMINT INT BIGINT 作用: ...

  7. MySQL整数类型说明 int(11) vs int(20)

    整数类型后面跟的是显示的宽度.M指示最大显示宽度.最大有效显示宽度是255.显示宽度与存储大小或类型包含的值的范围无关. 实践出真知: mysql> create table test2 ( a ...

  8. mysql整数类型int后面的长度有什么意义

    int 的 SQL-92 同义字为 integer.SQL-92 是数据库的一个标准. int类型的存储大小为4个字节 unsigned(无符号) int 存储范围是 2^4*8 int(M) 中的M ...

  9. 详解mysql int类型的长度值问题【转】

    mysql在建表的时候int类型后的长度代表什么? 是该列允许存储值的最大宽度吗? 为什么我设置成int(1), 也一样能存10,100,1000呢. 当时我虽然知道int(1),这个长度1并不代表允 ...

随机推荐

  1. HDFS特点

  2. Page与Loaded

    When navigate to page, loaded event will be triggered. Back to page, loaded event will be triggered ...

  3. 使用jquery.uploadify动态传递自己的参数

    上传碰到这个问题在上传文件的时候同时上传文件的类型..上网找了半天.总于解决了..分享一下了..直接例子了.. html <%@ page language="java" i ...

  4. 提高Web性能的前端优化技巧总结

  5. SQLServer------如何让标识列重新开始计算

    方法: DBCC CHECKIDENT (表名, RESEED, )

  6. Java精选笔记_国际化

    国际化 什么是国际化 指软件在开发时就应该具备支持多种语言和地区的功能,当应对不同国家和地区的用户访问,针对不同国家和地区的用户,提供相应的.符合来访者阅读习惯的页面和数据. 由于国际化interna ...

  7. php 如何得到不含前导0的时分秒

    通常我们获取时分秒是用 date("H:i:s") ,得到的效果是这样的 而如果想获取不含前导0的时分秒的话,就需要把前导0去掉. 如何去掉呢?我们来分析一下,07变7,20还是2 ...

  8. Linux 任务计划:crontab

    (1) 什么是任务计划:也就是设置服务器在某个指定的时间执行某个指定的任务,比如执行一个命令,或执行一个脚本(2) Linux 使用 cron 服务来制定任务计划,cron 是服务名称,crond 是 ...

  9. PHP防止跨站表单提交与同站跨页伪造表单的攻击

    在以前的防止跨站攻击的时候,使用了验证提交的页面是否是同一个站点,这样可以防止普通的攻击,ereg("blog.qita.in",$_SERVER['HTTP_REFERER']) ...

  10. web 前端规范实例

    <!DOCTYPE html> <html> <head> <title>tmall</title> <!-- 为了被搜索引擎作为流量 ...