MYSQL--------选择合适的数据类型

char与varchar

  • char:固定长度字符串类型,无论实际存储的字符串长度是多少,都会占用固定长度的存储空间。适合存储长度固定的字符串,如身份证号码、邮政编码等,存储和查询效率较高,但如果存储的字符串长度差异较大,会浪费存储空间。
  • varchar:可变长度字符串类型,根据实际存储的字符串长度动态分配存储空间。适合存储长度不确定的字符串,如姓名、地址等,能节省存储空间,但在存储和查询时可能会有一些额外的开销。

text与blob

  • text:用于存储大量的文本数据,如文章内容、评论等。可以存储不同字符集的文本数据,并且支持全文搜索等功能,但不适合存储二进制数据。
  • blob:主要用于存储二进制大对象,如图像、音频、视频等二进制数据。它不关心数据的具体内容,只负责存储和读取二进制字节流,不支持文本处理功能。

浮点数与定点数

  • 浮点数:包括floatdouble,用于存储带有小数部分的数值。其特点是可以表示较大范围的数值,但在存储和计算时可能会存在精度问题,适用于对精度要求不高,需要表示较大范围数值的场景,如统计数据、科学计算等。
  • 定点数:使用decimal类型表示,它可以精确地存储小数,在金融、财务等对精度要求极高的领域中广泛应用,能够确保数据的准确性,避免因浮点数精度问题导致的计算错误。

日期类型选择

  • date:用于存储日期,格式为YYYY-MM-DD,只包含年、月、日信息,适合只需要记录日期,不需要时间信息的场景,如生日、纪念日等。
  • time:用于存储时间,格式为HH:MM:SS,只包含时、分、秒信息,可用于记录时间间隔、活动时长等。
  • datetime:可以存储日期和时间,格式为YYYY-MM-DD HH:MM:SS,能同时记录日期和具体时间点,常用于需要精确到具体时间的操作,如订单时间、登录时间等。
  • timestamp:也可以存储日期和时间,与datetime不同的是,它的取值范围较小,并且会根据时区进行转换,具有自动更新功能,常用于记录数据的创建时间或最后修改时间。

小结

在选择数据类型时,要根据数据的实际特点和业务需求来决定。对于固定长度的字符串,优先考虑char;对于可变长度的字符串,varchar更为合适。存储大量文本用text,存储二进制数据用blob。处理对精度要求高的数值用定点数,对精度要求不高、范围大的数值用浮点数。日期类型则根据具体是需要日期、时间还是两者都需要,以及是否需要自动更新等需求来选择。合适的数据类型选择可以提高数据库的性能、节省存储空间,并确保数据的准确性和完整性。

在这里插入图片描述

以下是使用上述数据类型的 MySQL 代码示例:

-- 创建一个表,展示不同数据类型的使用
CREATE TABLE data_type_examples (-- char 类型,存储长度为 18 的身份证号码id_card CHAR(18),-- varchar 类型,存储可变长度的姓名,最大长度为 50name VARCHAR(50),-- text 类型,存储文章内容article_content TEXT,-- blob 类型,存储二进制图像数据image_data BLOB,-- float 类型,存储不精确的小数,如统计数据average_score FLOAT,-- decimal 类型,存储精确的货币数据,精度为 10 位,小数部分为 2 位money_amount DECIMAL(10, 2),-- date 类型,存储生日birthday DATE,-- time 类型,存储工作时长work_duration TIME,-- datetime 类型,存储订单创建时间order_created DATETIME,-- timestamp 类型,存储最后修改时间last_modified TIMESTAMP
);-- 插入数据
INSERT INTO data_type_examples (id_card,name,article_content,image_data,average_score,money_amount,birthday,work_duration,order_created,last_modified
) VALUES ('123456789012345678','John Doe','This is a sample article content.',0x1234567890ABCDEF, -- 二进制数据示例,可存储图像、音频等二进制数据85.5,1234.56,'1990-01-01','08:30:00','2025-01-04 12:00:00',CURRENT_TIMESTAMP
);-- 查询数据
SELECT * FROM data_type_examples;-- 更新数据
UPDATE data_type_examples 
SET name = 'Jane Doe' 
WHERE id_card = '123456789012345678';-- 删除数据
DELETE FROM data_type_examples 
WHERE id_card = '123456789012345678';-- 修改表结构,将 name 的长度修改为 100
ALTER TABLE data_type_examples
MODIFY name VARCHAR(100);-- 为 average_score 添加索引
CREATE INDEX idx_average_score ON data_type_examples(average_score);-- 查看表结构
DESC data_type_examples;-- 删除表
DROP TABLE data_type_examples;

代码解释:

  • 创建表
    • CREATE TABLE data_type_examples:创建一个名为 data_type_examples 的表,其中包含了不同的数据类型,展示了 charvarchartextblobfloatdecimaldatetimedatetimetimestamp 等数据类型的使用。
    • 例如,id_card CHAR(18) 表示存储长度为 18 的身份证号码,article_content TEXT 用于存储较长的文章内容,image_data BLOB 存储二进制数据,money_amount DECIMAL(10, 2) 存储精度为 10 位,小数部分为 2 位的货币数据。
  • 插入数据
    • INSERT INTO data_type_examples:向表中插入一条数据,为每个字段赋值。对于 image_data 字段,使用十六进制表示二进制数据 0x1234567890ABCDEF
    • CURRENT_TIMESTAMP 用于自动插入当前时间到 last_modified 字段。
  • 查询数据
    • SELECT * FROM data_type_examples;:查询表中的所有数据。
  • 更新数据
    • UPDATE data_type_examples SET name = 'Jane Doe' WHERE id_card = '123456789012345678';:将 id_card123456789012345678 的记录的 name 修改为 Jane Doe
  • 删除数据
    • DELETE FROM data_type_examples WHERE id_card = '12345689012345678';:删除 id_card123456789012345678 的记录。
  • 修改表结构
    • ALTER TABLE data_type_examples MODIFY name VARCHAR(100);:将 name 字段的长度修改为 100。
  • 添加索引
    • CREATE INDEX idx_average_score ON data_type_examples(average_score);:为 average_score 字段添加索引,提高查询效率。
  • 查看表结构
    • DESC data_type_examples;:查看表的结构,包括字段名、数据类型、是否为 NULL、键信息等。
  • 删除表
    • DROP TABLE data_type_examples;:删除 data_type_examples 表。

这些代码示例展示了如何在 MySQL 中使用不同的数据类型,以及如何进行基本的数据操作,包括创建表、插入数据、查询、更新、删除、修改表结构和添加索引。在实际使用中,根据具体的业务需求和数据特点,灵活选择合适的数据类型可以提高数据库的性能和数据存储的有效性。

请注意,以上代码基于 MySQL 8.0 运行,不同的 MySQL 版本在某些细节上可能会有所不同。在使用二进制数据时,要确保数据的合法性和安全性,避免存储敏感信息。对于日期和时间类型,根据实际需求选择合适的类型,避免混淆。对于
float 类型的数据,要注意其精度问题,在对精度要求高的情况下使用 decimal
类型。同时,修改表结构和删除操作可能会影响数据,操作前请确保数据已备份或谨慎操作。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3 拆信封动画

snows_ls BLOGhttp://snows-l.site/ 一、效果如下 截图工具截图效果不是很好&#xff0c; 可以查看线上效果 信封 | snows_ls BLOGhttp://snows-l.site/about/like/envelope 二、源码如下 <!--* Description: ------------ fileDescription -----------* Author: snows_l …

用python编写一个放烟花的小程序

import pygame import random # 代码解释及使用说明&#xff1a; # 首先&#xff0c;导入 pygame 和 random 库。pygame 用于创建游戏窗口和图形绘制&#xff0c;random 用于生成随机数。 # 初始化 pygame&#xff0c;并设置屏幕尺寸为 800x600 像素&#xff0c;设置窗口标题为…

法律专业legal case的留学论文写作技巧分析(1)

对于法律专业的留学生而言&#xff0c;案例的分析是写作的重要方面。无论留学的国家是英、美、澳洲还是加拿大&#xff0c;它们都属于case law 的法律体系。一个非常显著的特点便是通过对案例进行分析和提炼&#xff0c;从中总结提炼出principle和rules。case analysis的留学论…

Jenkins 中自动化部署 Spring Boot 项目

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的全栈工程师 欢迎分享 / 收藏 / 赞 / 在看…

MetaGPT - 多Agent框架

文章目录 一、关于 MetaGPT功能介绍快速开始的演示视频教程 二、安装Pip安装Docker安装 一、关于 MetaGPT MetaGPT 为GPTs分配不同的角色&#xff0c;以形成一个协作实体来完成复杂的任务。 github : https://github.com/geekan/MetaGPTtwitter : https://twitter.com/MetaGP…

计算机网络 (15)宽带接入技术

前言 计算机网络宽带接入技术是指通过高速、大容量的通信信道或网络&#xff0c;实现用户与互联网或其他通信网络之间的高速连接。 一、宽带接入技术的定义与特点 定义&#xff1a;宽带接入技术是指能够传输大量数据的通信信道或网络&#xff0c;其传输速度通常较高&#xff0c…

计算机网络复习(大题)

&#x1f4e2;&#x1f4e2;&#x1f4e2;传送门 一、简答题&#xff08;1&#xff09;五层原理体系结构每层功能&#xff1a;&#xff08;2&#xff09;TCP建立连接三次握手过程&#xff1a;&#xff08;3&#xff09;访问浏览器的过程&#xff1a;&#xff08;4&#xff09;抓…

AI代码开发实践-微信小程序开发

接上回&#xff0c;本人参加了一次小孩学校组织的护学岗&#xff0c;萌生了开发一个微信小程序的水印相机的想法&#xff0c;说干就干。 最近也是在学习用AI编程&#xff0c;索性之前也用一点&#xff0c;今天就尝试一下 工具选择&#xff0c;环境搭建 阿里-通义灵码 通义灵…

基于Java的超级玛丽游戏的设计与实现【源码+文档+部署讲解】

目 录 1、绪论 1.1背景以及现状 1.2 Java语言的特点 1.3 系统运行环境及开发软件&#xff1a; 1.4 可行性的分析 1.4.1 技术可行性 1.4.2 经济可行性 1.4.3 操作可行性 2、 需求分析 2.1 用户需求分析 2.2功能需求分析 2.3界面设计需求分析…

麒麟服务器安装kafka--亲测

我这安装的是单机版本的&#xff1a; 下载地址&#xff1a;Index of /kafka/3.9.0 我下载的是&#xff1a;https://dlcdn.apache.org/zookeeper/zookeeper-3.9.3/apache-zookeeper-3.9.3-bin.tar.gz https://dlcdn.apache.org/kafka/3.9.0/kafka_2.12-3.9.0.tgz 一、下载并上…

基于HTML和CSS的旅游小程序

一、技术基础 HTML&#xff08;HyperText Markup Language&#xff09;&#xff1a;超文本标记语言&#xff0c;用于定义网页的内容和结构。在旅游小程序中&#xff0c;HTML用于搭建页面的基本框架&#xff0c;包括标题、段落、图片、链接等元素&#xff0c;以及用于交互的表单…

【操作系统不挂科】操作系统期末考试题库<1>(单选题&简答题&计算与分析题&应用题)

前言 大家好吖&#xff0c;欢迎来到 YY 滴 操作系统不挂科 系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 一.单项选择题&#xff08;每个空2分&#xff0c;共40分&#xff09; 1. 计算机的操作系统是一种&#xff08; B &#xff09;。 A. 应用软件…

Excel重新踩坑5:二级下拉列表制作;★数据透视表;

0、在excel中函数公式不仅可以写在单元格里面&#xff0c;还可以写在公式里面。 1、二级下拉列表制作&#xff1a; 2、数据透视表&#xff1a; 概念&#xff1a;通过拖拉就能实现复杂函数才能实现的数据统计问题。 概览&#xff1a;在插入选项中有个数据透视表&#xff0c;数…

【赵渝强老师】MongoDB写入数据的过程

在MongoDB数据更新时&#xff0c;WiredTiger存储引擎使用预写日志的机制先将数据更新写入到Journal日志文件中。然后在创建检查点操作开始时&#xff0c;再将日志文件中记录的操作刷新到数据文件。换句话说&#xff0c;通过预写日志和检查点机制可以保证将数据更新持久化到数据…

【双层模型】考虑供需双侧的综合能源双层优化模型

目录 主要内容 内容研究 1.模型简介 2 程序释义 部分代码 运行结果 下载链接 主要内容 该程序实现一个综合能源系统的优化调度双层模型&#xff0c;上下层分别采用差分进化算法和规划算法进行求解。模型考虑了多种能源设备&#xff0c;包括燃气轮机、燃气锅炉、风电…

Linux驱动开发(16):输入子系统–电容触摸驱动实验

有关电容触摸的基础知识内容可以参考野火STM32相关教程&#xff0c;这里只介绍电容触摸驱动的相关内容。 本章配套源码、设备树以及更新固件位于“~/embed_linux_driver_tutorial_imx6_code/linux_driver/touch_scream_GTxxx”目录下。 触摸面板通过双面胶粘在显示屏上&#…

QML自定义滑动条Slider的样式

代码展示 import QtQuick 2.9 import QtQuick.Window 2.2 import QtQuick.Controls 2.1Window {visible: truewidth: 640height: 480title: qsTr("Hello World")Slider {id: controlvalue: 0.5background: Rectangle {x: control.leftPaddingy: control.topPadding …

【项目开发】C#环境配置及VScode运行C#教程(学生管理系统)

原创文章,禁止转载。 文章目录 下载.NETVScode配置运行程序下载.NET 官网链接: https://dotnet.microsoft.com/en-us/download选择任意版本下载: 下载完成后,双击运行exe文件,等待安装完成。 在控制台输入: dotnet --version若出现版本信息,说明安装成功: VScode配…

卡码网 ACM答题编程模板

背景&#xff1a; input() 在 ACM 编程中的底层调用原理 1. input() 的核心原理 在 Python 中&#xff0c;input() 的底层实现依赖于标准输入流 sys.stdin。每次调用 input() 时&#xff0c;Python 会从 sys.stdin 中读取一行字符串&#xff0c;直到遇到换行符 \n 或文件结束…

Linux驱动开发(18):linux驱动并发与竞态

并发是指多个执行单元同时、并行执行&#xff0c;而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问 则很容易导致竞态。对于多核系统&#xff0c;很容易理解&#xff0c;由于多个CPU同时执行&#xff0c;多个CPU同时读、写共享资源时很容易造成竞态。…