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

MySQL实战基础知识入门

  1. MySQL实战基础知识入门(1):登录数据库命令行
  2. MySQL实战基础知识入门(2):统计一天24小时数据默认补0的sql语句
  3. MySQL实战基础知识入门(3):近7日销量合计php后端mysql语句如果当日为空则自动补0的解决方案
  4. MySQL实战基础知识入门(4):MySQL高级函数CASE WHEN END
  5. MySQL实战基础知识入门(5):SMARTY 二次循环数组的输出方法
  6. MySQL实战基础知识入门(6):mysql使用mysqldump导出数据出错的解决方案
  7. MySQL实战基础知识入门(7):mysql使用source命令导入数据的操作方案
  8. MySQL实战基础知识入门(8):MySQL数据库实例数据表解读字段命名方式以及数据类型的设置
  9. MySQL实战基础知识入门(9):MYSQL跨4个表的高效查询代码的解决方案
  10. MySQL实战基础知识入门(10):今天、昨天、近7天、近30天在一个筛选语句内实现的解决方案
  11. MySQL实战基础知识入门(11):简单高效的筛选最近7日每天数据统计的方式解决echarts每日交易量柱图
  12. MySQL实战基础知识入门(12):当天和昨天24小时数据统计的sql语句解决方案

MySQL实战基础知识入门

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

一、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之间的整数值。指定显示宽度主要用于控制输出的美观程度和一致性。

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

sql 复制代码
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,如下所示:

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

    html 复制代码
    <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>

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


@漏刻有时

相关推荐
Elastic 中国社区官方博客32 分钟前
使用 Elasticsearch 导航检索增强生成图表
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
小金的学习笔记36 分钟前
RedisTemplate和Redisson的使用和区别
数据库·redis·缓存
新知图书1 小时前
MySQL用户授权、收回权限与查看权限
数据库·mysql·安全
文城5211 小时前
Mysql存储过程(学习自用)
数据库·学习·mysql
沉默的煎蛋1 小时前
MyBatis 注解开发详解
java·数据库·mysql·算法·mybatis
呼啦啦啦啦啦啦啦啦1 小时前
【Redis】事务
数据库·redis·缓存
HaoHao_0101 小时前
AWS Serverless Application Repository
服务器·数据库·云计算·aws·云服务器
C语言扫地僧1 小时前
MySQL 事务及MVCC机制详解
数据库·mysql
小镇cxy1 小时前
MySQL事物,MVCC机制
数据库·mysql
书生-w2 小时前
Redis Windows 解压版安装
数据库·windows·redis