MySQL的数据类型包括整数类型、浮点数类型、定点数类型、日期和时间类型、字符串类型和二进制数据类型。不同数据类型决定了数据的存储格式、有效范围和相应的限制。


1、整数类型

MySQL支持的整数类型如下表所示 

MySQL支持数据类型的名称后面指定该类型的显示宽度,基本形式如下:

数据类型(显示宽度)

显示宽度指能够显示的最大数据的长度。在不指定宽度的情况下,整数类型的默认显示宽度与其有符号数的最大值的显示宽度相同。如INT型为11,BIGINT型为20。 
但实际上,即使出入的数据的宽度大于了设置的显示宽度,但只要小于等于默认宽度,就可以正常完整的显示出来。

2、浮点数类型和定点数类型

浮点数类型和定点数类型用来表示小数。包括以下类型 

其中,定点数类型的M指精度,是数据的总长度。小数点并不占位置,D为标度,指小数点后的长度。当插入数据的精度高于实际定义的精度时,系统会自动进行四舍五入处理。浮点数类型FLOAT和DOUBLE在四舍五入时不会报错,但定点数类型DECIMAL会有警告。 
当未指定精度时,DECIMAL型会默认整数位为10,小数位为0,即默认为整数。 
由于定点数在MySQL中是以字符串形式存储的,其精度比浮点数高,而且浮点数会出现误差,在对数据精度要求高的情况下,选择DECIMAL比较安全。

3、日期和时间类型


当插入的数据值超过了该类型的取值范围时,系统会报错,并将相应的零值插入到数据库中。

3.1 Year类型

向Year类型插入数据时可以直接用数字也可以用字符串,对于低于4位的会自动转换,如输入32,‘78’,3,‘2’会分别转换为2032,1978,2003和2002。 
注意‘0’和‘00’都会转换为2000,而0会转化为0000。

3.2 Time类型

Time类型的数据赋值方式如下 
‘D HH:MM:SS’格式的字符串,或者’HHMMSS’格式的字符串或者HHMMSS格式的数值,其中D表示天数,取值范围为0~34,保存时会自动将D转换到HH处,如输入‘2 11:32:21’会转换为’59:32:21’,当然输入不必严格遵守上述格式,系统会自动转换,具体规则可以自己尝试。如’2 20’,’2 20:20’,’30’和’345454’会转换为’68:00:00’,’68:20:00’,’00:00:30’和’34:54:54’。即基本符合从左向右分配。 
当HH和SS的赋值大于60时,即此值无效,系统会报错,并将其转换为00:00:00。在输入数据合法但超出Time值范围时,会被裁为范围内最接近的端点,如’880:00:00’会转换为’838:59:59’。 
可以适用CURRENT_TIME和NOW()出入当前系统时间。

3.3 DATE类型

可以适用’YYYY-MM-DD’或’YYYYMMDD’格式的字符串、’YY-MM-DD’或’YYMMDD’格式的字符串、YYYYMMDD或YYMMDD格式的数字表示。 
同样可以使用CURRENT_DATE或者NOW()来输入当前系统日期。

3.4 DATETIME类型

DATATIME类型相当于DATE类型和TIME类型的组合。 
当某字段的数据类型为DATETIME时,使用NOW()可以输入当前系统日期和时间。

3.5 TIMESTAMP类型

与DATETIME类型相同点: 
- 显示格式相同 
- 复制方法相同 
- 用NOW()转为换系统当前时间 
与DATETIME类型不同点: 
- 比DATETIME类型范围小 
- 使用CURRENT_TIMESTAMP来输入系统当前日期和时间 
- 输入NULL或无任何输入时,系统自动输入系统当前日期和时间 
- 该类型能够根据不同的地区的时区来转换时间

4、字符串类型

字符串类型包括CHAR、VARCHAR、BLOB、TEXT、ENUM和SET。

4.1 CHAR和VARCHAR类型

两者都是在创建表时就指定了最大长度,基本形式如下

字符串类型(M)

注意CHAR类型的长度是固定的,永远是指定的M,其值可以是0~255的任意值。 
而VARCHAR类型的长度是可变的,创建时指定的M只是最大长度,可以取0~65535之间任意值。即在最大值M范围内使用多少分配多少,实际占用空间为字符串的实际长度加1,此1为字符串的结束标志符。因此会保存输入字符串最后的空格,而前者不会。 

当出入的字符串长度大于可插入最大值时,系统会阻止插入并报错。 
虽然VARCHAR比CHAR占用空间小、更灵活,但处理速度却比不上CHAR型,所以对于长度变化不大和查询速度要求较高的字符串类型,最好还是选择CHAR类型。

4.2 TEXT类型

TEXT类型只能保存字符数据,具体分类有 

4.3 ENUM类型

ENUM类型又称为枚举类型。在创建表时,其取值范围就以列表的形式制定了。基本形式如下

属性名 ENUM(‘值1’, ‘值2’, ···,’值n’)

其中,属性名指字段的名称,’值n’表示列表中的第n个值,这些值末尾的空格都会被系统直接删除。 
ENUM类型的值只能取列表中的一个元素。取值列表中最多可以有65535个值。列表中的每个值都有一个顺序排列的编号,MySQL中存储的是这个编号而非列表中的具体值。

4.4 SET类型

一般来说,如果只能选取列表中的一个值,就选择ENUM类型,如果需要选取列表中的多个值的组合,则需要选择SET类型。 
同样,在创建表时,其取值范围就以列表的形式制定了。基本形式如下

属性名 SET(‘值1’, ‘值2’, ···,’值n’)

具体同ENUM类型。 
在取多个元素时,不同元素之间用逗号隔开,SET类型的值最多只能是有64个元素构成的集合。同ENUM,存储的是编号而非具体值。 
插入记录时,SET字段中的元素顺序无关紧要,系统会自动按照定义时的顺序显示。 
如SET类型的取值类表为(‘A’,’B’,’C’,’D’,’E’),插入值为(‘B’)和(‘C,B,D’)时,结果显示为(B)和(B,C,D)。

5、二进制类型

5.1 BINARY和VARBINARY类型

类似于CHAR和VARCHAR类型的关系和使用方法。 
对于CHAR来说,不足最大长度的空间用“\0”补全。

5.2 BIT类型

BIT类型也是在创建表时指定了最大长度,基本形式为

BIT(M)

如字段的类型为BIT(4),则存储的数据是从0~15。 
在查询BIT类型的数据时,要用BIN(字段名+0)来将值转换为二进制显示。

5.3 BLOB类型

此为一种特殊的二进制类型,可以用来保存数据量很大的二进制数据,如图片等。包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。 
BLOB类型主要用来存储图片、PDF文档等二进制文件。通常来说,可以将这些文件存储在文件系统中,然后在数据库中存储这些文件的路径,这种方式比直接存储在数据库中简单,当然访问速度也会慢一些。

6、选择数据类型

在MySQL中创建表时需要考虑为字段选择哪种数据类型最合适。基本注意事项可以参考上述总结。 
下面是一些常见问题

6.1 可以存储路径的数据类型

6.2 BOOL类型

6.3 JPG和MP3等格式的储存

MySQL 入门(三)—— MySQL数据类型相关推荐

  1. MySQL入门 (三) : 运算式与函式

    运算式(expressions)已经在查询叙述中使用过,例如算数运算与「WHERE」子句中的条件判断. 虽然目前只有讨论查询资料的部份,不过你在任何地方都有可能使用运算式来完成你的工作. 一个运算式中 ...

  2. Mysql入门【Mysql基础】

    1.数据库的基本知识 什么是数据库 存储数据的仓库 数据的存储方式 数据保存在内存 int[] arr = new int[]{1, 2, 3, 4}; ArrayList<Integer> ...

  3. mysql取三个数据类型_MySQL(三)数据类型

    存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,宽度是可选的. 一.数值类型 1.整数类型:tinyint  smallint  mediumint  int   ...

  4. 2/5 MySQL入门总结:数据类型

    数据类型是指列.存储过程参数.表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型. 整型: 数据类型 存储范围 字节 TINYINT 有符号值:-128至127(2的7次方):无 ...

  5. Mysql入门【Mysql约束】

    学习目标 能够使用SQL语句进行排序 能够使用聚合函数 能够使用SQL语句进行分组查询 能够完成数据的备份和恢复 能够使用SQL语句添加主键.外键.唯一.非空约束 能够说出多表之间的关系及其建表原则 ...

  6. MySQL入门篇-MySQL配置文件简介

    备注:测试数据库版本为MySQL 8.0 这个blog我们来聊聊MySQL的配置文件以及常用的参数 MySQL配置文件 -- windows my.ini -- linux my.cnf 默认路径/e ...

  7. MYSQL 入门全套

    转载自  MYSQL 入门全套 MySQL简介 1.什么是数据库 ? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十 ...

  8. MySQL入门 (七) : 储存引擎与资料型态

    1 表格与储存引擎 表格(table)是资料库中用来储存纪录的基本单位,在建立一个新的资料库以后,你必须为这个资料库建立一些储存资料的表格: 每一个资料库都会使用一个资料夹,这些资料库资料夹用来储存所 ...

  9. MySQL入门 (六) : 字元集与资料库

    1 Character Set与Collation 任何资讯技术在处理资料的时候,如果只是单纯的数值和运算,那就不会有太复杂的问题:如果处理的资料是文字的话,就会面临世界上各种不同语言的问题. 以资料 ...

  10. MySQL入门 (五) : CRUD 与资料维护

    1 取得表格资讯 1.1 DESCRIBE指令 「DESCRIBE」是MySQL资料库提供的指令,它只能在MySQL资料库中使用,这个指令可以取得某个表格的结构资讯,它的语法是这样的: 你在MySQL ...

最新文章

  1. 明日开播 | 7 场不可错过的 AI 技术专题
  2. 程序员必知的操作系统知识点
  3. web前端技巧分享:vue过滤器的那点事!
  4. stata中计算公式命令_stata学习笔记(三):计算五年内的ROA标准差所用到的一些知识...
  5. 表格列求和_Excel表格的基本操作,包含制作一个表格10方面的知识
  6. dj鲜生-让应用的模型类生效,搬家到云服务器-非本地操作
  7. Nginx开启Gzip压缩配置详解
  8. 15款精美的 WordPress 电子商务网站模板
  9. Criteria和DetachedCriteria区别应用
  10. php语法介绍,PHP语法介绍
  11. idea新建web工程
  12. Python中的非可变型的数据类型(immutable type)
  13. html页面实现右下角弹窗提示,JS 实现右下角弹窗
  14. 基于JSP网上拍卖平台系统
  15. 各种说明方法的例句_举例子,列数字,作比较,打比方,这几个说明方法的例句...
  16. SQL2012数据库还原数据的时候提示: 还原数据库时失败解决方案
  17. 关于php的外文论文,php毕业设计外文翻译--通过PHP访问MySQL(适用于毕业论文外文翻译+中英文对照).doc...
  18. r730服务器安装系统蓝屏6,安装系统蓝屏解决解决方法
  19. PTA 7-256 五分制成绩(函数实现)
  20. 【读书笔记】Java并发编程的艺术

热门文章

  1. 16位灰度数据成像_DICOM Pixel Data核心图像信息数据介绍
  2. flask实现mysql连接池_mysql-Flask-SQLAlchemy-快速连接到多个数据库
  3. 月结 sap_SAP的SD模块:从DN到Billing再到Invoice
  4. sqlserver高可用方案_PowerJob 的自实现高可用方案,妙妙妙
  5. springboot session超时设置_Spring Boot+Spring Security:获取用户信息和session并发控制...
  6. 动态规划实战9 leetcode-91. Decode Ways
  7. html文件文本预处理,HTML文件文本信息预处理技术.pdf
  8. java 产生无重复的随机数,Java程序生成无重复的随机数
  9. php 微信公众号客服,微信公众平台开发多客服
  10. LLVM之clang