MySQL实战基础知识入门(13):数据类型

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: MySQL实战基础知识入门(13):数据类型

难得有机会从“积灰这么久,这个当时被你收藏的东西”这个话题,来“温故而知新”。

一、mysql字段类型说明

在MySQL中,有多种数据类型可用于定义表中的字段。以下是一些常见的MySQL字段类型及其说明:

1.数值类型:


INT: 存储整数值,范围为-2147483648到2147483647。

BIGINT: 存储大整数值,范围为-9223372036854775808到9223372036854775807。

FLOAT: 存储单精度浮点数。

DOUBLE: 存储双精度浮点数。

DECIMAL: 存储精确小数值,可以指定精度和标度(例如 DECIMAL(10, 2) 代表精度为10,小数点后保留2位)。

2.字符串类型:


CHAR: 存储固定长度的字符串,最长为255个字符。

VARCHAR: 存储可变长度的字符串,最大长度为65535个字符。

TEXT: 存储可变长度的文本数据,最大长度是65535个字符。

ENUM: 存储枚举类型的值,允许从预定义的值列表中选择一个值。

SET: 存储集合类型的值,允许从预定义的值列表中选择一个或多个值。

3.日期和时间类型:


DATE: 存储日期值(年、月、日)。

TIME: 存储时间值(时、分、秒)。

DATETIME: 存储日期和时间值。

TIMESTAMP: 存储时间戳,用于记录数据的插入和更新时间。

4.布尔类型:


BOOLEAN: 存储布尔值,可以表示真或假。

5.二进制类型:


BLOB: 存储二进制大对象,可以存储大量的二进制数据。

VARBINARY: 存储可变长度的二进制数据。

这些是MySQL中常用的字段类型,每种字段类型具有不同的特性和可接受的值范围。在创建表时,根据数据的性质和需求,选择最合适的字段类型是非常重要的。


二、mysql自增Id的最大值是多少

MySQL自增ID的最大值取决于所使用的数据类型。在MySQL中,常用的自增ID数据类型是INT、BIGINT等。如果使用INT类型,最大值为2147483647。如果使用BIGINT类型,最大值为9223372036854775807。当自增ID达到最大值后,再次插入数据时,会报错并停止自增,需要重新设置自增ID的起始值。


三、int(10)和int(11)的区别

在MySQL中,INT(10)和INT(11)之间的差异主要在于显示宽度,而不是数据类型的本身。事实上,INT(10)和INT(11)在存储和范围方面是完全相同的,都是4个字节的整数类型。


INT(10)和INT(11)中的数字仅指定了在使用零填充的情况下,显示整数时所需的最小位数。例如,INT(10)表示显示时至少以10位宽度进行显示。


但是,这并不会影响存储范围或值的有效性。无论你指定的显示宽度是10还是11,INT类型仍然可以存储范围在-2147483648到2147483647之间的整数值。指定显示宽度主要用于控制输出的美观程度和一致性。


可以通过以下示例看到两者之间的差异:

CREATE TABLE 表名 (
    字段名1 INT(10),
    字段名2 INT(11)
);


在上面的示例中,字段字段名1和字段名2都是INT类型,但字段名1将以最少10位的宽度显示,而字段名2将以最少11位的宽度显示。无论是字段名1还是字段名2,都可以存储相同范围内的整数值。不同的是,当数字在显示时填充不足位数时,字段名2会更宽一些。


总而言之,INT(10)和INT(11)在存储和范围方面没有区别,只是在显示时的宽度上略有差异。选择使用具体的显示宽度主要取决于你希望输出时的一致性和美观程度。


四、varchar(64)和varchar(255)的区别

在MySQL中,VARCHAR(64)和VARCHAR(255)之间的区别主要在于存储空间和存储能力的限制。


1.存储空间:VARCHAR(64)类型可以存储最多64个字符的变长字符串,而VARCHAR(255)类型可以存储最多255个字符的变长字符串。换句话说,VARCHAR(255)可以容纳更长的字符串。


2.存储能力:虽然VARCHAR(64)能够存储较小的字符串,但如果你需要存储更长的文本或内容,VARCHAR(255)提供了更大的存储空间。这使得VARCHAR(255)更适合存储较长的文本字段,例如文章内容或长描述。


需要注意的是,VARCHAR类型是变长字符串类型,它只会使用实际存储的字符数加上一些额外的字节开销来保存字符串数据。因此,无论是VARCHAR(64)还是VARCHAR(255),都只会使用实际存储长度所需的空间,而不会占用固定的存储空间。


当选择VARCHAR(64)或VARCHAR(255)时,要考虑以下因素:


1.数据长度:根据需要存储的具体数据长度,选择合适的VARCHAR长度。如果你确定最大长度不会超过64个字符,可以选择VARCHAR(64)以减少存储空间的浪费。


2.数据类型一致性:如果表中的其他列的VARCHAR长度为255,并且你希望保持一致性,可以选择VARCHAR(255)。


3.性能和优化:长度较短的VARCHAR通常会使用更少的存储空间并且具有更好的性能。如果你的数据长度有限且稳定,可以考虑使用较短的VARCHAR长度。


总结起来,VARCHAR(64)和VARCHAR(255)的主要区别在于存储空间和存储能力的限制。根据数据长度、一致性需求和性能考虑,选择适当的VARCHAR长度。


五、使用整型数储存时间和DATE储存时间的对比

在MySQL中,通常会使用整数类型(如INT或BIGINT)或者日期/时间类型(如DATE、DATETIME或TIMESTAMP)来存储时间数据。下面是使用整数类型和日期/时间类型储存时间的对比:

1.整数类型存储时间:

使用整数类型存储时间的一种常见方法是使用时间戳。时间戳是一个整数值,表示从某个特定时间点(通常是1970年1月1日00:00:00 UTC)计算的秒数。优点包括:


存储效率高:整数类型占用的存储空间较小。

计算方便:可以进行数学运算和比较。

可排序性:可以通过对整数值进行排序来实现按时间排序的功能。

但与整数类型存储时间相关的一些注意事项包括:


可读性差:存储的是数值,无法直接识别为具体的日期和时间。

需要手动处理:需要在应用程序中进行转换和格式化操作才能将整数值转换为可读的日期和时间。

2.日期/时间类型存储时间:

MySQL提供了多种日期/时间类型,如DATE、DATETIME和TIMESTAMP,用于存储日期和时间信息。这些类型具有以下优点:


可读性强:存储的值以易读的日期和时间格式表示。

自动功能:支持自动更新(如CURRENT_TIMESTAMP)和内置函数(如DATE_FORMAT)。

更具语义性:可以直接对日期和时间进行操作,如计算和比较。

在使用日期/时间类型存储时间时需要注意的一些事项包括:


存储空间较大:日期/时间类型占用的存储空间较大,尤其是DATETIME和TIMESTAMP类型。

影响性能:对于高频更新的表,使用TIMESTAMP类型可能会带来额外的开销。

时区问题:日期/时间类型存储的时间值受数据库会话的时区设置影响。

综上所述,如果需要对时间进行复杂的计算、排序和检索,或者要求直接以易读的日期和时间格式进行存储和显示,日期/时间类型是更适合的选择。如果目标是存储效率和可进行自定义计算,或者需要与其他系统(如外部API)进行交互,可能整数类型更合适。具体使用哪种存储方式取决于应用程序的需求和对时间数据的处理方式。



六、如何在前端限制和数据表字段一样的长度

在前端限制用户输入的长度与数据表字段一样,你可以使用以下方法:


1.使用HTML的maxlength属性:对于标签或标签,可以使用maxlength属性来限制用户输入的字符数。例如,如果你的数据表字段长度为64,你可以设置maxlength为64,如下所示:

<input type="text" maxlength="64" />

2.JavaScript限制输入长度:你可以使用JavaScript来限制用户输入的长度并在超出限制时阻止提交表单。可以通过监听输入事件(如input或keydown)来实时计算输入的字符数,并根据字段长度进行处理。以下是一个示例:

<input type="text" id="myInput" />
<span id="charCount"></span>
<script>
  const input = document.getElementById('myInput');
  const charCount = document.getElementById('charCount');
  const maxLength = 64; // 设置字段长度
  input.addEventListener('input', function() {
    const enteredText = input.value;
    charCount.textContent = `${enteredText.length}/${maxLength}`;
    if (enteredText.length > maxLength) {
      input.value = enteredText.slice(0, maxLength); // 截断超出的部分
    }
  });
</script>


这些方法可以在前端实现与数据表字段长度相同的限制。请注意,在前端进行长度验证是为了提供更好的用户体验和实时反馈,但也应该在后端进行验证来确保数据的完整性和安全性。前端验证仅作为辅助手段,后端验证才是最终的保障。


@漏刻有时

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
8月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
缓存 关系型数据库 MySQL
MySQL索引策略与查询性能调优实战
在实际应用中,需要根据具体的业务需求和查询模式,综合运用索引策略和查询性能调优方法,不断地测试和优化,以提高MySQL数据库的查询性能。
640 66
|
SQL 关系型数据库 MySQL
网安入门之MySQL后端基础
《网安入门之MySQL后端基础》简介: 本文介绍了数据库及MySQL的基础知识,涵盖数据库的概念、结构与操作。数据库是组织化存储数据的集合,通过表、列、行等结构实现高效管理。MySQL作为开源的关系型数据库管理系统,广泛应用于Web开发。文中详细讲解了MySQL的基本操作,如增(INSERT)、删(DELETE)、改(UPDATE)、查(SELECT)等语句的使用方法,并介绍了数据库事务的ACID特性。此外,还探讨了SQL注入攻击的风险及防范措施,强调了预处理语句的重要性。最后,简述了PHP中mysqli扩展的使用方法,包括连接数据库、执行查询和关闭连接等步骤。
|
前端开发 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
【10月更文挑战第21天】 本文将深入浅出地探讨如何使用PHP与MySQL构建一个动态网站,从环境搭建到项目部署,全程实战演示。无论你是编程新手还是希望巩固Web开发技能的老手,都能在这篇文章中找到实用的技巧和启发。我们将一起探索如何通过PHP处理用户请求,利用MySQL存储数据,并最终呈现动态内容给用户,打造属于自己的在线平台。 ####
577 0
|
关系型数据库 MySQL 数据库
MySQL基本操作入门指南
MySQL基本操作入门指南
578 0
|
SQL 存储 关系型数据库
MySQL秘籍之索引与查询优化实战指南
最左前缀原则。不冗余原则。最大选择性原则。所谓前缀索引,说白了就是对文本的前几个字符建立索引(具体是几个字符在建立索引时去指定),比如以产品名称的前 10 位来建索引,这样建立起来的索引更小,查询效率更快!
399 22
 MySQL秘籍之索引与查询优化实战指南
|
安全 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
——深入探索LAMP栈下的高效数据交互与处理技巧 ####
|
关系型数据库 MySQL PHP
PHP与MySQL动态网站开发实战指南####
深入探索PHP与MySQL的协同工作机制,本文旨在通过一系列实战案例,揭示构建高效、稳定且用户友好的动态网站的秘诀。从环境搭建到数据交互,再到最佳实践分享,本文为开发者提供了一条清晰的学习路径,助力其在LAMP(Linux, Apache, MySQL, PHP/Perl/Python)栈上实现技术飞跃。 ####
|
关系型数据库 MySQL PHP
PHP与MySQL动态网站开发实战指南####
本文深入探讨了PHP与MySQL在动态网站开发中的应用实践,通过具体案例解析如何高效结合这两大技术构建数据驱动的Web应用。文章将涵盖环境搭建、基础语法回顾、数据库设计与操作、用户注册与登录系统实现等关键步骤,旨在为开发者提供一个从零到一的项目实战路径,展示PHP与MySQL协同工作的强大能力。 ####

热门文章

最新文章

推荐镜像

更多