mysql8数据类型有哪些
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这期内容当中小编将会给大家带来有关mysql8数据类型有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。整数类型整数类型有可选的unsigned属性,表示不允许负
千家信息网最后更新 2025年02月05日mysql8数据类型有哪些
整数类型有可选的unsigned属性,表示不允许负值,这可以使正数的上限提高一倍(还多1)。 有符号和无符号类型使用相同的存储空间,并且具有相同的性能,因此可以根据实际情况选择合适的类型。
mysql可以为整数类型指定宽度,例如INT(11),对大多数应用来说这是没有意义的:它不会限制合法范围,只是规定了mysql的一些交互工具(例如mysql命令行客户端)用来显示字符的个数。 对于存储和计算来说,INT(1)和INT(20)是相同的。 注意FLOAT和DOUBLE可表示的范围不是完全连续的浮点数,由于精度的限制,有些极小的小数是表示不了的,浮点相关的内容可以参考我的另一篇文章神奇的二进制(二)浮点数。 DECIMAL类型最多允许65个数字,表示为DECIMAL(M,D)的格式。例如DECIMAL(5,2)表示最多保存5个数字,其中2个是小数,表示的范围在-999.99 到 999.99之间。 如果小数位数D为0,则DECIMAL值不包含小数点或小数部分。 FLOAT和DOUBLE类型只能使用标准的浮点运算进行近似运算,如果需要精确运算,例如金额计算,则需要使用DECIMAL类型。 因为cpu不支持对DECIMAL的直接计算,所以在mysql5.0以上的版本中,mysql服务器自身实现了DECIMAL的高精度计算。 相对而言,cpu直接支持原生的浮点计算,所以浮点计算明显更快。 涉及到金额计算,在数据量比较大的时候,可以考虑用BIGINT代替DECIMAL。例如金额单位精确到分,99.99可以用9999表示,以分为单位存储在BIGINT字段里,这样可以同时避免浮点数计算的不精确和DECIMAL精确计算代价高的问题。 CHAR类型是定长的,会根据定义的长度分配空间。当存储CHAR值时,mysql会删除所有的末尾空格。
CHAR很适合存储很短的字符串,或者所有的值都接近同一个长度,例如,CHAR非常适合存储密码的MD5的值,因为这是一个定长的长度。 对于经常变动的数据,CHAR也比VARCHAR更好,因为定长的CHAR类型不容易产生碎片。 对于非常短的列,CHAR比VARCHAR在存储空间上也更有优势,例如用CHAR(1)来存储只有Y和N的值,如果采用单字节字符集只需1个字节,但是VARCHAR(1)却需要2个字节,因为还需要一个记录长度的额外字节。
VARCHAR用于存储可变长的字符串,它比定长类型更节省空间。VARCHAR需要使用1或2个额外字节记录字符串的长度:如果列的最大长度小于或等于255字节,则只使用1个字节表示,如果列长度大于255字节,则需要使用2个字节表示长度。 假设采用latin字符集,一个VARCHAR(10)的列需要11个字节空间存储,一个VARCHAR(1000)的列则需要1002个字节空间存储,因为需要存储2个字节的长度信息。 哪些情况使用VARCHAR类型比较合适呢? BINARY和VARBINARY它们存储的是二进制字符串。二进制字符串和常规的字符串非常相似,但是二进制字符串存储的字节码而不是字符。
填充也不一样:mysql填充BINARY采用的是 \0(零字节)而不是空格,在检索时也不会去掉填充值。
当需要存储二进制数据时,可以使用 BINARY或VARBINARY,mysql比较二进制字符串时,每次按一个字节,并且根据该字节的数值进行比较。 因此二进制比较比字符串比较简单的多,所以也更快。
BLOB和TEXT都是为了存储很大数据而设计的字符串数据类型,分别采用二进制和字符方式存储。 二进制类型:TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB 字符类型:TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT 与其他类型不同,mysql把每个BLOB和TEXT值当做一个独立的对象处理。存储引擎在存储是通常会做特殊处理,当BLOB和TEXT值太大时,InnoDB会使用专门的"外部"存储区域来进行存储, 此时每个值在行内需要1~4个字节存储一个指针,然后在外部存储区域存储实际值。 BLOB和TEXT家族之间仅有的不同是,BLOB存储的是二进制数据,没有排序规则和字符集;而TEXT存储的是字符,有排序规则和字符集。 mysql对BLOB和TEXT列进行排序和其他数据类型不同:它只对每个列的前max_sort_length字节而不是整个字符串做排序。 如果只需要排序前面的一小部分字符,则可以减少max_sort_length的值,或者使用ORDER BY SUBSTRING(column,length)。 mysql不能将BLOB和TEXT列全部长度的字符串进行索引,也不能使用这些索引消除排序。 DATETIME使用8个字节的存储空间,和时区无关。 TIMESTAMP使用4个字节的存储空间,显示的时间依赖时区,保存了从1970年1月1号午夜(格林尼治标准时间)以来的秒数,它和unix的时间戳相同。TIMESTAMP只能表示从1970年到2038年。 如果插入和更新数据时没有指定TIMESTAMP的值,mysql会默认的更新TIMESTAMP的值当前系统时间。
BIT(1)定义一个包含1个位的数据,BIT(2)包含2个位,以此类推,最大长度为64个位。mysql把BIT当做字符串类型,而不是数字类型。当检索BIT的值时,结果是对应二进制表示的ASCII码转换后的字符,然而在数字上下文场景中检索的时候,会使用二进制表示的数字。 例如,如果存储一个值b'00111001'(十进制的值为57)到BIT(8)的列并检索它时,得到的结果是9(9的ASCII码是57),如果对该字段进行加减,则返回结果57。
mysql8支持直接存储json格式字符串,对应的是json数据类型。
mysql设计表的数据类型的时候,下面几个简单的原则有助于设计出好的数据类型:
这期内容当中小编将会给大家带来有关mysql8数据类型有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
整数类型
实数类型
字符串类型
CHAR
VARCHAR
字符串的列长度比平均长度大很多
列的更新很少,碎片不是问题
使用了想UTF-8这样复杂的字符集,每个字符都使用了不同的字节数进行存储
BINARY和VARBINARY
BLOB和TEXT
日期和时间类型
位数类型
类型 | 范围 |
BIT(1)定义一个包含1个位的数据,BIT(2)包含2个位,以此类推,最大长度为64个位。
JSON类型
json数据列会自动验证json的数据格式,如果格式不正确会报错。
最优化存储格式。json数据类型会把json格式的字符串转换成内部格式,能够快速的读取其中的元素。
小结
更小的更好
选择你认为不会超越范围的最小类型,更小的数据类型通常更快,因为它们占用更少的磁盘、内存和cpu缓存,并且处理时需要的cpu周期更少。
简单就好
简单的数据类型操作通常更快,例如整形的操作比字符串更快,因为字符串有字符集和校对规则(排序规则)比整形更复杂。
尽量避免null
如果字段可以不存储null值,尽量把字段设置成not null。因为可为null的列使得索引、索引统计和值比较都更复杂,可为null的列会使用更多的存储空间,在mysql里也需要特殊处理。
上述就是小编为大家分享的mysql8数据类型有哪些了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
类型
存储
字符
字节
数据
字符串
长度
二进制
空间
格式
排序
字符集
小数
数字
更快
浮点
范围
不同
相同
精确
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
win10 兼容的数据库
广州市百盛互联网科技有限公司
冬奥会网络安全驻场
网络技术员的职业决策分析
静态服务器下载安全
王府井集团软件开发岗
陕西联想服务器虚拟化迁移
福建干部网络技术学院
江苏机械软件开发哪家好
传奇4服务器ip搭建教程
西部数据 数据库中间件
服务器管理器的端口是多少
江苏战国网络安全技术
中国网络安全综合立法是什么
ssh服务器安全
镇互联网络安全管理机制
如何查看服务器有没有域控
四川前端软件开发哪家可靠
公司管理系统服务器
正规网络技术培训学费
数据库技术与应用刘卫国答案
像素工厂服务器ip地址列表
本地数据库如何导入数据库
南城金蝶管理软件开发
联想服务器怎么安装centos
数据库原理方面的书籍
软件开发用户界面设计
网络安全密钥破解器
四川出口外贸软件开发
网络安全的征文100字