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如下所 ...
随机推荐
- matplotlib双y周实例e
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport pymysqlimport warningsimp ...
- 关于绿盟RSAS使用时遇到的问题
本周在使用绿盟RSAS扫描工具时遇到了一些问题: 一.扫描工具在家测试可以正常工作,到了现场设置正确但Web端页面打不开: 二.扫描器可以正常进行扫描,并且成功扫描出结果,但显示目标主机没有问题: 原 ...
- BZOJ 4903: [Ctsc2017]吉夫特 数论+dp
思路很巧妙的一道题 ~ 这个应该不完全是正解,复杂度约为 $O(3\times 10^8)$,有时间再研究研究正解. 首先,最裸的暴力是按照权值从小到大枚举每一个数,然后枚举后面的数来更新方案数,是 ...
- 网卡可以绑定cpu提高吞吐量
请看大神帖子:https://blog.csdn.net/nawenqiang/article/details/82854929 需要做什么呢? 首先,确认你是否运行irqbalance,这个是nic ...
- 联想M7216NWA墨粉清零:
在设备就绪状态下,按"功能"键,进入设置菜单,按上下键进行选择,屏幕出现"设备信息"项时按"确认"键,再按上下键选择,当屏幕出现" ...
- GlusterFS常用设置命令
可信存储池(Trusted Storage Pool)创建存储池例如要创建一个包含3个服务器的存储池,则需要从第一个服务器server1中把另外两个服务器加入存储池中:# gluster peer p ...
- 刷题记录:[De1CTF 2019]Giftbox && Comment
目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...
- 使用gdb调试段错误
[https://blog.csdn.net/xj9120/article/details/91380074] 1.bt 2.frame number 3.一般是内存问题 4.kill
- IT项目经理都需要具备哪些能力
发布时间:05-2009:24优质原创作者 项目经理是IT行业中比较常见的职位,工作职责主要包括三个方面,其一是资源整合任务:其二是沟通协调任务:其三是保障项目的时间周期. 资源整合能力是项目经理的重 ...
- UnityVR案例 - VR僵尸大战(HTC VIVE)
使用HTCvive设备开发的一款射击类游戏(Unity5.6.3),玩家在游戏中使用手枪.手榴弹或者技能杀死僵尸. 亮点功能:手势识别,语音唤醒(关键词识别) 手势识别:玩家使用手柄在游戏中绘制事先录 ...