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如下所 ...
随机推荐
- [React] Use CSS Transitions to Avoid a Flash of Loading State
Based on research at Facebook, we know that if a user sees a flash of loading state, they perceive t ...
- BZOJ 2600: [Ioi2011]ricehub 双指针+贪心
不难发现,当我们要选的区间确定后,一定会把仓库安排到中间的稻草上(如果是偶数个的话中间两个都行). 然后按照坐标从小到大枚举右指针,左指针一定不递减,双指针扫一下就行了. code: #include ...
- html 复习(for循环不同内容的div)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 如何查看WinDbg扩展有哪些命令
如果您想查看任何windbg扩展所支持的命令,可以采用各种方法. 你可以用!<ext_name>.help命令查看该扩展支持的所有命令.用扩展模块名替换<ext_name>.( ...
- A1136 | 字符串处理、大整数运算
题目链接: https://www.patest.cn/contests/pat-a-practise/1136 今天是12月17号.最近这几天都有点不在状态.已经整整一周没有练算法了,自从12.3考 ...
- NOI2019 Day1游记
Day1挂了,没什么好说的... 开场T1想到70分暴力就走人了,后来发现可以写到85...(听说有人写dfs过了95?233333) T2刚了2个多小时,得到每次只在中间填最大值的结论后不会区间DP ...
- Linux 和 windows下查看运行命令的位置
经常遇到要查看某个命令的运行文件在哪儿! 比如说vue cli,经常使用vue命令创建项目,如果你对nodejs的全局包安装目录了解可能一下就找到了, 蛋疼的是不一定每个命令都是nodejs下的,有可 ...
- js之select三级联动
效果图如下: 代码逻辑梳理:层层递进,比如选择了课程后,将对应的课程id保存,然后点击选择章时自动触发对应的时间,根据这个课程ID获取其下面的章信息.其它的如节等,同理. 代码说明:如下代码不规范,可 ...
- cloudstack 安装 install for ubuntu
准备工作环境信息 修改dns配置 设置阿里源root@sh-saas-cs-manager-online-01:~# mv /etc/apt/sources.list /etc/apt/sources ...
- Salt-Formulas的使用
Saltstack自0.17.x版本开始引进Formulas的概念,旨在通过简化State和集成数据来实现State的友好管理.根据SALT FORMULAS的官方文档,在完成手动添加formula目 ...