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类型时,需要权衡其优势和限制,并根据具体的应用需求进行选择。

相关推荐
PGCCC14 分钟前
【PGCCC】Postgresql 存储设计
数据库·postgresql
PcVue China2 小时前
PcVue + SQL Grid : 释放数据的无限潜力
大数据·服务器·数据库·sql·科技·安全·oracle
魔道不误砍柴功4 小时前
简单叙述 Spring Boot 启动过程
java·数据库·spring boot
锐策4 小时前
〔 MySQL 〕数据库基础
数据库·mysql
远歌已逝5 小时前
管理Oracle实例(二)
数据库·oracle
日月星宿~5 小时前
【MySQL】summary
数据库·mysql
爱吃土豆的程序员5 小时前
在oracle官网下载资源显示400 Bad Request Request Header Or Cookie Too Large 解决办法
java·数据库·oracle·cookie
睿思达DBA_WGX6 小时前
Oracle 11g rac 集群节点的修复过程
数据库·oracle
尘浮生6 小时前
Java项目实战II基于微信小程序的移动学习平台的设计与实现(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·学习·微信小程序·小程序
希忘auto6 小时前
详解MySQL安装
java·mysql