MySQL8 全部数据类型
数字类型

日期类型

字符串类型
CHAR和VARCHAR

表列数和行大小限制
MySQL每个表的硬限制为4096列,但对于给定的表,有效最大值可能更小。确切的列限制取决于几个因素:
表的最大行大小限制列的数量(也可能是size),因为所有列的总长度不能超过此大小。
各列的存储要求限制了适合给定最大行大小的列数。某些数据类型的存储要求取决于存储引擎,存储格式和字符集等因素。
存储引擎可能会施加额外的限制来限制表列数。例如, InnoDB每个表的限制为1017列。
即使存储引擎能够支持更大的行,MySQL表的内部限制最大行大小为65,535字节。BLOB和TEXT列只对行大小限制贡献9到12个字节,因为它们的内容与行的其余部分分开存储。
InnoDB中对innodb_page_size(4KB,8KB,16KB和32KB)的设置,表的最大行大小略小于半页。例如,对于默认的16KB InnoDB页面大小,最大行大小略小于8KB 。
比如:
-- 此时最大行大小为66000,大于规定的65535
CREATE TABLE `test_max_row_size` (
a VARCHAR(10000),
b VARCHAR(10000),
c VARCHAR(10000),
d VARCHAR(10000),
e VARCHAR(10000),
f VARCHAR(10000),
g VARCHAR(6000)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
> 1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
> 时间: 0.004s
报错是因为最大行大小的限制是所有列共享,而不是对单独列的限制。
BINARY和VARBINARY

BLOB和TEXT

ENUM和SET

-- SET类型,元素个数最大为64个
CREATE TABLE `test_set` (
a SET('a001','a002','a003','a004','a005','a006','a007','a008','a009','a0010','a0011','a0012','a0013','a0014','a0015','a0016','a0017','a0018','a0019','a0020','a0021','a0022','a0023','a0024','a0025','a0026','a0027','a0028','a0029','a0030','a0031','a0032','a0033','a0034','a0035','a0036','a0037','a0038','a0039','a0040','a0041','a0042','a0043','a0044','a0045','a0046','a0047','a0048','a0049','a0050','a0051','a0052','a0053','a0054','a0055','a0056','a0057','a0058','a0059','a0060','a0061','a0062','a0063','a0064')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
测试一下这两个类型
CREATE TABLE `test_enum_set` (
a SET('A','B','C'),
b ENUM('男','女')
) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO test_enum_set VALUES('A,B','男')
> Affected rows: 1
> 时间: 0.009s

如果你插入的值不在set之列,报错
INSERT INTO test_enum_set VALUES('D','男')
> 1265 - Data truncated for column 'a' at row 1
> 时间: 0s
如果你插入的值不在enum之列,也报错
INSERT INTO test_enum_set VALUES('C','人妖')
> 1265 - Data truncated for column 'b' at row 1
> 时间: 0s
对于set而言,插入重复的会过滤掉,不然怎么能叫set呢
INSERT INTO test_enum_set VALUES('A,A,A','女')
> Affected rows: 1
> 时间: 0.008s

数据类型存储要求
数字类型前面已经提到了,这里不再赘述。
时间类型

枚举和集合类型

如果你想要表格的文件,我已经打包好了:https://github.com/Mysakura/DataFiles
那个 .pos 文件可以导入https://www.processon.com/ 来查看
MySQL8 全部数据类型的更多相关文章
- Phpstudy升级到Mysql8
之前一直用的mysql5.5,最近发现Mysql8更新了很多新特性以及查询效率的提升,觉得很有必要更新下开发版本,好,废话不多说: 1.下载安装包,下载地址:mysql8.0 .如果你想要下载其它版 ...
- mysql8.0发布新特性
2018年4月21日 14:36:42 https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-11.html#mysqld-8-0-11-b ...
- Mysql_Learning_Notes_系统结构_1_数据类型
数据类型 整型 1.tinyint 1Bytes -128~127(255) 2.smallint 2Bytes -32768~32676(65535) 3.mdeiumint 3Bytes -838 ...
- MySQL8.0新特性实验1
Server层,选项持久化 mysql> show variables like '%max_connections%';+------------------------+-------+| ...
- 从mysql8.0读取数据并形成pandas dataframe类型数据,精确定位行列式中的元素,并读取
from pandas import * import pandas as pd from sqlalchemy import create_engine engine = create_engine ...
- mysql8.0 新特性,对json类型的常用操作
mysql8 新特性-json数据类型操作 -- 根据key(可多个)获取value SELECT JSON_EXTRACT('{"id": 14, "name" ...
- 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入
文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...
- MySQL8.0大表秒加字段,是真的吗?
前言: 很早就听说 MySQL8.0 支持快速加列,可以实现大表秒级加字段.笔者自己本地也有8.0环境,但一直未进行测试.本篇文章我们就一起来看下 MySQL8.0 快速加列到底要如何操作. 1.了解 ...
- Mysql8关于hashjoin的代码处理方式
Mysql8关于hashjoin的代码处理方式 目录 Mysql8关于hashjoin的代码处理方式 1 表的Schema如下所示: 2 HashJoin代码实现 3 总结 1 表的Schema如下所 ...
随机推荐
- MATLAB画图笔记
plot函数 plot(x,y)默认格式: 若x,y是向量,则它们必须具有相同的长度.函数将以x为横轴,绘制y. 若x,y都是矩阵,则它们必须具有相同的尺寸,plot函数将针对x的各列绘制y的每列.更 ...
- [RN] React Native 使用开源库 react-native-image-crop-picker 实现图片选择、图片剪裁
React Native 使用开源库 react-native-image-crop-picker 实现图片选择.图片剪裁 该库可以实现启动本地相册和照相机来采集图片,并且提供多选.图片裁剪等功能,支 ...
- sysmain服务怎么启动 & Win7 SuperFetch无法启动
在控制面板/管理工具/服务中,只需找到Superfetch这个服务,双击,然后将其启动类型改为自动,并点击启动按钮并确定即可. Superfetch无法启动,系统找不到指定档案 ms-windows ...
- Spring Transaction 使用入门
一.开篇陈述 1.1 写文缘由 最近在系统学习spring框架IoC.AOP.Transaction相关的知识点,准备写三篇随笔记录学习过程中的感悟.这是第一篇,记录spring Transactio ...
- Redis缓存穿透、缓存雪崩、redis并发问题 并发竞争key的解决方案 (阿里)
阿里的人问我 缓存雪崩(大量数据在同一时间过期了)了如何处理,缓存击穿了如何处理,回答的很烂,做了总结: 把redis作为缓存使用已经是司空见惯,但是使用redis后也可能会碰到一系列的问题,尤其是数 ...
- k8s相关
卸载kubernetes-dashboard kubectl get secret,sa,role,rolebinding,services,deployments --namespace=kube- ...
- eventlet 模块搭建 WEB 服务器
eventlet这个强悍的东东,看到我同事的一些整理.故贴出来,大家一起分享~ motivation 114.113.199.11服务器上nova服务中基于python eventlet实现的定时任务 ...
- JMeter的接口测试使用
1 先创建线程组
- Unable to resolve dependency for ':app@debug/compileClasspath' could not resolve com.android.support:design:28.0.0
使用AndroidStudio3.2报这个错 配置 解决方法 1)去掉代理 gradle目录的下代理属性也 注销掉. 2)项目的gradle设定 3)设定项目的gradle-wrapper.pro ...
- File checksum
File checksum https://golang.org/pkg/io/#Copy https://blog.iphpo.com/blog/2017/03/golang-產生檔案的md5-ha ...