欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 运维知识 > 数据库 >内容正文

数据库

mysql最大述-凯发k8官方网

发布时间:2024/10/8 数据库 1 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 mysql最大述_mysql最大字段数量及 varchar类型总结 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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一样,只不过每一列都可以具有多个可能的值

与50位技术专家面对面20年技术见证,附赠技术全景图

总结

以上是凯发k8官方网为你收集整理的mysql最大述_mysql最大字段数量及 varchar类型总结的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

网站地图