MySQL数据类型及字段属性

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL 数据类型MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数值 日期/时间字符串(字符)数值类型MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE

MySQL 数据类型MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:

  1. 数值
  2. 日期/时间
  3. 字符串(字符)

数值类型

MySQL支持所有标准SQL数值数据类型。
这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。

这里写图片描述

日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个”零”值,当指定不合法的MySQL不能表示的值时使用”零”值。TIMESTAMP类型有专有的自动更新特性。

这里写图片描述

字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

这里写图片描述

char和varchar

CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。
3.char类型的字符串检索速度要比varchar类型的快。

varchar和text:

1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。
2.text类型不能有默认值。
3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

BINARY和VARBINARY

类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

二进制数据(_Blob)

BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求。
1._BLOB和_text存储方式不同,_TEXT以文本方式存储,英文存储区分大小写,而_Blob是以二进制方式存储,不分大小写。
2._BLOB存储的数据只能整体读出。
3._TEXT可以指定字符集,_BLO不用指定字符集。

MySQL字段属性

MySQL有如下字段属性:

MySQL关键字 含义
NULL 数据列可包含NULL值
NOT NULL 数据列不允许包含NULL值
DEFAULT 默认值
PRIMARY KEY 主键
AUTO_INCREMENT 自动递增,适用于整数类型
UNSIGNED 无符号
CHARACTER SET name 指定一个字符集

关于length属性

MySQL支持给一个数值类型添加一个length属性,它代表这个字段值的展示宽度。比如INT(4)定义了这个字段会按四个字符的宽度进行展示。这个功能有什么用呢?当我们在查询这个字段时,如果字段值小于定义的展示宽度,那么在展示时系统会自动在这个数值的左侧通过空格进行补齐。

这个length属性只是定义了展示数值的宽度,绝对不会影响数值实际存储的大小。不管我们定义的是INT(4)、INT(11)还是INT(20),我们最终存储的数值大小都占4个字节, 范围都是 (-2 147 483 648,2 147 483 647)。当实际存储的数值宽度大于我们定义的宽度时,会按实际宽度进行展示。比如我们定义的宽度时INT(5),而实际数值是123456共6位,那么查询时显示的还是123456。

总之一句话,length属性只会在实际数值宽度小于我们定义的宽度时才用空格进行补齐,任何情况下都不会影响实际数值的存储和展示。

关于zerofill属性

当length属性结合zerofill属性一起使用时,补齐的就不是空格了,而是0。比如我们定义的列属性为INT(4) ZEROFILL,如果数据库中存储的值是5的话,查询出来便会是0005。注意,此时数据库中的值依然是5,只是查询出来是0005。

关于unsigned属性

如果我们使用了unsigned,则存储的最大值翻倍,如tinyint unsigned的取值范围就由(-128~127)变成了(0~256)。
如果我们定义的列是zerofill的,那么MySQL会自动给这个列加上unsigned属性。

关于autoincrement属性

如果我们给一个列添加了autoincrement属性,那么当我们插入null或0值时,列值便会自动设置成下一个序列号,一般是当前value+1。注意,只有当列值属性设置为NOT NULL时,插入null值才会autoincrement,否则便会直接插入null值。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
机器学习/深度学习 弹性计算 TensorFlow
在阿里云上打造强大的模型训练服务
随着人工智能技术的迅猛发展,模型训练服务变得愈发关键。阿里云提供了一系列强大的产品,使得在云端轻松搭建、优化和管理模型训练变得更加便捷。本文将详细介绍如何使用阿里云的相关产品构建高效的模型训练服务。
1027 0
|
移动开发 小程序 前端开发
uniapp开发小程序H5页面顶部导航栏navigationBar如何隐藏?三种解决办法
uniapp开发小程序H5页面顶部导航栏navigationBar如何隐藏?三种解决办法
|
6月前
|
供应链 算法 量子技术
量子跃迁:量子计算在物流优化中的革命性应用
量子跃迁:量子计算在物流优化中的革命性应用
486 22
|
11月前
|
数据采集 机器学习/深度学习
港大发布智能交通大模型全家桶OpenCity!打破时空零样本预测壁垒,训练速度最多提升50倍
【10月更文挑战第15天】香港大学近日发布了智能交通大模型OpenCity,旨在通过创新技术手段解决城市交通预测和管理难题。OpenCity结合了Transformer和图神经网络(GNN)的优势,能够有效捕捉复杂时空依赖关系,实现零样本预测。该模型采用大规模异构交通数据集预训练,显著提升了泛化能力和训练速度,实验结果显示其在未见过的城市或区域的交通预测中表现出色。然而,模型的计算资源需求和数据质量仍需进一步优化。
177 1
|
存储 固态存储 Java
用软硬协同设计下的飞天盘古降低存储系统开销
历经 15 载,如今的飞天盘古系统已迭代至第三代,数千万行代码和 1,000 余项专利,从大规模、到高性能、到高效能的分布式存储系统的演进,更高效地让数据中心成为一台计算机。
140285 142
用软硬协同设计下的飞天盘古降低存储系统开销
|
虚拟化
Kali——环境安装与配置
Kali——环境安装与配置
305 0
|
数据采集 JavaScript 前端开发
Puppeteer-py:Python 中的无头浏览器自动化
Puppeteer-py:Python 中的无头浏览器自动化
Axure 列表左右滑动交互-删除、置顶
Axure 列表左右滑动交互-删除、置顶
459 0
|
Shell Linux Perl
在Linux中,编写一个shell脚本,用于统计指定目录下所有文件的行数。
在Linux中,编写一个shell脚本,用于统计指定目录下所有文件的行数。
|
SQL 分布式计算 DataWorks
MaxCompute操作报错合集之在大数据计算MaxCompute中,原表里面有数据不能删,用alter table报错DDL is not enabled,怎么修改字段类型
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。

热门文章

最新文章