【重学 MySQL】五十八、文本字符串(包括 enum set)类型

news2024/11/26 1:27:08

【重学 MySQL】五十八、文本字符串(包括 enum set)类型

  • CHAR 和 VARCHAR
  • TEXT 系列
  • ENUM
  • SET
  • 示例
  • 注意事项

在这里插入图片描述
在 MySQL 中,文本字符串类型用于存储字符数据。这些类型包括 CHARVARCHARTEXT 系列(如 TINYTEXTTEXTMEDIUMTEXTLONGTEXT)、ENUMSET。每种类型都有其特定的用途和存储特性。

CHAR 和 VARCHAR

  • CHAR(n):

    • 固定长度字符类型。
    • 如果存储的字符串长度小于 n,则会在右侧填充空格以达到长度 n
    • 适用于存储长度几乎相同的字符串,如国家代码、邮政编码等。
    • 存储空间是固定的,不依赖于实际存储的字符串长度。
  • VARCHAR(n):

    • 可变长度字符类型。
    • 实际存储空间是字符串长度加上 1 或 2 个字节(用于存储字符串长度)。
    • 适用于存储长度变化较大的字符串,如人名、电子邮件地址等。
    • 最大长度为 65,535 字节(实际最大长度取决于字符集和最大行大小)。

哪些情况使用 CHAR 或 VARCHAR 更好

类型特点空间上时间上适用场景
CHAR(M)固定长度浪费存储空间效率高存储不大,速度要求高
VARCHAR(M)可变长度节省存储空间效率低非CHAR的情况
  • 情况1:存储很短的信息。比如门牌号码101,201……这样很短的信息应该用char,因为varchar还要占个byte用于存储信息长度,本来打算节约存储的,结果得不偿失。
  • 情况2:固定长度的。比如使用uuid作为主键,那用char应该更合适。因为他固定长度,varchar动态根据长度的特性就消失了,而且还要占个长度信息。
  • 情况3:十分频繁改变的column。因为varchar每次存储都要有额外的计算,得到长度等工作,如果一个非常频繁改变的,那就要有很多的精力用于计算,而这些对于char来说是不需要的。
  • 情况4:具体存储引擎中的情况:
    • MyISAM 数据存储引擎和数据列:MyISAM数据表,最好使用固定长度(CHAR)的数据列代替可变长度(VARCHAR)的数据列。这样使得整个表静态化,从而使数据检索更快,用空间换时间。
    • MEMORY 存储引擎和数据列:MEMORY数据表目前都使用固定长度的数据行存储,因此无论使用CHAR或VARCHAR列都没有关系,两者都是作为CHAR类型处理的。
    • InnoDB存储引擎,建议使用VARCHAR类型。因为对于InnoDB数据表,内部的行存储格式并没有区分固定长度和可变长度列(所有数据行都使用指向数据列值的头指针),而且主要影响性能的因素是数据行使用的存储总量,由于char平均占用的空间多于varchar,所以除了简短并且固定长度的,其他考虑varchar。这样节省空间,对磁盘I/O和数据存储总量比较好。

TEXT 系列

  • TINYTEXT:

    • 最大长度为 255 字节。
  • TEXT:

    • 最大长度为 65,535 字节(约 64 KB)。
  • MEDIUMTEXT:

    • 最大长度为 16,777,215 字节(约 16 MB)。
  • LONGTEXT:

    • 最大长度为 4,294,967,295 字节(约 4 GB)。
  • 特点:

    • 适用于存储大量文本数据,如文章、评论等。
    • 存储和检索速度通常比 CHARVARCHAR 慢。

ENUM

  • ENUM(‘value1’, ‘value2’, …, ‘valueN’):
    • 枚举类型,允许存储一个预定义集合中的一个值。
    • 枚举值在内部以整数存储,但显示时以字符串形式呈现。
    • 适用于存储具有固定选项集合的字段,如性别(‘男’, ‘女’)、状态(‘启用’, ‘禁用’)等。
    • 枚举值在定义时必须是字符串常量,且区分大小写。

SET

  • SET(‘value1’, ‘value2’, …, ‘valueN’):
    • 集合类型,允许存储一个预定义集合中的一个或多个值(以逗号分隔)。
    • 类似于 ENUM,但允许存储多个值。
    • 适用于存储具有多个选项的字段,如兴趣爱好(‘阅读’, ‘旅行’, ‘运动’)等。
    • 集合值在内部以整数存储,但显示时以字符串形式呈现。
    • 每个集合成员在定义时必须是字符串常量,且区分大小写。

示例

CREATE TABLE example (
    id INT AUTO_INCREMENT PRIMARY KEY,
    fixed_char CHAR(10),
    variable_char VARCHAR(255),
    short_text TINYTEXT,
    long_description TEXT,
    gender ENUM('Male', 'Female', 'Other'),
    hobbies SET('Reading', 'Traveling', 'Sports', 'Cooking')
);

INSERT INTO example (fixed_char, variable_char, short_text, long_description, gender, hobbies)
VALUES ('ABC     ', 'Variable Length String', 'Short Text', 'This is a long description.', 'Male', 'Reading,Sports');

注意事项

  1. 字符集和排序规则

    • 字符类型字段可以指定字符集和排序规则(collation),以支持多语言存储和比较。
    • 常用的字符集包括 utf8utf8mb4latin1 等。
  2. 存储和性能

    • CHARVARCHAR 类型的字段在存储和检索时通常比 TEXT 类型的字段更快。
    • 对于大量文本数据,使用 TEXT 类型字段更为合适。
  3. 索引

    • CHARVARCHARTEXT 字段都可以创建索引,但 TEXT 字段的索引有一些限制(如前缀索引)。
    • ENUMSET 字段也可以创建索引,且索引效率通常较高。

通过了解这些文本字符串类型及其特性,可以更好地设计数据库表结构,以满足不同应用场景的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2193219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙开发(NEXT/API 12)【管理应用与Wear Engine服务的连接状态】手机侧应用开发

监测应用与Wear Engine服务的连接状态 华为运动健康App在后台停止服务(如功耗过高),从而导致应用与Wear Engine服务的连接状态发生变化。对于类似这种不确定的断开情况,开发者可以通过本功能特性了解当前应用和Wear Engine的连接…

NatGo我的世界联机篇

书接上回 这里的TCP是JAVA,UDP是BE,选自适合你的映射类型 内网端口就填下面图片在你游戏同一个地方的数字!!! 就是我填12345的地方,mod-自定义局域网联机 默认 25565,如果出现无法创建本地游戏,那可能是端口被占用或…

卷积层是如何学习到图像特征的?

你好啊,我是董董灿。 想搞懂这个问题,需要先了解我们所说的特征指的是什么?然后再了解卷积核是如何学到的特征。 我们一步步来。 1、我们先来理解图像的特征 对于一张原始图像而言,说原始图像是相对于经过卷积处理而言的。 对…

【文心智能体】旅游攻略版,手把手教你调用插件实现智能体,绝对的干货满满!

1.灵感来源 需要创建一个智能体,首先当然是需要一个创作灵感啦,那么恰逢国庆假期,但是网上各种各样的旅游资料使我头晕目眩,刚好呢百度的文心智能体平台给我们提供了各种各样的插件以及知识库,可以供我们随心所欲地调…

嵌入式硬件设计中EDA布局与布线实现

大家好,今天主要给大家分享一下,如何使用立创EDA进行布局和布线,具体实现过程如下: 第一:PCB概念介绍 在介绍PCB的时候,先来说明一下,电子管的发明史。 贝尔在1876年发明了电话,爱迪生1879年发明了白炽灯、特斯拉于1888年发明了电动机,所有这些,都为电子学的诞生准…

2024 热门的4大电脑剪辑软件大盘点。

在电脑上进行视频剪辑能够让我们更好的发挥创意,制作出精彩的视频作品。同时也需要依赖一些比较专业的视频剪辑工具。这几款视频剪辑软件,无论是制作个人视频、商业广告还是电影预告片,都是非常不错的选择。 1、福昕电脑剪辑 直达链接&#…

vSAN05:vSAN延伸集群简介与创建、资源要求与计算、高级功能配置、维护、故障处理

目录 vSAN延伸集群延伸集群创建延伸集群的建议网络配置vSAN延伸集群的端口见证主机的资源要求vSAN延伸集群中见证节点带宽占用vSAN延伸集群的允许故障数vSAN延伸集群不同配置下的空间占用 vSAN延伸集群的HA配置vSAN延伸集群的DRS配置vSAN存储策略以及虚拟机/主机策略的互操作vS…

系统架构设计师③:数据块系统

系统架构设计师③:数据块系统 数据库模式 数据库模式是指数据库的结构和组织方式,它描述了数据库中数据的逻辑结构和组织方式,是数据库设计的核心组成部分。以下是关于数据库模式的详细解析: 一、定义与组成 定义:…

4款专业电脑数据恢复软件,帮你保障数据安全。

电脑里面会出现的数据丢失场景有很多,像硬盘故障、回收站清空、电脑格式化、系统崩溃、病毒入侵等等;如果发现数据丢失后,建议应停止使用电脑,避免新的数据写入覆盖丢失的数据。然后再尝试进行数据找回,如果想自己进行…

系统分析师16:系统测试与维护

1 内容概要 2 软件测试类型 2.1 测试类型 动态测试【计算机运行】 白盒测试法:关注内部结构与逻辑灰盒测试法:介于两者之间黑盒测试法:关注输入输出及功能 静态测试【人工监测和计算机辅助分析】 桌前检查代码审查代码走查以上三个都是做的…

【C++11】新特性

前言: C11 是C编程语言的一个重要版本,于2011年发布。它带来了数量可观的变化,包含约 140 个新特性,以及对 C03 标准中约600个缺陷的修正,更像是从 C98/03 中孕育出的新语言 列表初始化 C11 中的列表初始化&#xff0…

社群团购中的用户黏性价值:以开源小程序多商户AI智能名片商城源码为例

摘要:本文探讨社群团购中的用户黏性价值,分析其与传统团购网站的区别,并阐述开源小程序多商户AI智能名片商城源码在增强社群团购用户黏性方面可能发挥的作用。 一、引言 在当今的商业环境中,社群团购逐渐成为一种重要的营销模式。…

新个性化时尚解决方案!Prompt2Fashion:自动生成多风格、类型时尚图像数据集。

今天给大家介绍一种自动化生成时尚图像数据的方法Prompt2Fashion。 首先创建了一组描述,比如“适合婚礼的休闲风格服装”,然后用这些描述来指导计算机生成图像。具体来说,他们使用了大型语言模型来写出这些服装的描述,接着将这些描…

毕业设计 大数据电影数据分析与可视化系统

文章目录 0 简介1 课题背景2 效果实现3 爬虫及实现4 Flask框架5 Ajax技术6 Echarts7 最后 0 简介 今天学长向大家介绍一个机器视觉的毕设项目 🚩基于大数据的电影数据分析与可视化系统 项目运行效果(视频): 毕业设计 大数据电影评论情感分析 &#x1…

运动传感器

运动传感器 当你走近一些自动开关门、自动开关灯泡或自动启动自动扶梯的地方时,你是否会产生这样的疑问:**"它是怎么做到的? **它是怎么做到的? 如果有,本教程不仅会回答,还会告诉你如何制作。 让我们…

【Redis】Hash类型的常用命令

背景:redis中存储数据采取key-value键值对的形式,而hash内部也是键值对,为了区别这两个东西,hash内部的键值对称为:field-value,而redis的为key-value,这里的value包括:field-value。…

基于pytorch的手写数字识别

import pandas as pd import numpy as np import torch import matplotlib import matplotlib.pyplot as plt from torch.utils.data import TensorDataset, DataLoadermatplotlib.use(tkAgg)# 设置图形配置 config {"font.family": serif,"mathtext.fontset&q…

如何在华为云服务器查看IP地址,及修改服务器登录密码!!!

1.在华为云服务器查看IP地址 (1).第一步: 先找到控制台 (2).第二步: 点击华为云Flexus云服务 (3)第三步: 找到公网IP,就找到华为云服务器IP地址啦。 注意:在操作以上步骤的前提是要已注册华为云账号及购买云服务器…

PPPoE协议个人理解+报文示例+典型配置-RFC2516

个人认为,理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议。 因此本文将在PPPoE协议报文的基础上进行介绍。 PPPoE协议发展 关于PPPoE基本原理,可参考1999年发布的《RFC2516-A Method fo…