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个字符

TINYTEXTString长度+1字节字符串,最大长度为255个字符

TEXTString长度+2字节字符串,最大长度为65 535个字符

MEDIUMINTString长度+3字节字符串,最大长度为16 777 215个字符

LONGTEXTString长度+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,允许固定的小数点

DATE3字节采用YYYY-MM-DD格式

DATETIME8字节采用YYYY-MM-DD HH:MM:SS格式

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

TIME3字节采用HH:MM:SS格式

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

SET1、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 text查找性能_MySQL TEXT字段性能

    I now know that TEXT fields are written to disk rather than in memory when queried 仅当查询需要临时表来存储多个排序或 ...

  3. mysql字段替换_mysql 替换字段部分内容及mysql 替换函数replace()

    [mysql]replace的用法(替换某字段部分内容) [mysql]replace的用法 1.replace into replace into table (id,name) values('1 ...

  4. mysql新增字段顺序_mysql 添加字段、删除字段、调整字段顺序 转

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

  5. MYSQL数据库字段关联_MySQL数据库 字段操作 多表关系(更新中...)

    外键 (foreign key) ## 外键 ```mysql # 作者(author):id,name,sex,age,mobile, detail_id # 作者详情(author_detail) ...

  6. mysql explain扫描行数_mysql explain扫描行数问题

    MySQL的Explain的Type中,Rang跟Ref有什么区别? type 中的各个意思 | ALL | 全表扫描 | index | 索引全扫描 | range | 索引范围扫描. mysql ...

  7. mysql韩语排序_MySQL汉字字段按拼音排序

    我们的MySQL使用latin1的默认字符集,也就是说,对汉字字段直接使用GBK内码的编码进行存储,当需要对一些有汉字的字段进行拼音排序时(特别涉及到类似于名字这样的字段时),默认无法通过order ...

  8. mysql 查看blob字段大小_MYSQL BLOB 字段大小以及个数的限制测试。

    测试结论 mysql版本 5.1     表类型: innodb, row_format=compact (这是默认的行格式)     插入超过10个blob, blob的数据量很小(<768字 ...

  9. mysql 多主键_MySQL多字段主键

    MySql多字段主键又可以成为复合主键,复合主键也是主键的一种与主键具有相同的功能和定义,所谓的复合主键,就是指表的主键含有一个以上的字段组成 . MySQL多字段主键又可以成为复合主键.复合主键也是 ...

最新文章

  1. 皮一皮:绿灯侠是怎么诞生的...
  2. python基础语法有哪些-python有哪些语法元素
  3. php怎么输出mysql一条数据,MySQL数据输出在一个可打印的PHP变量
  4. linux伙伴系统算法,Linux伙伴系统(三)--分配
  5. ok计数器使用教程_玩转透视表!Excel教程 Excel入门 Excel技巧 Excel快捷键 Excel学习!...
  6. 数据结构 快速排序的三种实现 (hoare版本 挖坑法 前后指针版本)与非递归实现
  7. linux操作系统漏洞,常见的操作系统漏洞有哪些
  8. 动态的显示当前的时间---setInterval的用法
  9. 转载:向 XPath 中添加自定义函数
  10. 制作AR换装游戏(上篇AR识图)#1024程序员节#
  11. mysql 蚂蚁金服_面试蚂蚁金服,首战被MySQL惨虐,熬夜啃透这份阿里面经复盘一个月再战拿下P7offer...
  12. “use strict” 严格模式使用
  13. 当我开始学微信公众号开发时,我要学什么?
  14. 通过修复VMware软件解决虚拟机无法识别到U盘设备的问题
  15. Unity Monetization 3.0 部分接入文档内容
  16. 如何成为有效学习的高手 学习笔记
  17. 一种高效自然光供电的6LoWPAN无线传感节点
  18. 爬虫之获取各大网站热搜并实现语音播报
  19. php页游sf源码,开源程序 PHP源码 页游联运系统 CPA+CPS
  20. 半年私域流量产值7.3亿,特步私域之路走对了吗?

热门文章

  1. Pytorch之认识Variable
  2. 第四篇 NumPy基础:数组和⽮量计算
  3. DevExpress 之 GridControl 自定义列
  4. Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信...
  5. 前端性能优化不完全手册 【已更新至React、原生JS懒加载和Nginx负载均衡】
  6. 深入详解Java线程池——ThreadPoolExecutor
  7. iOS 设计模式浅析 0 - 前言
  8. iOS 第三方框架-SDWebImage
  9. php中时间戳和正常日期的相互转化
  10. Flex4 在advanceddatagrid组件中以“树形结构”显示数据