mysql varchar
时间: 2024-04-07 15:27:05 浏览: 83
在MySQL中,varchar是一种用于存储可变长度字符数据的数据类型。它可以存储最大长度为65535个字节的字符数据,但是需要注意以下几点:
1. 如果在一个表中只有一个varchar字段,并且该字段设置为NOT NULL,那么该字段的最大长度为65533个字节,即65535-2=65533byte[^1]。
2. 如果在一个表中有多个字段,并且其中一个字段是varchar类型,那么该表的行大小不能超过65535个字节,不包括BLOB类型的字段。如果超过了这个限制,你需要将一些字段改为TEXT或BLOB类型。
下面是一些示例:
1. 创建一个表t4,其中包含一个int字段c,一个char(30)字段c2,和一个varchar(21812)字段c3:
```mysql
mysql> create table t4(c int, c2 char(30), c3 varchar(21812)) charset=utf8;
Query OK, 0 rows affected (0.05 sec)
```
2. 创建一个表t5,其中包含一个int字段c,一个char(30)字段c2,和一个varchar(21813)字段c3。由于行大小超过了限制,会报错:
```mysql
mysql> create table t5(c int, c2 char(30), c3 varchar(21813)) charset=utf8;
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
```
3. 创建一个表t2,其中只有一个varchar字段name,并且该字段设置为NOT NULL。该字段的最大长度为65533个字节:
```mysql
mysql> create table t2 ( name varchar(65533) not null) charset=latin1;
Query OK, 0 rows affected (0.03 sec)
```
4. 创建一个表t3,其中只有一个varchar字段name,并且该字段设置为NOT NULL。由于字段长度超过了限制,会报错:
```mysql
mysql> create table t3 ( name varchar(65534) not null) charset=latin1;
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
```
阅读全文