当前位置: 首页 > article >正文

深入解析 MySQL 数据库:数据类型

在 MySQL 数据库中,数据类型(Data Types)用于定义表中每一列的性质,包括存储的数据形式及其操作。这些数据类型可以分为几大类:数值类型、日期和时间类型、字符串类型等。以下是对 MySQL 数据类型的深入解析。

  1. 整数类型 TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT
  2. 浮点类型 FLOAT、DOUBLE
  3. 定点数类型 DECIMAL
  4. 位类型 BIT
  5. 日期时间类型 YEAR、TIME、DATE、DATETIME、TIMESTAMP
  6. 文本字符串类型 CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT
  7. 枚举类型 ENUM
  8. 集合类型 SET
  9. 二进制字符串类型 BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB
  10. JSON类型 JSON对象、JSON数组
  11. 空间数据类型 单值类型:GEOMETRY、POINT、LINESTRING、POLYGON;
  12. 集合类型:MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION

常见数据类型的属性,如下:

MySQL关键字

含义

NULL

数据列可包含NULL值

NOT NULL

数据列不允许包含NULL值

DEFAULT

默认值

PRIMARY KEY

主键

AUTO_INCREMENT

自动递增,适用于整数类型

UNSIGNED

无符号

CHARACTER SET name

指定一个字符集

一、数值类型

数值类型用于存储数字,包括整数和浮点数。

1. 整数类型
  • TINYINT: 小整数,范围从 -128 到 127(或 0 到 255,若定义 UNSIGNED)。
  • SMALLINT: 小型整数,范围从 -32,768 到 32,767(或 0 到 65,535,若定义 UNSIGNED)。
  • MEDIUMINT: 中型整数,范围从 -8,388,608 到 8,388,607(或 0 到 16,777,215,若定义 UNSIGNED)。
  • INT: 整数,范围从 -2,147,483,648 到 2,147,483,647(或 0 到 4,294,967,295,若定义 UNSIGNED)。
  • BIGINT: 大整数,范围从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807(或 0 到 18,446,744,073,709,551,615,若定义 UNSIGNED)。
2. 浮点数类型
  • FLOAT: 单精度浮点数,范围约为 -3.402823466E+38 到 3.402823466E+38。
  • DOUBLE: 双精度浮点数,范围约为 -1.7976931348623157E+308 到 1.7976931348623157E+308。
  • DECIMAL(M, D): 精确的数值类型,M 是总位数,D 是小数位数。例如,DECIMAL(10, 2) 可以存储总共 10 位数字,其中 2 位在小数点后。

二、字符串类型

字符串类型用于存储文本数据。

1. 定长字符串
  • CHAR(M): 定长字符串,字符数为 M。若实际存储的字符少于 M 则用空格填充。
2. 变长字符串
  • VARCHAR(M): 变长字符串,最大字符数为 M。存储实际字符数加 1 或 2 字节用于记录长度。
3. 文本类型
  • TINYTEXT: 最多 255 字节的文本。
  • TEXT: 最多 65,535 字节的文本。
  • MEDIUMTEXT: 最多 16,777,215 字节的文本。
  • LONGTEXT: 最多 4,294,967,295 字节的文本。
4. 二进制字符串
  • BINARY(M): 定长二进制字符串,和 CHAR 类似。
  • VARBINARY(M): 变长二进制字符串,类似于 VARCHAR
  • TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB: 分别是对应 255 字节、65,535 字节、16,777,215 字节和 4,294,967,295 字节的二进制大对象(BLOB)。

三、日期和时间类型

日期和时间类型用于存储日期和时间值。

  • DATE: 日期,格式为 YYYY-MM-DD,范围为 1000-01-019999-12-31
  • DATETIME: 日期和时间,格式为 YYYY-MM-DD HH:MM:SS,范围为 1000-01-01 00:00:009999-12-31 23:59:59
  • TIMESTAMP: 时间戳,格式为 YYYY-MM-DD HH:MM:SS,范围为 1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC。
  • TIME: 时间,格式为 HH:MM:SS,范围为 '-838:59:59''838:59:59'
  • YEAR(M): 年,范围为 19012155,或者使用 2 位数字表示。

四、其他数据类型

  • ENUM: 枚举类型,可以存储在预定义的字符串列表中。每个值都有一个对应的整数索引。
CREATE TABLE example (  
  color ENUM('red', 'green', 'blue')  
);
  • SET: 一个字符串对象,可以有 0 个或多个值,从预定义的字符串列表中选择,采用集合形式。
CREATE TABLE example (  
  permissions SET('read', 'write', 'execute')  
);

五、结论

理解数据类型是进行数据库设计和优化的重要基础。选择合适的数据类型可以提高存储效率和查询性能。在设计数据库时,需根据业务需求合理选择数据类型,以确保数据的完整性和准确性。


http://www.kler.cn/a/371896.html

相关文章:

  • Kafka 基础入门
  • jenkins搭建及流水线配置
  • STM32 I2C通信:硬件I2C与软件模拟I2C的区别
  • 四、Prompt工程——简单应用
  • GiantPandaCVARM Neon Intrinsics 学习指北:从入门、进阶到学个通透
  • 如何从iconfont中获取字体图标并应用到微信小程序中去?
  • Rust精简核心笔记:第二波,语法精髓部分解锁
  • 十六:Python学习笔记-- 爬虫(2)requests 模块详解
  • 装饰器怎样实现
  • LeetCode --- 420周赛
  • 大数据新视界 -- 大数据大厂之大数据重塑影视娱乐产业的未来(4 - 3)
  • linux查看系统负载情况
  • STM32--I2C外设
  • Java AQS Semaphore 源码
  • Jenkins面试整理-什么是 Jenkins?
  • kettle8.3 Oracle连接运行一段时间后:Socket read timed out
  • ClickHouse 3节点集群安装
  • 香橙派Orangepi 5plus 配置Hailo-8/Hailo-8L
  • mariadb数据库中文乱码问题
  • 微服务之链路追踪Sleuth+zipkin
  • Linux 上使用 Docker 下载和运行 Redis
  • 智能家居10G雷达感应开关模块,飞睿智能uA级别低功耗、超高灵敏度,瞬间响应快
  • Web3的去中心化社交网络:区块链技术如何改变互动方式
  • 【ArcGISPro】制作简单的ArcGISPro-AI助手
  • HTML入门教程4:HTML属性
  • Android Studio Ladybug升级老项目遇到问题