MySQL常见的数据类型

2023-11-20

MySQL的常见数据类型

在这里插入图片描述

数据类型是什么?

数据类型是列、存储过程的参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。
  有一些数据是要存储为数字的,数字当中有些是要存储为整数、小数、日期型等…;

MySQL常见的数据类型

大致可以分为三类:数值、日期/时间、字符串类型
1.数值类型
分为严格数值类型和近似数值类型和浮点型,严格数值类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)
在这里插入图片描述
在这里插入图片描述
2.日期和时间类型
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

TIMESTAMP类型有专有的自动更新特性,将在后面描述
  在这里插入图片描述
  3.字符串类型
  字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。
  CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
  首先明确,char的长度是不可变的,varchar的长度是可变的;比如现在定义一个char[10]和varchar[10],现在往里边存储’csdn’四个字符,此时char中存储的是’csdn’四个字符外还有六个空格,而varchar则是存储是’csdn’四个字符,这里注意要在char类型中取数据’csdn’的时候,要注意用trim函数去掉末尾的空格,而varchar是不需要的;
  尽管这样吧,char的存储速度还是比varchar快,因为其长度固定,方便程序的存储于查找,这里可以理解成以空间换时间吧(个人感觉);因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的;
  char类型对英文的存储的ASCII码占一个字节,汉子占两个字节;而varchar则是英文和汉字都是两个字节;
  两者的存储数据都非unicode的字符数据;
  BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求。
  在这里插入图片描述
  在这里插入图片描述

总结

本文大体介绍了MySQL的数据类型,以及各数据类型的含义,如果不是专业的DBA,应该了解这些就足以了;

在这里插入图片描述
/*************************************************************************
/*************************************************************************
此文章版权方是个人,目的是为自己记录学习历程的同时为大家提供一些参考;如果有不正确的地方,欢迎大家提出!

/*************************************************************************
/*************************************************************************

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL常见的数据类型 的相关文章

  • INET6_ATON 的替代 MySQL 代码

    将旧的 INET ATON 值转换为新的二进制 INET6 ATON 值 无需 INET6 ATON INET6 NTOA 我们在表中已有数据 字段类型为UNSIGNED INT其中保存了使用以下命令创建的 IPv4 数据INET ATON
  • 使用csv文件-PHP创建表到mysql时添加反引号

    我有一个 php 代码 它将使用 csv 文件创建一个到 mysql 数据库的表 然而 某些列标题没有被 mysql 读取 mysql 唯一一次读取查询是当我添加反引号 您能帮助我在查询中的何处添加反引号吗 这是我的代码 file C Us
  • MYSQL嵌套查询运行速度很慢?

    以下查询不断超时 是否有开销更少的方法来实现相同的功能 UPDATE Invoices SET ispaid 0 WHERE Invoice number IN SELECT invoice number FROM payment allo
  • 如何将 PHP 会话数据保存到数据库而不是文件系统中?

    我有两个网站 一个是 TLS 一个不是 两个都适用于同一个客户端 但我需要这些网站彼此 并且仅彼此 共享通用数据users orders accounts etc 这通常可以通过以下方式完成 SESSION数据 但我显然这些不能跨其他站点工
  • MySQL 中电话号码的最佳数据类型是什么?它的 Java 类型映射应该是什么?

    我正在将 MySQL 与 Spring JDBC 模板一起用于我的 Web 应用程序 我需要存储仅包含数字的电话号码 10 我对使用数据类型的数据类型有点困惑 MySQL 中最适合它的数据类型是什么 为此 Bean POJO 类中的 Jav
  • 从 MySQL 列创建 PHP 数组

    mysql fetch array会给我一个获取行的数组 从一列中所有行的值生成数组的最佳方法是什么 您可以循环遍历数组并创建一个新数组 如下所示 column array while row mysql fetch array info
  • 无法在 MySQL 中运行查询语法错误意外

    我正在运行工作台 5 2 47 我写了一个很长的程序 用于基本数据检查 如果数据库中不存在记录 则将插入该记录 该过程保存时没有任何问题 但当我尝试运行它时 MySQL 5 5 抛出错误 它很长 里面有很多公司敏感数据 或者我会把它发布在这
  • 'SQLSTATE[HY093]:参数数量无效:绑定变量的数量与令牌数量不匹配'[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我收到 SQLSTATE HY093 的错误 参数编号无效 绑定变量的数量与标记的数量不匹配 if isset POST cada
  • 如何在 MySQL 查询编辑器中对列重新排序?

    我想移动专栏OtherSupport below Amount2 是否有捷径可寻 ALTER TABLE myTable MODIFY OtherSupport VARCHAR 50 AFTER Amount2
  • FIND_IN_SET 具有多个值[重复]

    这个问题在这里已经有答案了 我想从数据库字段搜索多个值 以下是我的查询 SELECT FROM tablename WHERE FIND IN SET 12 13 15 15 category id 我如何搜索它对我不起作用 FIND IN
  • java.sql.SQLException:在结果集开始之前[重复]

    这个问题在这里已经有答案了 我已尝试使用以下代码来检索存储在数据库中的图像 我创建了一个名为image db包含一个名为的表image details 该表有两个字段 id and image path两者都是类型mediumblob 我在
  • MySQL 和 PHP:多关键字搜索

    我有一个包含逗号分隔关键字的字符串 例如 keywords keyword1 keyword2 keyword3 我的表架构 名为tbl address是这样的 简化的 id INT 11 PRIMARY KEY AUTO INCREMEN
  • 无法在 mysql 表中的值中使用破折号(-)[重复]

    这个问题在这里已经有答案了 我一直在尝试从 python 将数据插入 MYSQL 表 我的sql表中的字段是id token start time end time和no of trans 我想存储使用生成的令牌uuid4在令牌栏中 但由于
  • MySQL中Join同表临时表

    我喜欢在 MySQL 中加入一个失败的临时表 这个想法很简单 CREATE TEMPORARY TABLE temp table LIKE any other table srsly it does not matter which tab
  • 在多个数据库的主目录中配置 .my.cnf 不起作用。适用于单个数据库

    这是我的 my cnf 文件 client user user1 password somePasswd1 database someDb client2 user user1 password somePassed2 database s
  • 按组内顺序排序

    order by 在第二个查询中不起作用 我需要先按 DNAID 订购 然后按 DNBID 订购 首先查询其顺序为 111221 第二个查询的顺序为 112112 有关我想要完成的任务的更多信息和细节https stackoverflow
  • PHP strtotime返回Mysql UNIX_TIMESTAMP的不同值

    我在 stackoverflow 上搜索过帖子 发现了一些类似的帖子 但我认为这是一篇不同的帖子 我的 PHP 和 Mysql 服务器的时区全部设置为 UTC 在表中我使用时间戳字段 值为 2010 11 08 02 54 15 我使用这样
  • 通过“SELECT”命令选择每组的前两条记录的最佳方法是什么?

    例如我有下表 id group data 1 1 aaa 2 1 aaa 3 2 aaa 4 2 aaa 5 2 aaa 6 3 aaa 7 3 aaa 8 3 aaa 通过 SELECT 命令选择每组的前两条记录的最佳方法是什么 如果没有
  • 编写多个mysql脚本

    是否可以在复合脚本中包含其他 mysql 脚本 理想情况下 我不想为包含的脚本创建存储过程 对于较大的项目 我想分层维护几个较小的脚本 然后根据需要组合它们 但现在 我很乐意学习如何包含其他脚本 source是一个内置命令 您可以在 MyS
  • 有没有办法从 MySQL 的列中提取与正则表达式匹配的文本?

    例如 如果特定列中的所有条目都具有 a z 0 9 形式 如何仅提取前导字母 以便 asdf123 和 as3456 分别返回 asdf 和 as 这对于 mysql 正则表达式功能来说是不可能的 除非安装一些似乎是为此设计的 udf 从技

随机推荐