mysql最大字段数

一直对mysql最大字段数不明确有人说是1024

还有人说

Max columns per row 4096

InnoDB is limited to 1000columns

实践是检验真理的唯一方法

mysql> use test;

mysql> create table t0008(id int) engine=innodb DEFAULT CHARSET=latin1;

[root@localhost ~]# vim add.sh

#/bin/bash

num=2

while((num<2000))

do

echo $num

mysql -p123456 -D test -e "alter table t0008 add column(col$num char(1))"

num=$(($num+1))

done

[root@localhost ~]# ./add.sh

Warning: Using a password on the command line interface can be insecure.

1017

Warning: Using a password on the command line interface can be insecure.

1018

Warning: Using a password on the command line interface can be insecure.

ERROR 1117 (HY000) at line 1: Too many columns

mysql> desc t0008;

+---------+------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+---------+------------+------+-----+---------+-------+

| id | int(11) | YES | | NULL | |

| col2 | varchar(1) | YES | | NULL | |

| col3 | varchar(1) | YES | | NULL | |

...............................................................................

...............................................................................

| col1014 | varchar(1) | YES | | NULL | |

| col1015 | varchar(1) | YES | | NULL | |

| col1016 | varchar(1) | YES | | NULL | |

| col1017 | varchar(1) | YES | | NULL | |

+---------+------------+------+-----+---------+-------+

1017 rows in set (0.01 sec)

mysql innodb引擎支持最大字段上线为1017

mysql> create table t0011(col1 char(1)) engine=myisam DEFAULT CHARSET=latin1;

Query OK, 0 rows affected (0.00 sec)

[root@localhost ~]# ./add.sh

Warning: Using a password on the command line interface can be insecure.

2410

Warning: Using a password on the command line interface can be insecure.

2411

Warning: Using a password on the command line interface can be insecure.

ERROR 1117 (HY000) at line 1: Too many columns

2412

Warning: Using a password on the command line interface can be insecure.

ERROR 1117 (HY000) at line 1: Too many columns

mysql> desc t0011;

+---------+---------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+---------+---------+------+-----+---------+-------+

| col1 | char(1) | YES | | NULL | |

| col2 | char(1) | YES | | NULL | |

| col3 | char(1) | YES | | NULL | |

.........................................................................

........................................................................

| col2408 | char(1) | YES | | NULL | |

| col2409 | char(1) | YES | | NULL | |

| col2410 | char(1) | YES | | NULL | |

+---------+---------+------+-----+---------+-------+

2410 rows in set (0.04 sec)

mysql myisam引擎最大字段上限为2410

-----------------------------------------------------------------------------------------------------------------

varchar字段的长度

mysql> create table t0008(col1 varchar(65535))charset=latin1;

ERROR 1118 (42000): 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

mysql> create table t0008(col1 varchar(65534))charset=latin1;

ERROR 1118 (42000): 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

mysql> create table t0008(col1 varchar(65533))charset=latin1;

ERROR 1118 (42000): 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

mysql> create table t0008(col1 varchar(65532))charset=latin1;

Query OK, 0 rows affected (0.02 sec)

latin1字符集下的表varchar上限为65532,即一个字符一个字节

mysql> create table t0009(col1 varchar(65533))charset=utf8;

ERROR 1074 (42000): Column length too big for column "col1" (max = 21845); use BLOB or TEXT instead

mysql> create table t0009(col1 varchar(21845))charset=utf8;

ERROR 1118 (42000): 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

mysql> create table t0009(col1 varchar(21844))charset=utf8;

Query OK, 0 rows affected (0.00 sec)

utf8字符集下的表varchar上限为21844,即一个字符三个字节 65535-1-2 结果除以3 ==21844

-1表示第一个字节不存数据,-2表示两个字节存放varchar的长度,除以3是utf8字符特性,一个字符三个字节。

varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535即 2的16次方(0-65535)

mysql> create table t0012(id int,name char(20),col3 varchar(N))chaset=utf8;

N的值为:(65535-1-2-4-20*3)/3=21822

mysql> create table t0012(id int,name char(20),col3 varchar(N))charset=latin1;

N的值为:65535-1-2-4-20=65508

char_length:在任何编码下, 不管汉字还是数字或者是字母都算是一个字符

length: 是计算字段的长度, utf8编码下,一个汉字是算三个字符,一个数字或字母算一个字符。其他编码下,一个汉字算两个字符, 一个数字或字母算一个字符。 CHARACTER_LENGTH(str) CHARACTER_LENGTH()是CHAR_LENGTH()的同义词。 BIT_LENGTH(str) 返回2进制长度

MySQL数据类型(留作备忘)

类 型

大 小

描 述

CAHR(Length)

Length字节

定长字段,长度为0~255个字符

VARCHAR(Length)

String长度+1字节或String长度+2字节

变长字段,长度为0~65 535个字符

TINYTEXT

String长度+1字节

字符串,最大长度为255个字符

TEXT

String长度+2字节

字符串,最大长度为65 535个字符

MEDIUMINT

String长度+3字节

字符串,最大长度为16 777 215个字符

LONGTEXT

String长度+4字节

字符串,最大长度为4 294 967 295个字符

TINYINT(Length)

1字节

范围:-128~127,或者0~255(无符号)

SMALLINT(Length)

2字节

范围:-32 768~32 767,或者0~65 535(无符号)

MEDIUMINT(Length)

3字节

范围:-8 388 608~8 388 607,或者0~16 777 215(无符号)

INT(Length)

4字节

范围:-2 147 483 648~2 147 483 647,或者0~4 294 967 295(无符号)

BIGINT(Length)

8字节

范围:-9 223 372 036 854 775 808~9 223 372 036 854 775 807,或者0~18 446 744 073 709 551 615(无符号)

FLOAT(Length, Decimals)

4字节

具有浮动小数点的较小的数

DOUBLE(Length, Decimals)

8字节

具有浮动小数点的较大的数

DECIMAL(Length, Decimals)

Length+1字节或Length+2字节

存储为字符串的DOUBLE,允许固定的小数点

DATE

3字节

采用YYYY-MM-DD格式

DATETIME

8字节

采用YYYY-MM-DD HH:MM:SS格式

TIMESTAMP

4字节

采用YYYYMMDDHHMMSS格式;可接受的范围终止于2037年

TIME

3字节

采用HH:MM:SS格式

ENUM

1或2字节

Enumeration(枚举)的简写,这意味着每一列都可以具有多个可能的值之一

SET

1、2、3、4或8字节

与ENUM一样,只不过每一列都可以具有多个可能的值

mysql最大述_mysql最大字段数量及 varchar类型总结相关推荐

  1. mysql最大字段数_mysql最大字段数量及 varchar类型总结

    mysql最大字段数 一直对mysql最大字段数不明确有人说是1024 还有人说 Max columns per row 4096 InnoDB is limited to 1000columns 实 ...

  2. mysql 插入加锁_MySQL的死锁系列- 锁的类型以及加锁原理

    疫情期间在家工作时,同事使用了 insert into on duplicate key update 语句进行插入去重,但是在测试过程中发现了死锁现象: ERROR 1213 (40001): De ...

  3. mysql 删除顺序_mysql 添加字段、删除字段、调整字段顺序 转

    ALTER TABLE - 更改表属性 添加字段: alter table `user_movement_log` Add column GatewayId int  not null default ...

  4. mysql 命名 冲突_MySQL中字段名和保留字冲突的解决办法

    我们知道通常的SQL查询语句是这么写的: 复制代码 代码如下:select col from table; 这当然没问题,但如果字段名是"from"呢? 复制代码 代码如下:sel ...

  5. mysql groupby 拼接_mysql groupby 字段合并问题(group_concat)

    在我们的日常mysql查询中,我们可能会遇到这样的情况: 对表中的所有记录进行分类,并且我需要得到每个分类中某个字段的全部成员. 上面的话,大家看起来可能不太好懂,下面举一个例子来给大家说明. 现在我 ...

  6. mysql系统属性_mysql 显示表字段及mysql系统信息

    SHOW DATABASES                                //列出 MySQL Server 数据库. SHOW TABLES [FROM db_name]      ...

  7. mysql 去重计算公式_mysql多字段去重,并计数

    Mysql版本5.5.42 有两个表,表结构与数据如下 1.goods表 CREATE TABLE `goods` ( `id` int(10) unsigned NOT NULL, `product ...

  8. mysql in 截断_MySQL十进制字段’数据在第1行的第x列被截断’问题

    我有一个带小数(16,2)字段的mysql表.看起来像使用另一个十进制(16,2)字段字符串的加法操作可能会导致第1行问题的列x截断数据,这会在我的django项目中引发异常. 我知道该字段的乘法或除 ...

  9. c mysql 包含字符串_Mysql字符串字段判断是否包含某个字符串的2种方法

    假设有个表: 复制代码 代码如下:CREATE TABLE users(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),user_name VAR ...

最新文章

  1. 360浏览器如何保存html文件夹下,在360浏览器中将书签保存的详细步骤
  2. 某大龄程序员哀叹:夫妻双失业后还不起房贷,被迫断供!四年还了80万,60多万都是利息!...
  3. 人工智能落地之路:从概念验证到产品
  4. 牛客网华为机试题 字符串问题 记录
  5. python select模块安装_python+selenium select下拉选择框定位处理方法
  6. URI, URL, URN
  7. 基类成员的public访问权限在派生类中变为_C++ 派生类的构造函数举例:继承+组合(学习笔记:第7章 07)...
  8. P3501-[POI2010]ANT-Antisymmetry【hash,二分答案】
  9. web api json_有关使用JSON Web令牌保护无服务器API的速成班
  10. java面试题37 关于对象成员占用内存的说法哪个正确?( )
  11. 利用C++语言设计可扩展线程池
  12. 开平区教育局资源分布式存储解决方案
  13. BP神经网络数据预测(excel)
  14. 163vip邮箱登陆有哪些方法?哪种最便捷?
  15. ZwSe2团队共识V0.1
  16. 前端——使用JavaScript(jQuery)通过身份证号获取籍贯、生日、年龄、性别
  17. Elasticsearch 压测方案之 es rally 简介
  18. pytorch的paramter
  19. Jolla 宣布 Sailfish 系统浏览器开源
  20. aden -接球游戏3.0

热门文章

  1. Spring MVC入门示例教程--静态页面跳转
  2. java 钩子_java中钩子方法的概念
  3. 编译器不识别stm指令_编译器简介
  4. java解决特殊字符输出
  5. 3.2.4 OS之页面分配策略(驻留集、页面分配、置换策略、抖动现象、工作集)
  6. 1.1.2 操作系统的特征(并发、共享、虚拟、异步)
  7. python 天气预报 mysql_Python+PyQt5+MySQL实现天气管理系统
  8. 算法练习day10——190328(根据指定值划分单链表、复制含有rand指针节点的链表、两个单链表相交)
  9. 基于stm32、spi协议的Fatfs文件系统移植(附完整代码下载)
  10. ue4 classuobject没有成员beginplay_给社团新成员准备的教学大纲