大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
varchar(20):20指的是表中的a字段能存储的最大字符个数
In contrast to CHAR
, VARCHAR
values are stored as a 1-byte or 2-byte length prefix plus data.
The length prefix indicates the number of bytes in the value.
A column uses one length byte if values require no more than 255 bytes,
two length bytes if values may require more than 255 bytes.
mysql> create table t1( a varchar(20)); Query OK, 0 rows affected (0.27 sec)
mysql> show create table t1; +-------+--------------------------------------------------------------- | Table | Create Table +-------+--------------------------------------------------------------- | t1 | CREATE TABLE `t1` ( `a` varchar(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------+--------------------------------------------------------------- 1 row in set (0.00 sec)
mysql> insert into t1 select repeat("a",21); ERROR 1406 (22001): Data too long for column 'a' at row 1
mysql> insert into t1 select repeat("a",20); Query OK, 1 row affected (0.09 sec) Records: 1 Duplicates: 0 Warnings: 0
mysql> insert into t1 select repeat("我",21); ERROR 1406 (22001): Data too long for column 'a' at row 1
mysql> insert into t1 select repeat("我",20); Query OK, 1 row affected (0.11 sec) Records: 1 Duplicates: 0 Warnings: 0
mysql> insert into t1 select "我我我我我我我我我我我我我我我我我我我1"; Query OK, 1 row affected (0.09 sec) Records: 1 Duplicates: 0 Warnings: 0
mysql> insert into t1 select "我我我我我我我我我我我我我我我我我我我11"; ERROR 1406 (22001): Data too long for column 'a' at row 1
varchar 存储极限:
表为utf8字符集:
mysql> show create table a; +-------+-------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+-------------------------------------------------------------------------------------------+ | a | CREATE TABLE `a` ( `a` varchar(21844) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------+-------------------------------------------------------------------------------------------+ 1 row in set (0.01 sec)
mysql> create table a( a varchar(65535)); ERROR 1074 (42000): Column length too big for column 'a' (max = 21845); use BLOB or TEXT instead
mysql> create table a( a varchar(65532)); ERROR 1074 (42000): Column length too big for column 'a' (max = 21845); use BLOB or TEXT instead
mysql> create table a( a varchar(21845)); ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes st eck the manual. You have to change some columns to TEXT or BLOBs
mysql> create table a( a varchar(21844)); Query OK, 0 rows affected (0.31 sec)
表为latin1字符集:
mysql> create table a1 ( a varchar(65535))charset=latin1; ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, eck the manual. You have to change some columns to TEXT or BLOBs
mysql> create table a1 ( a varchar(65534))charset=latin1; ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, eck the manual. You have to change some columns to TEXT or BLOBs
mysql> create table a1 ( a varchar(65533))charset=latin1; ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, eck the manual. You have to change some columns to TEXT or BLOBs
mysql> create table a1 ( a varchar(65532))charset=latin1; Query OK, 0 rows affected (0.33 sec)
不能插入汉字:
mysql> insert into a1 select repeat("我",65532); ERROR 1366 (HY000): Incorrect string value: '\xE6\x88\x91\xE6\x88\x91...' for column 'a' at row 1 mysql> insert into a1 select "我"; ERROR 1366 (HY000): Incorrect string value: '\xE6\x88\x91' for column 'a' at row 1
mysql> insert into a1 select repeat("a",65532); Query OK, 1 row affected (0.17 sec) Records: 1 Duplicates: 0 Warnings: 0
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/167050.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...