mysql int 整数类型 解释显示宽度 和 存储宽度
存储宽度 是实际存储记录宽度
存储宽度默认是写死的,就算修改宽度也改变不了,改变的是显示宽度
============有符号和无符号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 整数类型 解释显示宽度 和 存储宽度的更多相关文章
- mysql中整数类型后面的数字,是不是指定这个字段的长度?比如int(11),11代表11个字节吗?
原文地址: http://www.cnblogs.com/stringzero/p/5707467.html 原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int ...
- mysql中整数类型后面的数字,比如int(11),11代表11个字节吗?
原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int(11)是指11个字节,int(10)就是10个字节.我错了. http://zhidao.baidu.com/li ...
- 将String类型转换为int整数类型
示例如下: public class demo { public static void main(String[] args) { String s="10"; 6 7 //St ...
- mysql格式化整数类型时间生成年月日时分秒格式(long或string接收)
数据库格式: 数据库mysql语句: FROM_UNIXTIME( s.timemodified, '%Y-%m-%d %h:%i:%s' ) 生成结果: 测试sql为: SELECT *, FROM ...
- Mysql数据类型《一》整数类型
数值类型 1. 整数类型 整数类型:TINYINT SMALLINT MEDIUMINT INT BIGINT 作用:存储年龄,等级,id,各种号码等 ======================== ...
- mysql整数类型
数值类型 1.整数类型 整型类型的后面的宽度,不是存储宽度,是显示宽度,不够位数用0添加,够位数使用原数据 整数类型:TINYINT SMALLINT MEDIUMINT INT BIGINT 作用: ...
- MySQL整数类型说明 int(11) vs int(20)
整数类型后面跟的是显示的宽度.M指示最大显示宽度.最大有效显示宽度是255.显示宽度与存储大小或类型包含的值的范围无关. 实践出真知: mysql> create table test2 ( a ...
- mysql整数类型int后面的长度有什么意义
int 的 SQL-92 同义字为 integer.SQL-92 是数据库的一个标准. int类型的存储大小为4个字节 unsigned(无符号) int 存储范围是 2^4*8 int(M) 中的M ...
- 详解mysql int类型的长度值问题【转】
mysql在建表的时候int类型后的长度代表什么? 是该列允许存储值的最大宽度吗? 为什么我设置成int(1), 也一样能存10,100,1000呢. 当时我虽然知道int(1),这个长度1并不代表允 ...
随机推荐
- Python学习笔记(三)——迭代
知识点 迭代 迭代 什么是迭代呢?和递归又有什么区别呢? 根据维基百科和网上的资料: 迭代:迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果.每一次对过程的重复被称为一次“迭代”, ...
- mysqldump进行数据库的全备时,备份数据库的顺序是什么,就是先备份哪个库,然后再备份哪个库
需求描述: 今天在用mysqldump工具进行数据库的备份的时候,突然想了一个问题,比如我有10个库要进行备份 那么是先备份哪个,然后再备份哪个呢,所以,做了实验,验证下. 操作过程: 1.使用--a ...
- ubuntu 执行make menuconfig ARCH=arm
1.ubuntu 执行make menuconfig ARCH=arm出错了!! *** Unable to find the ncurses libraries or the *** require ...
- python2.0_day18_django_ORM
Django_ORMday15\16我们学到的ORM都是最基本的增删改查.下面我们稍作升级,学习下高级点的增删改查.先创建一个新的APP项目 python3. manage.py startapp b ...
- 设置jQuery validate插件错误提示位置
参照上一篇bootstrap布局注册表单 使用校验插件默认位置显示提示信息,发现错误提示信息换行了,由于增加了提示信息,表单显示高度也增加了,如下 默认提示信息位置代码为 将错误提示设置其显示在右边, ...
- Dubbo(二) -- Simple Monitor
一.简介 dubbo-monitor-simple是dubbo提供的简单监控中心,可以用来显示接口暴露,注册情况,也可以看接口的调用明细,调用时间等. Simple Monitor挂掉不会影响到Con ...
- securecrt 的安装
http://bbs.feng.com/read-htm-tid-6939481.html ssh -t ip地址@用户名 -p 22
- Sublime Text 快捷键使用
Sublime Text 2包含了大量快捷操作,而且还很方便修改和追加自己喜欢的快捷键.查看快捷键的方式也很简单:------------------------------------------- ...
- 关于Ethread的一些研究
环境 win764 以TP为例 ring3保护 它会在windbg断下 这个时候我们需要拿到当前线程对象 应该到 当前使用的CPU的地址 _KPRCB-> CurrentThread 就是当前线 ...
- 【HTML】改变鼠标样式图片css
你需要一张图 .ico 的 格式 如果一开始你要解决的是怎么去用png 格式图片转成 ICO格式 先做一张32*32的PNG格式图片 然后 打开http://www.easyicon.net/co ...