当前位置: 首页 > news >正文

MySQL中的常用数据类型详解

常用数据类型分类

SQL中 规定了⽤于描述属性的数据类型。常⽤的数据类型有以下⼏类:

  • 数据值类型
  • 字符串类型
  • ⼆进制类型
  • ⽇期类型

数值类型

类型⼤⼩说明
BIT[(M)]默认1bit位值类型。M表⽰每个值的位数,取值范围为 1 ~ 64 。如果省略M,则默认为 1 。
TINYINT[(M) ]1byte取值范围 -2^7 ~ 2^7-1 ,⽆符号取值范围 2^8-1
BOOL1byteTINYINT(1)的同义词。值为零被认为是假,⾮零值被认为是true
SMALLINT[(M )]2byte取值范围 -2^15 ~ 2^15-1 ,⽆符号取值范围 2^16-1 。
MEDIUMINT[( M)]3byte取值范围 -2^23 ~ 2^23-1 ,⽆符号取值范围 2^24-
INT[(M)]4byte取值范围 -2^31 ~ 2^31-1 ,⽆符号取值范围 2^32-1
INTEGER[(M) ]4byteINT[(M)]的同义词
BIGINT[(M)]8byte取值范围 -2^63 ~ 2^63-1 ,⽆符号取值范围 2^64-1
FLOAT[(M,D) ]4byte单精度浮点型,M是总位数,D是⼩数点后⾯的位数,⼤约可以精确到⼩数点后7 位
DOUBLE[(M,D )]8byte双精度浮点型,M是总位数,D是⼩数点后⾯的位数,⼤约可以精确到⼩数点后 15位。
DECIMAL[(M[ ,D])]动态不存在精度损失,M是总位数,D是⼩数点后的位数。DECIMAL的最⼤位数(M)为 65,最⼤⼩数位数(D)为30。如果省略M,则默认为10,如果省略D,则默认为 0。M中不计算⼩数点和负数的-号,如果D为0,则值没有⼩数点和⼩数部分。
在这里插入图片描述

字符串类型

类型说明
CHAR[(M)]固定⻓度字符串, M 表⽰⻓度,以字符为单位,取值范围 0 ~ 255 , M 省略则⻓度为 1
VARCHAR(M)可变⻓度字符串, M 表⽰字符最⼤⻓度,的范围 0 ~ 65535 ,有效字符个数取 决于实际字符数和使⽤的字符集
TINYTEXT⼩⽂本类型,最⼤⻓度为 255 (2^8 - 1)个字符,有效字符个数取决于使⽤的字符 集
TEXT[(M)]⽂本类型,最⼤⻓度为 65535 (2^16 - 1)个字符,有效字符个数取决于使⽤的字符 集
MEDIUMTEXT中⽂本类型,最⼤⻓度为 16,777,215 (2^24 - 1)个字符,有效字符个数取决于使 ⽤的字符集
LONGTEXT⼤⽂本类型,最⼤⻓度为 4,294,967,295 即 4GB (2^32 - 1)个字符,有效字符 个数取决于使⽤的字符集
BINARY[(M)]固定⻓度⼆进制字节,于CHAR类似,但存储的是⼆进制字节⽽不是字符串。 M 表 ⽰⻓度,以字节为单位,取值范围 0 ~ 255 , M 省略则⻓度为 1
VARBINARY(M)可变⻓度⼆进制字节,于VARCHAR类似,但存储的是⼆进制字节⽽不是字符串。 M 表⽰⻓度,以字节为单位
TINYBLOB⼩⼆进制字节类型,最⼤⻓度为 255 (2^8 - 1)个字节
**BLOB[(M)] **⼆进制字节类型,最⼤⻓度为 65535 (2^16 - 1)个字节
MEDIUMBLOB中⼆进制字节类型,最⼤⻓度为 16,777,215 (2^24 - 1)个字节
LONGBLOB⼤⼆进制字节类型,最⼤⻓度为 4,294,967,295 即 4GB (2^8 - 1)个字节
ENUM(‘value1’,‘valu e2’,…)• 枚举 • 从值列表 ‘value1’,‘value2’ 或 ‘’(空字符串) 和 NULL 中选⼀个值 • 最多可以有 65,535 个不同的元素 • 单个元素的最⼤⻓度是 M <= 255 或 (M x w) <= 1020 ,其中 M 是元素字 符⻓度, w 是字符集中字符所需的最⼤字节数 • ENUM的值在内部表⽰为整数
SET(‘value1’,‘value 2’,…)• 集合 • 从值列表 ‘value1’,‘value2’ 中选零个或多个值 • 最多64个元素 • 单个元素的最⼤⻓度是 M <= 255 或 (M x w) <= 1020 ,其中 M 是元素字 符⻓度, w 是字符集中字符所需的最⼤字节数 • SET值在内部表⽰为整数

CHAR与VARCHAR的区别

  • CHAR 固定⻓度的字符串, M 表⽰以字符为单位的列⻓度,取值范围 0 ~ 255 ,省略则⻓度为 1 ,在存储时总是⽤空格向右填充到指定的⻓度,获取列的值时会从尾部删除空格。允许定义 CHAR(0),此时列的值只能为NULL或空字符串,主要的⽬的是为了旧系兼容,⽐如类中必须有这个 属性,但不使⽤这个属性的值,也就是说值并没有意义,但列⼜不能没有。
  • VARCHAR 可变⻓度字符串。 M 表⽰以字符为单位的最⼤列⻓度,取值范围 0 ~ 65,535 (在所 有列中共享),有效⻓度取决于实际字符数和使⽤的字符集,并且⽤额外的⼀或两个字节记录实际使 ⽤的字节数,当实际字节数不超过 255 个字节⽤⼀个字节记录⻓度,超过 255 个字节时,使⽤两个 字节记录⻓度,获取列的值时不会从尾部删除空格,插⼊数据时会删除超出⻓度的空格。

如何选择CHAR与VARCHAR

  • 如果数据确定⻓度都⼀样,就使⽤定⻓ CHAR 类型,⽐如:⾝份证,md5,学号,邮编。
  • 如果数据⻓度有变化,就使⽤变⻓ VARCHAR , ⽐如:名字,地址,但要规划好⻓度,保证最⻓的字 符串能存的进去。
  • 定⻓ CHAR 类型⽐较浪费磁盘空间,但是效率⾼;变⻓ VARCHAR 类型⽐较节省磁盘空间,但是效率低。

VARCHAR与TEXT的区别

  • 容量⼤⼩: VARCHAR 最⼤⽀持 65535 个字节; TEXT 最⼤⽀持 65535 个字节,在指定TEXT ⻓度时,当超过 65535 时⾃动转换为 MEDIUMTEXT 类型,当超过 16,777,215 时⾃动转换为 LONGTEXT 类型
  • 存储位置: VARCHAR 类型的列实际内容⼩于768个字节时存在当前⾏,⼤于768时存在溢出⻚, 当前⾏保存溢出⻚的地址; TEXT 类型的列整体保存在溢出⻚,当前⾏只保存溢出⻚地址
  • **查询性能:**对于频繁查询的 VARCHAR 列可以创建索引,提升查询性能; TEXT 类型的列⽆法直 接创建普通索引,但可以使⽤ FULLTEXT 索引,由于索引的⽀持和存储位置的不同, VARCHAR 列的性能⾼于 TEXT 类型的列
  • 适⽤场景:如果存储的数据⻓度较⼩且需要创建索引进⾏检索,可以选择 VARCHAR 类型,⽐如姓 名,⽤⼾,邮箱等;如果存储的数据⻓度较⼤且不需要频繁以该列为条件进⾏检索可以选择 TEXT 类型,⽐如⽂章内容等。

日期类型

类型⼤⼩说明
TIMESTAMP[( fsp)]4 bytes• 时间戳类型 • ⽀持范围 1970-01-01 00:00:01.000000 ~ 20388-01-19 03:14:07.499999 • 0值为 0000-00-00 00:00:00
DATETIME[(f sp)]8 bytes• ⽇期类型和时间类型的组合 • ⽀持范围 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.499999 • 显⽰格式为 YYYY-MM-DD hh:mm:ss[.fraction] • 0值为 0000-00-00 00:00:00
**DATE **3 bytes• ⽇期类型 • ⽀持范围 1000-01-01 ~ 9999-12-31 • 显⽰格式为 YYYY-MM-DD • 0值为 0000-00-00
TIME[(fsp)]3 bytes• 时间类型 • ⽀持范围 -838:59:59.000000 ~ 838:59:59.000000 • 显⽰格式为 hh:mm:ss[.fraction] • 0值为 00:00:00
YEAR[(4)]1 byte• 4位格式的年份 • ⽀持范围 1901 ~ 2155 • 显⽰格式为 YYYY • 0值为 0
  • fsp 为可选设置,⽤来指定⼩数秒精度,范围从0到6,值为0表⽰没有⼩数部分,如果省略,默认 精度为0
  • CURRENT_DATE 和 CURRENT_DATE() 是 CURDATE() 的同义词⽤于获取当前⽇期
  • CURRENT_TIME 和 CURRENT_TIME([fsp]) 是 CURTIME() 的同义词⽤于获取当前时间
  • CURRENT_TIMESTAMP 和 CURRENT_TIMESTAMP([fsp]) 是 NOW() 的同义词⽤于获取当 前⽇期和时

总结

  1. 数据类型 tinyint int bigint decimal(M,D)
  2. 字符类型 varchar(M) text
  3. 日期类型 date datetime
http://www.dtcms.com/a/490839.html

相关文章:

  • MySQL 自定义变量(User-Defined Variable)详解与实战
  • 一步步教做音乐网站wordpress开发企业网站
  • 蚌埠网站制作哪里有郑州seo外包顾问
  • 用家里网络做网站设计公司网站的主页怎么做
  • 三维设计可视化编程工具:Dynamo(Autodesk)VS Grasshopper(Rhino)
  • Java JVM “内存(1)”面试清单(含超通俗生活案例与深度理解)
  • LeetCode 刷题【122. 买卖股票的最佳时机 II】
  • Java 黑马程序员学习笔记(进阶篇18)
  • 5-22 WPS JS宏reduce数组的归并迭代应用(实例:提取最大最小值的记录)
  • 郑州营销型网站建设哪家好深圳免费网站排名优化
  • Kubernetes(k8s)版本查看
  • 整型数据与浮点型数据在内存中的存储方法
  • 集合知识点,java学校课
  • 构建AI智能体:六十五、模型智能训练控制:早停机制在深度学习中的应用解析
  • 递归-21.合并两个有序链表-力扣(LeetCode)
  • 中国八大菜系视频课(共800道菜品)
  • 【流式输出】基于Vue实现增量渲染
  • 秦皇岛网站制作费用sns网站社区需求分析文档
  • 【AI论文】面向高效规划与工具使用的流程内智能体系统优化
  • html好看的网站的代码网站加图标
  • conda常用命令pip、venv
  • Visual Studio 2022查看程序变量和堆栈
  • RabbitMQ消息传输中Protostuff序列化数据异常的深度解析与解决方案
  • SSH连接服务器超时?可能原因与解决方案
  • iOS 代上架实战指南,从账号管理到使用 开心上架 上传IPA的完整流程
  • Visual Studio下的内存安全检测:CRT 内存泄漏 AddressSanitizer
  • iOS混淆与IPA文件加固深度解析,从反编译风险到苹果应用安全工程实践
  • 眉山建设中等职业技术学校 网站公司网页制作费用大概要多少钱?
  • 张店网站制作首选专家计算机大专生的出路
  • 万网的网站建设广州互联网公司集中在哪个区