【MySQL】数据类型

  1. MySQL中的数据类型
  • 整数类型:TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT
  • 浮点类型:FLOAT、DOUBLE
  • 定点数类型:DECIMAL
  • 位类型:BIT
  • 日期时间类型:YEAR、TIME、DATE、DATETIME、TIMESTAMP
  • 文本字符串类型:CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT
  • 枚举类型:ENUM
  • 集合类型:SET
  • 二进制字符串类型:BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOBLONGBLOB
  • JSON类型:JSON对象、JSON数组
  1. 整数类型

整数类型一共有 5 种,包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT。

|-------------|----|-------------------------------------------|-------------------------|
| 整数类型 | 字节 | 有符号数取值范围 | 无符号数取值范围 |
| TINYINT | 1 | -128~127 | 0~255 |
| SMALLINT | 2 | -32768~32767 | 0~65535 |
| MEDIUMINT | 3 | -8388608~8388607 | 0~16777215 |
| INT、INTEGER | 4 | -2147483648~2147483647 | 0~4294967295 |
| BIGINT | 8 | -9223372036854775808~9223372036854775807 | 0~18446744073709551615 |

3.浮点类型

  • FLOAT 表示单精度浮点数;
  • DOUBLE 表示双精度浮点数;

4.定点数类型

  • 使用 DECIMAL(M,D) 的方式表示高精度小数。
  • 其中,M被称为精度,D被称为标度。0<=M<=65,0<=D<=30,D<M。例如,定义DECIMAL(5,2)的类型,表示该列取值范围是-999.99~999.99。
  • DECIMAL(M,D)的最大取值范围与DOUBLE类型一样,但是有效的数据范围是由M和D决定的。
  • DECIMAL 的存储空间并不是固定的,由精度值M决定,总共占用的存储空间为 M+2 个字节。也就是说,在一些对精度要求不高的场景下,比起占用同样字节长度的定点数,浮点数表达的数值范围可以更大一些。
  • 当DECIMAL类型不指定精度和标度时,其默认为DECIMAL(10,0)。当数据的精度超出了定点数类型的精度范围时,则MySQL同样会进行四舍五入处理。

5.位类型:BIT

  • BIT类型,如果没有指定(M),默认是1位。这个1位,表示只能存1位的二进制值。这里(M)是表示二进制的位数,位数最小值为1,最大值为64。
  1. 日期与时间类型
  • YEAR:通常用来表示年
  • DATE:通常用来表示年、月、日
  • TIME:通常用来表示时、分、秒
  • DATETIME:通常用来表示年、月、日、时、分、秒
  • TIMESTAMP:通常用来表示带时区的年、月、日、时、分、秒

|-----------|------|----|---------------------|-------------------------|------------------------|
| 类型 | 名称 | 字节 | 日期格式 | 最小值 | 最大值 |
| YEAR | 年 | 1 | YYYY或YY | 1901 | 2155 |
| DATE | 日期 | 3 | YYYY-MM-DD | 1000-01-01 | 9999-12-03 |
| TIME | 时间 | 3 | HH:MM:SS | -838:59:59 | 838:59:59 |
| DATETIME | 日期时间 | 8 | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
| TIMESTAMP | 日期时间 | 4 | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:00 UTC | 2038-01-19 03:14:07UTC |

  1. 文本字符串类型

7.1 CHAR与VARCHAR类型

CHAR和VARCHAR类型都可以存储比较短的字符串。

|------------|------|----|-------------------|----------------|
| 字符串类型 | 特点 | 长度 | 长度范围 | 占用的存储空间 |
| CHAR | 固定长度 | M | 0 <= M <= 255 | M个字节 |
| VARCHAR(M) | 可变长度 | M | 0 <= M <= 65535 | (实际长度 + 1) 个字节 |

7.2 TEXT类型

|------------|-----------|----|-----------------------|----------|
| 文本字符串类型 | 特点 | 长度 | 长度范围 | 占用的存储空间 |
| TINYTEXT | 小文本、可变长度 | L | 0 <= L <= 255 | L + 2个字节 |
| TEXT | 文本、可变长度 | L | 0 <= L <= 65535 | L + 2个字节 |
| MEDIUMTEXT | 中等文本、可变长度 | L | 0 <= L <= 16777215 | L + 3个字节 |
| LONGTEXT | 大文本、可变长度 | L | 0 <= L<= 4294967295 | L + 4个字节 |

  1. ENUM类型
  • ENUM类型也叫作枚举类型,ENUM类型的取值范围需要在定义字段时进行指定。设置字段值时,ENUM类型只允许从成员中选取单个值,不能一次选取多个值。
  • 其所需要的存储空间由定义ENUM类型时指定的成员个数决定。
  1. SET类型
  • SET表示一个字符串对象,可以包含0个或多个成员,但成员个数的上限为64 。设置字段值时,可以取取值范围内的 0 个或多个值。
  • 当SET类型包含的成员个数不同时,其所占用的存储空间也是不同的
  1. 二进制字符串类型
  • MySQL中的二进制字符串类型主要存储一些二进制数据,比如可以存储图片、音频和视频等二进制数据。
  • MySQL中支持的二进制字符串类型主要包括BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和LONGBLOB类型。
  1. JSON 类型
  • JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。它易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
相关推荐
xrandzj7 小时前
MySQL8.0 从零通关核心操作手册(Ubuntu实战版)
数据库·mysql
我不会插花弄玉7 小时前
4.数据类型【由浅入深-MySQL】
数据库·mysql
好好学习的星熊10 小时前
SQL 面试题(数据分析师)
sql·mysql
破土士V10 小时前
MySQL基础知识集合
数据库·mysql
360智汇云11 小时前
MySQL-DTS数据同步工具:告别手动拼方案,迁移同步一站完成
数据库·mysql
宠友信息13 小时前
内容社区源码开发实践解析,用Spring Boot打造1:1仿小红书源码平台
java·spring boot·redis·websocket·mysql·spring·uni-app
λqaq715 小时前
MySQL 数据库基础(2)约束、用户权限、远程连接、外键与 TCP/UDP 理解
linux·数据库·python·tcp/ip·mysql
叫我:松哥16 小时前
基于flask图书数据管理系统,技术栈flask+MySQL+boostrap
python·mysql·flask
PHP实战开发录16 小时前
企业微信客户标签同步冲突排查记录
mysql·系统安全·php·企业微信·开发
又是重名了17 小时前
集团项目信创改造3 mysql to dm 插入获取主键
数据库·mysql·dameng