前言

每种编程语言都有自己所定义的数据类型,mysql也不例外,平时我们在创建表时,需要根据业务要求,结合存储、索引、字段临界值等条件来为字段定制不一样的类型。下面我们一起学习下mysql的几种常用的数据类型。

Mysql中分为三大数据类型:数值型,字符型,时间日期型

整型

mysql中整数型数据类型就有五种:
tinyint,smallint,mediumint,int,bigint

tinyint:迷你整型,占用1个字节保存数据,能够表示256个数值
smallint:小整型,占用2个字节保存数据,能够表示65536个数值
mediumint:中整型,占用3个字节保存数据
int:标准整型,占用4个字节保存数据,42亿多
bigint:大整型,占用8个字节保存数据

为什么要有这么多整型?

能够最大效率的使用磁盘空间,做到最少浪费。根据实际业务分配内存空间来进行数据保存。
查询的效率变高。
如何在项目中选择使用何种整型?
根据业务需求,某一类数据的边界值,看边界值落在那个整型的范围,就是用最小的那个。
在实际操作中tinyint,int使用的较多

整型表案例

默认的,整型都是有符号类型

无符号:表示数值只能是正的,不能有负数
语法:在字段类型后面使用unsigned进行标识

age tinyint unsigned;//年龄是一个迷你整型,无符号表示(0-255)

显示宽度:占的位数,当某个数值没有达到显示宽度的时候,在数值的左边使用0来补足显示宽度(不能改变数值本身大小)

默认的,系统不会进行0填充,需要给字段显示的增加一个属性:zerofill,0填充
系统默认显示的宽度是数据类型能够显示的最大宽度。
0填充有一个特点:使用0填充的字段必须为无符号类型,不能为负数进行0填充

00填充是专门用来配合显示宽度:显示宽度只是在数据的值没有达到指定宽度的时候使用0填充,0填充或者显示宽度都不会限制原来值的大小,值的大小由数据类型决定。

什么地方会使用显示宽度?
在一些需要使用0填充地方不改变原来值的大小,却能够用宽度来固定显示数据,保证前端数据的显示不会改变原来的css结构。比如说月份,日期,时间。

小数型

带有小数部分的数据。

mysql中小数型分为两种:浮点型,定点型

浮点型:float和double
float:采用4个字节保存数据
double:采用八个字节保存数据

浮点数的存储使用4个字节32位存储,第一位叫做符号位,会使用符号位后面的8位用来存储街码(底数+指数),其他的用来表示数据。
浮点数会丢失精度
float:最大有效位7位左右
double:最大有效位为15位左右

浮点数的使用方式

float(M,D):M表示整个长度,D表示小数位的长度

数据处理

浮点数只适用于那些对于数值精确要求不高,但是数量特别大的数据。
凡是跟钱相关绝对不用浮点数。

定点型:decimal
能够自动的扩展宽度来保存数据,保证数据的精度,基于小数部分,如果超出指定长度,仍然会进行四舍五入。

语法:decimal(M,D):M表示总长度,D表示小数部分的长度

定点型与浮点型区别

定点型的数据范围

decimal(65,30)
默认的,如果不使用括号标识decimal的长度,那么默认的是decimal(10,0);
凡是涉及到钱的都会在数据库端使用decimal来进行数据的存储和运算。

字符串型

mysql有以下字符串类型:

char,varchar,text,blob,enum,set

char

定长字符串,表示磁盘会分配固定长度的空间去存储数据
如果数据不够长度,空间依然被占用
如果数据超出长度,系统会报错
语法:char(L),L表示长度,L表示的字符长度,L的最大值是255
varchar

变长字符串,表示磁盘空间会根据实际数据的长度来自动分配存储空间,但是长度不能超过指定长度varchar(L),存储的数据只能小于或者等于L个字符,L的理论值是65535
varchar在存储之外还有一个额外的1到2个字节来保存当前varchar的实际占用长度
char和varchar对比(utf8) :一个字符 = 3个字节
字符 Char(4)占字节数 Varchar(4)占字节数 Char实占字节数 Varchar实占字节数
A 4 * 3 = 12 4 * 3 + 1 = 13 12 3 + 1 = 4
ABCD 4 * 3 = 12 4 * 3 + 1 = 13 12 13
char和varchar区别

char的效率比varchar要高
varchar比char节省空间

text:字符串文本

blob:二进制文本

在记录里面不计算长度(不占记录长度),基本可以“无限”存储数据

数据库的字符串类型有很多,但是是从数据库管理员的角度出发去考虑问题。

考虑磁盘空间的开销
考虑执行效率 作为PHP程序员,基本不考虑这些,只考虑如何能够方便PHP进行操作。所以真正配合PHP使用的字符串:char,varchar,和text

数据库的字符串类型有很多,但是是从数据库管理员的角度出发去考虑问题。

  1. 考虑磁盘空间的开销
  2. 考虑执行效率
    作为PHP程序员,基本不考虑这些,只考虑如何能够方便PHP进行操作。所以真正配合PHP使用的字符串:char,varchar,和text

时间日期型

timestamp时间戳并不能使用真正的时间戳

总结

以上介绍了我们平时常用的mysql类型,掌握好这几种类型,可以很好地应用在项目的业务中。当然,还有其他的类型大家也要去了解下,比如枚举类型,set类型等。


更多分享请关注【phper进阶笔记

MySQL数据类型详解:tinyint,smallint,mediumint,int,bigint的区别相关推荐

  1. MYSQL中TINYINT SMALLINT MEDIUMINT INT BIGINT的区分

    在MYSQL当中整形数据的存储有四种,分别是TINYINT SMALLINT MEDIUMINT INT BIGINT,它们的区分如下: 类型 存储大小(字节) 最小有符号数 最小无符号数 最大有符号 ...

  2. 【mysql】关于mysql中int(M)类型的具体含义以及tinyint/smallint/mediumint/int/bigint的区别是什么?

    之前定义数据库类型一直不理解int(M)的具体含义,M决定的是什么?不同M的值的区别是什么?tinyint / smallint / mediumint / int / bigint这些类型又有什么不 ...

  3. MySQL 五种整型数据类型的范围与区别 tinyint smallint mediumint int bigint

    之前在论坛上看到一个有意思的问题,如果有一个字段的值超过bigint,会发生什么. 然后就看到有人喷,说0.1秒插入一个值,将bigint设置为无符号,插入到极限需要多久,根本不可能遇到如何如何 . ...

  4. mysql tinyint int mediumint 用哪个好_MYSQL 字段类型之TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT...

    1. tinyint: 只能存储-128到127大小的数字, 不在乎后面的定义,如tinyint(9). 需1字节存储空间. 当加有UNSIGNED后,数字可以从0增加到255大小. dba@loca ...

  5. mysql修改字段类型为smallint_MYSQL 字段类型之TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT

    1. tinyint: 只能存储-128到127大小的数字, 不在乎后面的定义,如tinyint(9). 需1字节存储空间. 当加有UNSIGNED后,数字可以从0增加到255大小. dba@loca ...

  6. mysql权限和使用注意事项及mysql 数据类型详解和innodb,myisam区别

    mysql用户权限管理(Grant,Revoke) MySQL可以为不同的用户分配严格的.复杂的权限.这些操作大多都可以用SQL 指令Grant(分配权限)和Revoke(回收权限)来实现. Gran ...

  7. MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解

    MySQL数据库,从入门到精通:第十二篇--MySQL数据类型详解 第 12 章_MySQL数据类型精讲 1. MySQL中的数据类型 2. 整数类型 2. 1 类型介绍 2. 2 可选属性 2. 2 ...

  8. TINYINT, SMALLINT, MEDIUMINT, INT, and BIGINT类型的显示宽度不显示

    最近给学生上课发现一个奇怪的现象 发现int的长度没有显示出来 从官方的解释来看得知 从8.0.17版本开始,TINYINT, SMALLINT, MEDIUMINT, INT, and BIGINT ...

  9. mysql 1代表true(MySQL数据类型详解)

    [问题简介] MySQL是一种关系型数据库管理系统,其数据类型是数据库设计中的重要组成部分.在MySQL中,1代表true,但是这种数据类型的使用可能会引起一些混淆.本文将介绍MySQL数据类型中1代 ...

最新文章

  1. 基于Jquery插件Uploadify实现实时显示进度条上传图片
  2. 全中国一共有多少IP地址?
  3. 分区数据导出功能(服务端实现)
  4. pentaho DI--- Tutorial (spoon)
  5. html 地址 点击召唤高德,高德地图api 点聚合+海量点+点击事件(根据地区或坐标进行定位)...
  6. vision transformer(viT)教学视频【通俗易懂】
  7. 如何在Hadoop中控制MapReduce任务的数量
  8. error LNK2019 无法解析的外部符号 _WinMain@16,该符号在函数 “int __cdecl invoke_main(void)“
  9. 计算机信息检索自考知识点,计算机信息检索02139自考资料.doc
  10. 什么是LSI关键词?LSI关键词怎么用?2019
  11. 98点人脸关键点检测算法
  12. 【百度站长工具】使用网站收录工具加速网站收录
  13. C++——球的表面积和体积
  14. 简单概括HAPI(Houdini Engine API)所涵盖的功能
  15. 会议oa之排座和送审
  16. ABAP对excel的操作(合并单元格,设置边框)
  17. 基础篇——ROS入门:学习资料、基本介绍、安装配置、文件系统、包创建
  18. 作文总结思维导图怎么画?分享作文类型总结思维导图模板
  19. 2015.04.20,外语,读书笔记-《Word Power Made Easy》 11 “如何辱骂敌人” SESSION 30
  20. Helios Ethereum Client for Wallets and Dapp

热门文章

  1. 2019极光开发者大会 | 高转化率和高用户体验如何兼得?一次聊透
  2. arm64架构ubuntu18.04国内镜像源
  3. 孙溟㠭禅意篆刻《天地宽》《不染一尘》
  4. 开鸿智谷公司Niobe U4开发板正式合入OpenHarmony主干
  5. fgetpos()和fsetpos()
  6. JAVA给定一个长度,随机产生一个该长度的字符串,由大写,小写字母以及数字组成
  7. gmail_如何关闭GMail对话视图
  8. 阿里云视频云低代码音视频工厂正式上线,以vPaaS全新定义企业级音视频应用开发
  9. 职场秘籍|年终总结写得好 升职加薪少不了
  10. 第六季完美童模全球总决赛 全球十佳小超模 重磅公布