mysql 数据库中 int(3) 和 int(11) 有区别么???
今天去面试的时候 面试官问到了这个问题:int(3) 和 int(11) 有什么区别??
当时一听有点蒙,(不知道为什么蒙,后来回来想想可能是觉得考官怎么会问这么简单的问题呢,所以蒙了),当时我的回答是后面的数字代表的是最大能存储的数字的位数吧,但是int类型在mysql里面都是占用4个字节的,不管是3位数还是11位数都是占用4个字节。
考官听后没有任何的反馈信息给我,我当时还以为回答的完全没有问题呢,但是回来后我百思不得其解啊,为什么会问这么简单的问题呢??
然后我就google了一下,顿时发现,擦,MD 我的回答完全是自己臆想出来的。真实答案如下:
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个长度的数字,这是大错特错的。
其实当我们在选择使用int的类型的时候,不论是int(3)还是int(11),它在数据库里面存储的都是4个字节的长度,在使用int(3)的时候如果你输入的是10,会默认给你存储位010,也就是说这个3代表的是默认的一个长度,当你不足3位时,会帮你不全,当你超过3位时,就没有任何的影响。
===================================================================================================================
mysql 数据类型及占用字节数:
数字型所占用的字节数如下,根据字节数即可算出表示的范围了
TINYINT                                    1 字节 
SMALLINT                                 2 个字节 
MEDIUMINT                              3 个字节 
INT                                           4 个字节 
INTEGER                                   4 个字节 
BIGINT                                      8 个字节 
FLOAT(X)                                  4 如果 X < = 24 或 8 如果 25 < = X < = 53 
FLOAT                                       4 个字节 
DOUBLE                                    8 个字节 
DOUBLE PRECISION                  8 个字节 
REAL                                         8 个字节 
DECIMAL(M,D)                          M字节(D+2 , 如果M < D) 
NUMERIC(M,D)                          M字节(D+2 , 如果M < D)
日期和时间类型
列类型                                     需要的存储量 
DATE                                        3 个字节 
DATETIME                                 8 个字节 
TIMESTAMP                               4 个字节 
TIME                                         3 个字节 
YEAR                                         1 字节
字符串类型
列类型                                                需要的存储量 
CHAR(M)                                        M字节,1 <= M <= 255 
VARCHAR(M)                                 L+1 字节, 在此L <= M和1 <= M <= 255 
TINYBLOB, TINYTEXT                     L+1 字节, 在此L< 2 ^ 8 
BLOB, TEXT                                   L+2 字节, 在此L< 2 ^ 16 
MEDIUMBLOB, MEDIUMTEXT         L+3 字节, 在此L< 2 ^ 24 
LONGBLOB, LONGTEXT                 L+4 字节, 在此L< 2 ^ 32 
ENUM('value1','value2',...)                1 或 2 个字节, 取决于枚举值的数目(最大值65535) 
SET('value1','value2',...)                    1,2,3,4或8个字节, 取决于集合成员的数量(最多64个成员)
=================================================================================================================================
面试教训:
1、面试过程中遇到不会的问题,如实回答,不会就是不会。
2、很多东西基础很重要,最近要补习下各个方面的基础知识。
mysql 数据库中 int(3) 和 int(11) 有区别么???的更多相关文章
- MySQL数据库中的Date,DateTime,int,TimeStamp和Time类型的对比
		
DATETIME 用在你需要同时包含日期和时间信息的值时.MySQL检索并且以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,支持的范围是'1000-01-01 00:00:00 ...
 - MYSQL数据库中,常见的数据类型有哪些?它们与java中的数据类型如何对应
		
A.常规 映射 integer 或者 int int 或者 java.lang.Integer INTEGER 4 字节 long long Long BIGINT 8 字节 short short ...
 - 在mysql数据库中制作千万级测试表
		
在mysql数据库中制作千万级测试表 前言: 最近准备深入的学一下mysql,包括各种引擎的特性.性能优化.分表分库等.为了方便测试性能.分表等工作,就需要先建立一张比较大的数据表.我这里准备先建一张 ...
 - 【转】mysql数据库中实现内连接、左连接、右连接
		
[转]mysql数据库中实现内连接.左连接.右连接 内连接:把两个表中数据对应的数据查出来 外连接:以某个表为基础把对应数据查出来 首先创建数据库中的表,数据库代码如下: /* Navicat MyS ...
 - python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图
		
python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...
 - JDBC Java 程序从 MySQL 数据库中读取数据,并备份到 xml 文档中
		
MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 程序从 MySQL 数据库中读取数据,并 ...
 - MySQL数据库中delimiter的作用概述
		
以下的文章主要是向大家描述的是MySQL数据库中delimiter的作用是什么?我们一般都认为这个命令和存储过程关系不大,到底是不是这样的呢?以下的文章将会给你相关的知识,望你会有所收获. 其实就是告 ...
 - MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述
		
MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述: 1.MySQL有多种存储引擎: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(Berk ...
 - 从SQLSERVER/MYSQL数据库中随机取一条或者N条记录
		
从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 很多人都知道使用rand()函数但是怎麽使用可能不是每个人都知道 建立测试表 USE [sss] GO ,NAME ) DEFAULT ...
 - Oracle数据库中实现mysql数据库中auto-increment功能
		
在Mysql数据库中,想要实现一条数据的自增一功能(即插入此数据时填写null即可,系统自动+1),可直接在所在列使用语句auto-increment. id int primary key auto ...
 
随机推荐
- 阿里:MySQL数据库规范
			
阿里:MySQL数据库规范 简介:基于阿里数据库设计规范扩展而来 设计规范 1.[推荐]字段允许适当冗余,以提高查询性能,但必须考虑数据一致.冗余字段应遵循: 不是频繁修改的字段. 不是 varcha ...
 - 密码学系列之:加密货币中的scrypt算法
			
目录 简介 scrypt算法 scrypt算法详解 scrypt的使用 简介 为了抵御密码破解,科学家们想出了很多种方法,比如对密码进行混淆加盐操作,对密码进行模式变换和组合.但是这些算法逐渐被一些特 ...
 - Rclone使用教程 - 挂载Onedrive和谷歌网盘
			
1. 介绍 Rclone 是一个用于多个云平台之间同步文件和目录的命令行工具,其支持多种运营商网盘. 官网网址:https://rclone.org 开源地址:https://github.com/n ...
 - VMware中Linux虚拟机与Windows主机共享文件夹
			
VMware下Linux虚拟机与Windows主机共享文件夹 1. 安装vm-tool 2. 开启共享文件夹 虚拟机->设置->选项->共享文件夹"右边选择"总是 ...
 - Java(6)流程控制语句中分支结构if与switch
			
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201528.html 博客主页:https://www.cnblogs.com/testero ...
 - docsify + Gitee Pages服务搭建开源项目网站
			
前言 base-admin从开源至今,已经收获了2k Stat,而我们一直都没有一份像样的在线文档,最近写了一个博客园随笔备份Java脚本,将博客随笔备份到本地,格式是md文档格式,就有意去找将md文 ...
 - JDK 8中重要的函数式接口(必知必会)
			
JDK 8 提供的重要函数式接口: Consumer (消费者) 功能:接收一个对象,返回void. 定义:void accept(T t) 默认方法:Consumer andThen(Consume ...
 - Java字符串转数字和数字转字符串
			
int转String有3种方式 (1)num + "" (2)String.valueOf(num) (3)Integer.toString(num) String转int有2种方 ...
 - Redis:学习笔记-04
			
Redis:学习笔记-04 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 10. Redis主从复制 1 ...
 - mbps和MB/s是怎么换算的
			
Mbps即"传输速率",也叫"带宽".去营业厅开网线的时候会问开几兆的宽带,这里说的"几兆的宽带"就是指多少Mbps,但是Mbps和MB/s ...