MySQL数据类型介绍及使用场景

MySQL支持多种数据类型,足够满足日常开发需求了,下面就介绍一下各种数据类型,方便后续使用。

一:整数类型

  1. TINYINT (tinyint):占用1个字节,取值范围从-128到127,如果设置了UNSIGNED,则取值范围从0到255。适用于需要存储小范围整数的场景,例如存储年龄、月份、星期等。

  2. SMALLINT (smallint):占用2个字节,取值范围从-32768到32767,如果设置了UNSIGNED,则取值范围从0到65535。适用于需要存储稍大一些的整数的场景,例如存储年份、人口数量等。

  3. MEDIUMINT (mediumint):占用3个字节,取值范围从-8388608到8388607,如果设置了UNSIGNED,则取值范围从0到16777215。适用于需要存储中等范围整数的场景,例如存储文章字数、文件大小等。

  4. INT (int):占用4个字节,取值范围从-2147483648到2147483647,如果设置了UNSIGNED,则取值范围从0到4294967295。适用于需要存储大范围整数的场景,例如存储用户ID、订单号等。

  5. BIGINT (bigint):占用8个字节,取值范围从-9223372036854775808到9223372036854775807,如果设置了UNSIGNED,则取值范围从0到18446744073709551615。适用于需要存储非常大的整数的场景,例如存储大数据计算的结果等。

注意:在选择整数类型时,你应该根据你的数据范围和存储需求来选择最合适的类型,以节省存储空间并提高查询效率。

二:日期和时间类型

  1. DATE (date):用于表示日期,格式为'YYYY-MM-DD',取值范围从'1000-01-01'到'9999-12-31'。适用于需要存储日期但不需要存储时间的场景,例如生日、节假日等。

  2. TIME (time):用于表示时间,格式为'HH:MM:SS',取值范围从'-838:59:59'到'838:59:59'。适用于需要存储时间但不需要存储日期的场景,例如电影播放时间、运动比赛时间等。

  3. DATETIME (datetime):用于表示日期和时间,格式为'YYYY-MM-DD HH:MM:SS',取值范围从'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。适用于需要同时存储日期和时间的场景,例如会议时间、订单创建时间等。

  4. TIMESTAMP (timestamp):与DATETIME类似,也用于表示日期和时间,但其取值范围从'1970-01-01 00:00:01' UTC到'2038-01-19 03:14:07' UTC,并且TIMESTAMP会根据时区进行转换。适用于需要存储时间戳的场景,例如日志记录、事件发生的精确时间等。

  5. YEAR (year):用于表示年份,格式为'YYYY',取值范围从1901到2155,以及0000。适用于只需要存储年份的场景,例如出版年份、建筑年份等。

三:字符串类型

  1. CHAR (char):固定长度的字符串,长度范围从0到255个字符。当值的长度小于最大长度时,MySQL会在其后添加空格以达到最大长度。适用于存储长度固定的字符串,例如性别、国家代码等。

  2. VARCHAR (varchar):可变长度的字符串,长度范围从0到65535个字符。与CHAR不同,VARCHAR只存储实际需要的空间,因此更加节省空间。适用于存储长度可变的字符串,例如姓名、地址等。

  3. TINYTEXT (tinytext), TEXT (text), MEDIUMTEXT (mediumtext), LONGTEXT (longtext):用于存储大量文本数据。这些类型的最大长度分别为255个字符,65535个字符,16777215个字符和4294967295个字符。适用于存储大量的文本数据,例如文章内容、用户评论等。

  4. ENUM (enum):枚举类型,可以在创建表时定义可能的值,每个字段的值必须是枚举列表中的一个。适用于存储有限选项的场景,例如存储星期('Monday', 'Tuesday', 'Wednesday'等)或者状态('Open', 'Closed', 'Pending'等)。

  5. SET (set):集合类型,与ENUM类似,但每个字段的值可以是集合中多个值的组合。适用于存储可以有多个值的场景,例如用户的兴趣爱好等。

四:空间类型

主要用于GIS(地理信息系统)数据的存储和查询,例如地图应用、地理位置服务等

  1. GEOMETRY (geometry):这是所有空间类型的父类型,你可以用它来存储任何类型的空间数据。

  2. POINT (point):表示一个点在二维空间中的位置。

  3. LINESTRING (linestring):表示两个或多个点在二维空间中形成的线。

  4. POLYGON (polygon):表示在二维空间中形成的多边形。

  5. GEOMETRYCOLLECTION (geometrycollection):表示一个包含其他几何类型(如POINT, LINESTRING, POLYGON)的集合。

  6. MULTILINESTRING (multilinestring):表示多条线段。

  7. MULTIPOLYGON (multipolygon):表示多个多边形。

  8. MULTIPOINT (multipoint):表示多个点。

五:JSON类型

  1. JSON (json):json类型
JSON类型的主要特点包括:
  1. 存储和查询JSON数据:你可以将JSON数据直接存储在JSON类型的字段中,并使用内置的JSON函数来查询和操作这些数据。

  2. 动态结构:JSON类型允许存储具有不同结构的JSON数据,而不需要预定义固定的表结构。

  3. 索引支持:MySQL提供了对JSON类型字段的索引支持,可以加快查询JSON数据的速度。

  4. 内置JSON函数:MySQL提供了一系列内置的JSON函数,用于解析、提取、修改和操作JSON数据。

使用场景:
  1. 存储非结构化数据:JSON类型适用于存储非结构化的数据,例如日志、配置文件、用户自定义字段等。

  2. 存储嵌套数据:JSON类型可以存储嵌套的JSON数据,例如存储产品的属性、评论的回复等。

  3. 动态属性:如果你的数据具有动态的属性,即属性的数量和名称可能会变化,那么使用JSON类型可以更好地适应这种情况。

  4. 快速查询:如果你需要对JSON数据进行快速查询和过滤,使用JSON类型可以更方便地进行这些操作。

注意点:

虽然JSON类型提供了灵活性和便利性,但也有一些限制。例如,JSON类型不支持事务和外键约束,也不支持直接的关系型查询。因此,在选择使用JSON类型时,需要权衡其优势和限制,并根据具体的应用需求进行选择。

相关推荐
一屉大大大花卷1 小时前
初识Neo4j之入门介绍(一)
数据库·neo4j
叁沐1 小时前
MySQL 08 详解read view:事务到底是隔离的还是不隔离的?
mysql
周胡杰1 小时前
鸿蒙arkts使用关系型数据库,使用DB Browser for SQLite连接和查看数据库数据?使用TaskPool进行频繁数据库操作
前端·数据库·华为·harmonyos·鸿蒙·鸿蒙系统
wkj0011 小时前
navicate如何设置数据库引擎
数据库·mysql
ladymorgana1 小时前
【Spring Boot】HikariCP 连接池 YAML 配置详解
spring boot·后端·mysql·连接池·hikaricp
赵渝强老师1 小时前
【赵渝强老师】Oracle RMAN的目录数据库
数据库·oracle
暖暖木头1 小时前
Oracle注释详解
数据库·oracle
御控工业物联网2 小时前
御控网关如何实现MQTT、MODBUS、OPCUA、SQL、HTTP之间协议转换
数据库·sql·http
GJCTYU3 小时前
spring中@Transactional注解和事务的实战理解附代码
数据库·spring boot·后端·spring·oracle·mybatis
MicroTech20253 小时前
微算法科技(NASDAQ: MLGO)探索Grover量子搜索算法,利用量子叠加和干涉原理,实现在无序数据库中快速定位目标信息的效果。
数据库·科技·算法