1 bytes = 8 bit ,一个字节最多可以代表的数据长度是2的8次方 11111111 在计算机中也就是

-128到127

1.BIT[M]

位字段类型,M表示每个值的位数,范围从1到64,如果M被忽略,默认为1

2.TINYINT[(M)] [UNSIGNED] [ZEROFILL]  M默认为4

很小的整数。带符号的范围是-128到127。无符号的范围是0到255。

3. BOOL,BOOLEAN

是TINYINT(1)的同义词。zero值被视为假。非zero值视为真。

4.SMALLINT[(M)] [UNSIGNED] [ZEROFILL] M默认为6

小的整数。带符号的范围是-32768到32767。无符号的范围是0到65535。

5.MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] M默认为9

中等大小的整数。带符号的范围是-8388608到8388607。无符号的范围是0到16777215。

6. INT[(M)] [UNSIGNED] [ZEROFILL]   M默认为11

普通大小的整数。带符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。

7.BIGINT[(M)] [UNSIGNED] [ZEROFILL] M默认为20

大整数。带符号的范围是-9223372036854775808到9223372036854775807。无符号的范围是0到18446744073709551615。

注意:这里的M代表的并不是存储在数据库中的具体的长度,以前总是会误以为int(3)只能存储3个长度的数字,int(11)就会存储11个长度的数字,这是大错特错的。

tinyint(1) 和 tinyint(4) 中的1和4并不表示存储长度,只有字段指定zerofill是有用,
如tinyint(4),如果实际值是2,如果列指定了zerofill,查询结果就是0002,左边用0来填充。

---------------------

char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:

char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.

(在检索操作中那些填补出来的空格字符将被去掉)

在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).

在MySQL中用来判断是否需要进行对据列类型转换的规则

1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.

2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的.

3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型.

例外:长度小于4个字符的char数据列不会被转换为varchar类型

转自:http://www.jb51.net/article/31946.htm

mysql中int、bigint、smallint 和 tinyint的区别详细介绍的更多相关文章

  1. mysql中int、bigint、smallint 和 tinyint的区别与长度的含义

    最近使用mysql数据库的时候遇到了多种数字的类型,主要有int,bigint,smallint和tinyint.其中比较迷惑的是int和smallint的差别.今天就在网上仔细找了找,找到如下内容, ...

  2. mysql中int、bigint、smallint 和 tinyint的区别与长度的含义【转】

    最近使用mysql数据库的时候遇到了多种数字的类型,主要有int,bigint,smallint和tinyint.其中比较迷惑的是int和smallint的差别.今天就在网上仔细找了找,找到如下内容, ...

  3. Mysql中int和varchar类型

    int类型: int bigint smallint 和 tinyint 类型,如果创建新表时没有指定 int(M) 中的M时,默认分别是 : int           -------     in ...

  4. mysql中int、bigint、smallint、tinyint 长度

    mysql中int.bigint.smallint.tinyint 长度 bigint -2^63 (-9223372036854775808) 到 2^63-1 (92233720368547758 ...

  5. mysql整数字段 int bigint smallint tinyint

    mysql中int.bigint.smallint和tinyint的区别与长度 未完待续...

  6. mysql中int(M) tinyint(M)中M的作用

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

  7. mysql中的where和having子句的区别

    mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句 ...

  8. MySQL中char、varchar和text的区别

    三者空间占用方面: char:存储定长数据很方便,CHAR字段上的索引效率极高,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填 ...

  9. mysql中 REPLACE INTO 和 INSERT INTO 的区别

    mysql中 REPLACE INTO 和 INSERT INTO 的区别 REPLACE INTO 和 INSERT INTO 功能类似,都是像表中插入数据,不同点在于:REPLACE INTO 首 ...

随机推荐

  1. JAVA学习Swing章节按钮组件JButton的简单学习

    package com.swing; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; ...

  2. 匿名管道读取CMD回显信息

    之前用了很坑爹的做法去读取了cmd命令的回显信息,现在发现了用匿名管道的实现方法,由于楼主没有学过Windows核心编程,找了一个代码来凑数 存下来以后研究 #include <windows. ...

  3. 解决用navicate远程连接数据库出现1045 access denied for user 'root'@'localhost' using password yes

    在mysql命令行中执行 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');  GRANT ALL PRIVILEGES ON *.*  ...

  4. Spring第一天

    Spring框架 1.1:了解Spring Spring的核心是提供了一个容器,主要通过 BeanFactory(接口)来创建和管理对象,一般我们用它的子类ApplicationContext 来创建 ...

  5. NUnitForms 测试GUI应用程序的优秀工具

    著名的NUnit是单元测试的优秀工具,但是要在一个测试方法中启动GUI程序,比如Windows Form界面,这比较难做到.NUnitForms就是为解决这个问题产生的,它是NUnit的一个扩展程序, ...

  6. [推荐]Bitnami 开源软件包安装解决方案

    [推荐]Bitnami 开源软件包安装解决方案 Bitnami is an app store for server software. Install your favorite applicati ...

  7. 制作6寸 kindle pdf

    设置word 纸张大小为 90mm*117mm 然后保存为 pdf 就好了.

  8. android 图片占用内存与什么有关

    android 图片占用内存与什么有关 原文链接:http://blog.csdn.net/zjl5211314/article/details/7041813 在开发手机应用的时候,内存是有限的,那 ...

  9. hibernate spring annotation setup

    First step setup for the pom.xml with hibernate dependency , hibernate dependency need to before the ...

  10. 突然顿悟的Javascript中的this

    一直对Javascript中的this都有一种似是而非的感觉,今天突然感觉豁然开朗,特此记录一下. 咱们先看个栗子: <!DOCTYPE html> <html> <he ...