首页 > 语言 > 关键词  > MySQL最新资讯  > 正文

MySQL的数据类型和建库策略详解

2008-05-08 14:14 · 稿源:互联网

无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用数据类型有充分的认识。下面我就将我的一点心得写出来跟大家分享。

一、数字类型。数字类型按照我的分类方法分为三类:整数类、小数类和数字类。

我所谓的“数字类”,就是指DECIMAL和NUMERIC,它们是同一种类型。它严格的说不是一种数字类型,因为他们实际上是将数字以字符串形式保存的;他的值的每一位(包括小数点)占一个字节的存储空间,因此这种类型耗费空间比较大。但是它的一个突出的优点是小数的位数固定,在运算中不会“失真”,所以比较适合用于“价格”、“金额”这样对精度要求不高但准确度要求非常高的字段。

小数类,即浮点数类型,根据精度的不同,有FLOAT(单精度)和DOUBLE(双精度)两种。它们的优势是精确度,FLOAT可以表示绝对值非常小、小到约 1.17E-38 (0.000...0117, 小数点后面有37个零)的小数,而DOUBLE更是可以表示绝对值小到约 2.22E-308 (0.000...0222,小数点后面有307个零)的小数。FLOAT类型和DOUBLE类型占用存储空间分别是4字节和8字节。如果需要用到小数的字段,精度要求不高的,当然用 FLOAT了!可是说句实在话,我们“民用”的数据,哪有要求精度那么高的呢?这两种类型至今我没有用过——我还没有遇到适合于使用它们的事例。

用的最多的,最值得精打细算的,是整数类型。从只占一个字节存储空间的TINYINT到占8个字节的BIGINT,挑选一个“够用”并且占用存储空间最小的类型是设计数据库时应该考虑的。TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT占用存储空间分别为1字节、2字节、3字节、4字节和8字节,就无符号的整数而言,这些类型能表示的最大整数分别为255、65535、16777215、4294967295和 18446744073709551615。如果用来保存用户的年龄(举例来说,数据库中保存年龄是不可取的),用TINYINT就够了;九城的《纵横》里,各项技能值,用SMALLINT也够了;如果要用作一个肯定不会超过16000000行的表的AUTO_INCREMENT的IDENTIFY字段,当然用 MEDIUMINT 不用 INT ,试想,每行节约一个字节,16000000行可以节约10兆多呢!

二、日期时间类型。

日期和时间类型比较简单,无非是 DATE、TIME、DATETIME、TIMESTAMP和YEAR等几个类型。只对日期敏感,而对时间没有要求的字段,就用DATE而不用 DATETIME是不用说的了;单独使用时间的情况也时有发生——使用TIME;但最多用到的还是用DATETIME。在日期时间类型上没有什么文章可做,这里就不再详述。

三、字符(串)类型。

不要以为字符类型就是 CHAR !CHAR和VARCHAR的区别在于CHAR是固定长度,只要你定义一个字段是CHAR(10),那么不论你存储的数据是否达到了10个字节,它都要占去10个字节的空间;而VARVHAR则是可变长度的,如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的,VARCHAR 类型的实际长度是它的值的(实际长度+1)。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度呀!从这个“+1”中也应该看到,如果一个字段,它的可能值最长是10个字符,而多数情况下也就是用到了10个字符时,用VARCHAR就不合算了:因为在多数情况下,实际占用空间是11个字节,比用 CHAR(10)还多占用一个字节!

举个例子,就是一个存储股票名称和代码的表,股票名称绝大部分是四个字的,即8个字节;股票代码,上海的是六位数字,深圳的是四位数字。这些都是固定长度的,股票名称当然要用 CHAR(8) ;股票代码虽然是不固定长度,但如果使用VARVHAR(6),一个深圳的股票代码实际占用空间是5个字节,而一个上海的股票代码要占用7个字节!考虑到上海的股票数目比深圳的多,那么用VARCHAR(6)就不如CHAR(6)合算了。

虽然一个CHAR或VARVHAR的最大长度可以到255,我认为大于20的 CHAR是几乎用不到的——很少有大于20个字节长度的固定长度的东东吧?不是固定长度的就用VARCHAR!大于100的VARCHAR也是几乎用不到的——比这更大的用TEXT就好了。TINYTEXT,最大长度为255,占用空间也是(实际长度+1);TEXT,最大长度65535,占用空间是(实际长度+2);MEDIUMTEXT,最大长度16777215,占用空间是(实际长度+3);LONGTEXT,最大长度4294967295,占用空间是(实际长度+4)。为什么“+1”?“+2”?“+3”?“+4”?你要是还不知道就该打PP了。这些可以用在论坛啊、新闻啊,什么的,用来保存文章的正文。根据实际情况的不同,选择从小到大的不同类型。

四、枚举和集合类型。

枚举(ENUM)类型,最多可以定义65535种不同的字符串从中做出选择,只能并且必须选择其中一种,占用存储空间是一个或两个字节,由枚举值的数目决定;集合(SET)类型,最多可以有64个成员,可以选择其中的零个到不限定的多个,占用存储空间是一个到八个字节,由集合可能的成员数目决定。

举个例子来说,在SQLServer中,你可以节约到用一个Bit类型来表示性别(男/女),但MySQL没有Bit,用TINTINT?不,可以用ENUM('帅哥','美眉')!只有两种选择,所以只需一个字节——跟 TINYINT一样大,但却可以直接用字符串'帅哥'和'美眉'来存取。真是太方便啦!

好了,MySQL的数据类型介绍得差不多,我的建库策略也随着介绍数据类型介绍给大家一些。但这只是其中一部分,篇幅有限,不能再细说;其他的,就靠各人在对数据类型理解的基础上,多多实践、多多讨论。

举报

  • 相关推荐
  • 忆联 Docker+MySQL 流控方案:打造安全高效存储底座,释放 AI 极致性能

    文章探讨了在AI时代背景下,基于Docker部署MySQL数据库的高效解决方案。通过Docker容器化技术,MySQL实现了灵活部署、资源高效利用和稳定隔离性,成为AI应用的首选数据库方案。测试结果显示,采用PCIe5.0企业级SSD配合Namespace技术和QoS优化策略,能精准控制性能偏差在2%以内,在混合读写场景下更可控制在1%以内。该方案显著提升了存储资源管理效率,为AI应用提供稳定可靠的数据存储支持,同时降低企业TCO成本,推动数据价值释放。

  • 非农数据高好还是低好,领峰环球揭开现货黄金3大应对策略

    本文分析了美国非农就业数据对黄金价格的影响机制及交易策略。非农数据强劲表明经济向好,可能推动美联储加息,导致美元升值、黄金承压;数据疲软则预示宽松政策延续,美元走弱利好黄金。文章提出三大交易策略:1)数据公布前建立对冲组合;2)把握数据公布后30分钟内的价格波动(平均25-35美元);3)关注技术回调带来的二次入场机会。领峰环球平台提供低点差交易和MT5系统支持,帮助投资者精准捕捉非农行情波动。无论数据好坏,都能通过专业分析工具把握交易机会。

  • 如何用豆包生成班级管理策略备课教案

    本文介绍如何利用豆包AI工具快速生成适用于四年级学生的班级管理策略。主要内容包括:1.通过豆包平台输入明确指令,如"请提供适用于四年级学生的班级管理策略,重点关注纪律/学习积极性/合作能力";2.获取生成结果后,根据实际教学情况进行优化调整;3.将最终策略整理成教案应用于班级管理实践。该工具能帮助教师高效制定针对性管理方案,为班级管理工作注�

  • 5岁女童感染“食脑虫”昏迷不醒 专家详解其致病机制

    近日,一则家长在社交平台的求助信息引发社会广泛关注。该家长称,其5岁女儿于6月7日和6月14日分别进行了游泳和泡温泉活动,6月22日开始出现头痛、低热、呕吐等症状,23日住院后出现抽搐,随后陷入昏迷,被转入重症监护室治疗。6月27日,孩子被检测出感染福氏耐格里阿米巴病原,病情十分危急。 医生表示,“食脑虫”并非真正的虫,而是一类单细胞小生物,学名为自�

  • 动态域名解析全攻略:从原理到实用方法详解

    本文介绍了动态域名解析(DDNS)技术及其应用。DDNS通过将动态变化的公网IP地址与固定域名绑定,解决了远程访问动态IP设备的难题。文章详细解析了三种实用方法:1)使用专业DDNS服务商;2)利用路由器内置功能;3)安装专用软件如花生壳。重点推荐了花生壳软件,其支持多系统、智能DNS解析和端口映射等功能,拥有1800万用户。使用DDNS需注意选择可靠服务商、正确配置记录、定期检查更新等事项。动态域名解析技术极大便利了远程访问需求,而花生壳凭借强大功能成为理想选择。

  • 和机器人做工友?华为博士天团详解盘古具身智能的工业落地

    华为开发者大会HDC2025聚焦具身智能技术发展,多位专家围绕机器人智能化展开深度探讨。会议指出当前人形机器人已实现基础运动控制,但需突破3D空间理解、长序列物理推理等核心技术。华为云推出CloudRobo平台,通过数字仿真、生成式AI等技术解决工业场景数据短缺问题,已应用于物流分拣等场景。专家预测未来3-5年工业机器人将率先落地,家庭陪护机器人仍需长期技术突破。会议特别强调需建立机器人伦理边界,确保技术发展与社会价值相协调。华为将持续探索AI与机器人融合,推动具身智能在千行百业的应用创新。

  • 批量部署 + 云策略下发:向日葵两大利器提升连锁运维效率

    文章探讨了数字化浪潮下连锁零售行业面临的IT运维挑战及解决方案。主要痛点包括:1)设备型号繁杂导致管理困难;2)门店分布广、终端分散;3)一线人员IT知识有限;4)运维模式多样化。向日葵提出的解决方案以远程控制技术为核心,构建包含数据采集、远程运维、策略管理的完整体系,支持批量部署、设备分组、云端策略调整等功能。特别介绍了智能插座P4和智能PDU设备,可实现无人值守场景下的电力管理。方案通过账号授权、设备授权、行为管理三大模块,帮助连锁企业实现降本增效的远程IT运维体系。

  • 小米发布Are you OK手型钥匙扣 售价 19.9 元

    小米推出创意变色钥匙扣"Are you OK",售价19.9元。该产品采用三段式可拆卸设计,兼具钥匙扣、轮胎气门帽和小米汽车IP摆件三种功能。特别添加感光粉,阳光下可迅速变黑,无光时快速复原。气门帽采用PVC材质配黄铜内芯,符合美嘴AV规格。设计灵感源自雷军2015年印度发布会上的经典梗"Are you OK",该梗曾被B站UP主改编成神曲走红网络。这款产品巧妙运用了这一经典元素,兼具实用性和趣味性。

  • 李世石:AI不会“解读”……直觉依然属于人类!

    在技术逐渐超越人的时代,我们必须思考:如何在与科技同行的同时,不失人类本色……

  • 合生元益生菌冲剂儿童型因何成为宝妈圈 “肠道救星”?一起来看

    本文探讨了益生菌对婴幼儿肠道健康的重要性。婴幼儿肠道菌群正处于发育阶段,免疫系统尚未成熟,容易受饮食变化、抗生素使用等因素影响出现消化问题。益生菌能帮助维持肠道菌群平衡,抑制有害菌生长,促进营养吸收,增强免疫力。合生元益生菌冲剂儿童型采用科学配方,精选适合婴幼儿的优质菌株,添加益生元促进菌群定植,采用先进包埋技术确保活性,不含蔗糖等添加剂,独立包装方便卫生。相比化学药物,益生菌提供了一种更温和自然的健康支持方式,帮助宝宝建立健康的肠道环境,从内而外增强抵抗力。