MySQL数据类型(一)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL数据类型

一、数据类型初识

决定了存储数据时应该开辟的空间大小

决定了如何识别一个特定的二进制序列

决定了数据的取值范围

59ccc9b259d64d8b99ef967f7069d8cd.png


注意:MySQL本身是不支持bool类型的,当把一个数据设置成bool类型时,数据库会自动将其转换成tinyint(1)的数据类型,其实这个就是变相的bool类型,因为tinyint(1)只有1和0两种取值,可以分别对应bool类型的true和false


二、数值类型

2.1 tinyint类型

有符号tinyint范围测试


创建一个表,表当中包含一个tinyint类型的列,默认其为有符号类型


ae32eedf978247b6a9b03325a351677e.png


由于tinyint类型占用1字节,因此有符号tinyint的取值范围为-128~127,插入该范围内的数据时都能成功插入


4f40ad2fd7f14cd2b3a94fa9dee91f7e.png


若插入的数据不在-128~127范围内,那么就会发生报错


5566bd29670a4425b34204eba4af7d2a.png


无符号tinyint范围测试


创建一个表,表当中包含一个tinyint类型的列,并指定其为无符号类型

bfe3896c731345d8b982d8611b5ebe06.png



由于tinyint类型占用1字节,因此无符号tinyint的取值范围为0~255,插入该范围的数据时都能成功插入


3225c24d48214638b889a404e36877b7.png


若插入的数据不在0~255范围内,那么就会发生报错


355c24c12ebb49b9b031cb60f56bb79f.png


除非场景要求数值类型必须是无符号,否则尽量不要使用无符号,因为有符号的数值类型存不下的数据,其对应的无符号类型同样可能存不下,这时应直接将数值类型提升


2.2 bit类型

bit类型的显示方式


创建一个表,表中包含一个int类型的id列和一个8位bit类型的data列

f9328a56060a49848b4b6dddaae358d3.png



表中插入一条记录,记录中指定id和data的值均为10,插入记录后查看表会发现data的值显示的并不是10


eff86672de354d799301fcb509b8da90.png


根本原因是因为bit类型在显示时,是按照ASCII码对应的值进行显示的,而在ASCII码表中10对应的是控制字符LF,表示换行的意思。若向表中插入记录时指定id和data的值均为65,由于ASCII码表中65对应的是字符A,因此插入记录后查看表就会发现data的值显示的是A


a105e06169804679b9b93ad47f9c9c1f.png


bit类型的范围测试


创建一个表,表中包含用户名name和用户性别gender,其中gender的类型可以指定为1位bit类型,因为性别只有男和女两种取值,使用1个bit位来表示用户性别可以节省空间



a40068920fec43fa8a7e24a3f43b2aac.png

若规定gender列插入0表示男,插入1表示女,那么在插入用户信息时就可通过插入0和1来指定用户的性别


b575e11828954aceb1021ae862868ecc.png


若插入gender列的数据不是0或1,那么插入数据时就会发生报错


2fe18221fb79467a915dbda43b6bd83d.png


虽然MySQL提供了位类型bit,但不建议将数据类型设置成位类型,除非将来这个数据本身就只给程序看,并且数据本身非常占用资源

因为查询位类型数据时,默认会按照ASCII码对应的值进行显示,这对于数据库管理员维护数据库或程序员调试程序都不太方便

2.3 float类型

有符号float范围测试


创建一个表,表中包含一个float(4,2)类型的列,默认其为有符号类型


283ceee69ee74d72a6388220a5dff0ef.png


由于float(4,2)的取值范围为-99.99~99.99,因此插入该范围内的数据都能成功插入



a905423d03a74831967abab37ab0465f.png

由于MySQL在保存值时会进行四舍五入,因此实际可插入float(4,2)的范围为-99.994~99.994,若插入的数据不在该范围内,那么插入数据时就会报错


cab80ba601744d428f851957bedd5660.png


无符号float范围测试


创建一个表,表中包含一个float(4,2)类型的列,并指定其为无符号类型


db5d80840ed945afbc21fcb0f5f22be0.png


无符号float类型的取值范围,实际就是把对应有符号float类型中的负数部分拿走了,因此float(4,2)的取值范围为0~99.99,实际可插入的范围是0~99.994

307628ec64c34468941e698f598e46e3.png



2.4 decimal类型

decimal的精度更高


decimal和float类型的使用方式相同,但decimal的精度比float更高。创建一个表,表中分别包含一个float(10,8)的列和一个decimal(10,8)的列


67a53cd63cc246d2ad0eed65a11f99f2.png


向表中插入一条记录,指定float和decimal的值均为23.12345612,但最终查表时会发现decimal保持了数据的原貌,而float则会存在一定的精度损失


51bed9cf7c81401da62f97ecc7c7bf59.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
关系型数据库 MySQL 数据库
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
34 5
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据类型详解及实例应用
MySQL数据类型详解及实例应用
|
5月前
|
存储 关系型数据库 MySQL
MySQL数据库的数据类型、语法和高级查询
MySQL数据库的数据类型、语法和高级查询
72 0
|
1月前
|
存储 关系型数据库 MySQL
MySQL支持多种数据类型
MySQL支持多种数据类型
108 3
|
1月前
|
存储 关系型数据库 MySQL
什么是mysql的数据类型?
什么是mysql的数据类型?
47 2
|
1月前
|
存储 关系型数据库 MySQL
MySQL数据类型
MySQL数据类型
52 2
|
6月前
|
SQL 存储 关系型数据库
RDS for MySQL的SQL分类与数据类型
小明需在MySQL中管理商品信息,使用SQL完成业务操作。SQL分为DQL(查询)、DML(增删改)、DDL(定义)、DCL(权限控制)和TCL(事务)五大类。DDL用于创建、修改和删除数据库结构,DML处理数据,DCL控制权限,TCL管理事务,DQL则用于查询数据。MySQL有多种数据类型,如数值型(整数、小数)、日期型和字符串型等,选择合适的数据类型是高效开发的关键。
69 0
|
3月前
|
关系型数据库 MySQL Linux
数据类型和运算符(MySQL服务器的安装,MySQL客户端,数据类型,运算符,MySQL的语法规范)
无论是对于初学者还是有经验的开发者,了解MySQL的安装、客户端使用、数据类型、运算符和语法规范都是至关重要的。这不仅有助于高效地管理和查询数据,而且对于设计和实现数据库解决方案来说是基础工作。通过深入学习和实践这些知识,您可以更好地发挥MySQL数据库的强大功能。
34 2
|
3月前
|
存储 关系型数据库 MySQL
MySQL 中的 BLOB 数据类型深入解析
【8月更文挑战第31天】
449 0
|
3月前
|
存储 关系型数据库 MySQL
下一篇
无影云桌面