ps里新建网站尺寸怎么做,查询网站是否备案,美图王电商一键生成详情图,网站开发公司怎么找客户—数据库专栏— 目录
一、引言#xff1a;为什么数据类型很重要#xff1f;二、数据类型分类概览三、数值类型详解 3.1 整数类型3.2 浮点数与定点数 四、字符串类型详解 4.1 固定长度与可变长度字符串4.2 文本类型与二进制类型4.3 ENUM 与 SET 类型 五、日期与时间类型六、数…—数据库专栏—目录一、引言为什么数据类型很重要二、数据类型分类概览三、数值类型详解3.1 整数类型3.2 浮点数与定点数四、字符串类型详解4.1 固定长度与可变长度字符串4.2 文本类型与二进制类型4.3 ENUM 与 SET 类型五、日期与时间类型六、数据类型选择策略6.1 CHAR vs VARCHAR6.2 VARCHAR vs TEXT6.3 数值类型选择建议七、实战示例与常见问题八、总结与参考资料一、引言为什么数据类型很重要在数据库设计过程中数据类型的选择直接影响数据的存储效率、查询性能、数据一致性与系统的可扩展性。一个合理的数据类型设计不仅能节省存储空间还能提升索引效率降低系统负载。例如若将一个只需存储 0/1 状态的字段设置为BIGINT则会浪费大量存储空间若将较长的文本内容全部使用VARCHAR存储则可能导致索引失效或查询性能下降。因此掌握 MySQL 数据类型的特点与适用场景是每一位数据库开发者与架构师的基本功。二、数据类型分类概览MySQL 支持的数据类型主要分为以下几类类型分类包含类型示例主要用途数值类型INT,FLOAT,DECIMAL存储数字支持整数、浮点数、定点数字符串类型CHAR,VARCHAR,TEXT存储文本、字符串二进制类型BINARY,BLOB存储二进制数据如图片、文件日期时间类型DATE,DATETIME,TIMESTAMP存储日期、时间、时间戳特殊类型ENUM,SET存储枚举值或集合值三、数值类型详解3.1 整数类型MySQL 提供了多种整数类型适用于不同范围的整数存储类型存储大小有符号范围无符号范围TINYINT1 Byte-128 ~ 1270 ~ 255SMALLINT2 Bytes-32768 ~ 327670 ~ 65535MEDIUMINT3 Bytes-8388608 ~ 83886070 ~ 16777215INT4 Bytes-2147483648 ~ 21474836470 ~ 4294967295BIGINT8 Bytes-2^63 ~ 2^63-10 ~ 2^64-1使用建议尽量选择能满足需求的最小类型节省存储空间。对于状态标志如性别、是否删除可使用TINYINT或BIT。主键常用INT或BIGINT并设置为自增。3.2 浮点数与定点数类型存储大小精度说明适用场景FLOAT4 Bytes单精度约7位有效数字对精度要求不高的科学计算DOUBLE8 Bytes双精度约15位有效数字普通浮点计算DECIMAL(M,D)动态精确存储M为总位数D为小数位数财务、金额等精确计算示例代码-- 创建表使用 DECIMAL 存储金额CREATETABLEorders(idINTPRIMARYKEYAUTO_INCREMENT,amountDECIMAL(10,2)NOTNULLCOMMENT订单金额精确到分);四、字符串类型详解4.1 固定长度与可变长度字符串类型特点存储方式适用场景CHAR(M)固定长度M为字符数始终占用 M 个字符的空间长度固定的数据如身份证、邮编VARCHAR(M)可变长度M为最大字符数实际使用长度 1~2 字节记录长度长度变化的数据如姓名、地址对比示例CREATETABLEuser_info(idINTPRIMARYKEY,id_cardCHAR(18)COMMENT身份证号,nameVARCHAR(50)COMMENT姓名);4.2 文本类型与二进制类型类型最大长度存储方式适用场景TEXT65535 字符存储在溢出页文章内容、日志文本BLOB65535 字节存储在溢出页图片、文件等二进制数据MEDIUMTEXT16777215 字符溢出页存储较大文本内容LONGBLOB4GB溢出页存储大型二进制对象注意TEXT和BLOB类型无法直接创建普通索引建议使用FULLTEXT索引或前缀索引。4.3 ENUM 与 SET 类型ENUM从预定义列表中选择一个值SET从预定义列表中选择多个值示例CREATETABLEarticles(idINT,statusENUM(draft,published,archived)DEFAULTdraft,tagsSET(tech,life,travel));五、日期与时间类型类型存储大小格式范围适用场景DATE3 BytesYYYY-MM-DD1000-01-01 ~ 9999-12-31生日、日期记录TIME3 BytesHH:MM:SS-838:59:59 ~ 838:59:59时间间隔DATETIME8 BytesYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:59记录创建时间、更新时间TIMESTAMP4 BytesYYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 ~ 2038-01-19 03:14:07自动记录时间戳支持时区实战示例CREATETABLElogs(idINTAUTO_INCREMENTPRIMARYKEY,contentTEXT,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP,updated_atTIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP);六、数据类型选择策略6.1 CHAR vs VARCHAR对比维度CHARVARCHAR存储方式固定长度补空格可变长度记录实际长度存储效率浪费空间固定分配节省空间按需分配查询性能高长度固定索引效率高较低长度变化索引效率低适用场景身份证、MD5、邮编姓名、地址、备注6.2 VARCHAR vs TEXT对比维度VARCHARTEXT最大长度65535 字节65535 字符可自动升级为更大类型存储位置行内768B或溢出页始终溢出页索引支持支持普通索引仅支持 FULLTEXT 索引适用场景短文本、频繁查询字段长文本、不常查询内容6.3 数值类型选择建议金额、价格等精确计算 →DECIMAL计数器、状态码 →INT或TINYINT科学计算、非精确数值 →FLOAT/DOUBLE七、实战示例与常见问题示例1创建用户表CREATETABLEusers(idBIGINTUNSIGNEDAUTO_INCREMENTPRIMARYKEY,usernameVARCHAR(50)UNIQUENOTNULL,emailVARCHAR(100)UNIQUENOTNULL,password_hashCHAR(64)COMMENTSHA-256哈希,genderENUM(male,female,other)DEFAULTother,birth_dateDATE,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP)ENGINEInnoDBDEFAULTCHARSETutf8mb4;示例2数据插入与查询-- 插入数据INSERTINTOusers(username,email,gender,birth_date)VALUES(zhangsan,zhangsanexample.com,male,1990-05-20);-- 查询数据SELECT*FROMusersWHEREgendermaleANDbirth_date1990-01-01;常见问题为什么 VARCHAR 长度不能超过 65535因为 MySQL 中行的最大长度为 65535 字节且所有列共享该限制。TIMESTAMP 与 DATETIME 如何选择如果需要自动更新时间、支持时区转换选TIMESTAMP如果需要存储大范围日期时间选DATETIME。ENUM 和 SET 是否推荐使用在固定值较少、不常变更的情况下可以使用否则建议使用关联表。八、总结总结数据类型选择是数据库设计的基础环节合理的选择能✅ 提升存储效率✅ 优化查询性能✅ 增强数据一致性✅ 支持系统扩展