首先要确定mysql版本,一般一个汉字2个字节,50即可存25个汉字。
40版本以下,varchar(100),指的是100字节,如果存放UTF8汉字时,只能存33个(每个汉字3字节)
50版本以上,varchar(100),指的是100字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放100个。
varchar特点
1、使用比固定长度类型(char)占用更少存储空间(除了使用ROW_FORMAT=FIXED创建的MyISAM表)。
2、使用额外的1-2字节来存储值长度,列长度<=255使用1字节保存,其它情况使用2字节保存。例如varchar(10)会占用11字节存储空间,varchar(500)会占用502字节存储空间。
3、节约空间,所以性能会有帮助。在更新的时候会产生额外的工作。
百度百科-varchar
在MSSQL2005及以上的版本中,加入大值数据类型(varchar(max)、nvarchar(max)、varbinary(max))。大值数据类型最多可以存储2^30-1个字节的数据。
这几个数据类型在行为上和较小的数据类型 varchar、nvarchar 和 varbinary 相同。
微软的说法是用这个数据类型来代替之前的text、ntext 和 image 数据类型,它们之间的对应关系为:
varchar(max)-------text;
nvarchar(max)-----ntext;
varbinary(max)----image
MSSQL SQL语句的最大长度是有限度的,对于varchar类型最多可以有8000个字符(varchar如果含中文字符,则一个中文字符要占两位),nvarchar类型最多可以接受4000个字符,超出限制长度的部分会被截掉,语句可能因此变得不完整而无法执行。
数据库中有几十上百张表,那么哪些表的数据量比较大呢,总不能一个表一个表的去查询吧,在mysql中也有类似于oracle的数据字典表,只不过mysql没有oracle记录的那么多和详细,但也足够我们查询这些信息了。
在mysql的information_schema下有存储数据库基本信息的数据字典表,可以通过查询tables表来获得所需要的表相关信息。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
|mysql |
|report |
| report_result |
|test |
+--------------------+
5 rows in set (002 sec)
mysql> use information_schema;
Database changed
mysql> show tables;
+---------------------------------------+
|Tables_in_information_schema |
+---------------------------------------+
|CHARACTER_SETS |
|COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
|COLUMNS |
|COLUMN_PRIVILEGES |
|KEY_COLUMN_USAGE |
|PROFILING |
|ROUTINES |
|SCHEMATA |
|SCHEMA_PRIVILEGES |
|STATISTICS |
|TABLES |
|TABLE_CONSTRAINTS |
|TABLE_PRIVILEGES |
|TRIGGERS |
|USER_PRIVILEGES |
|VIEWS |
+---------------------------------------+
17 rows in set (000 sec)
那么我们查看一下talbes表结构信息,看看存储的具体信息
mysql> desc tables;
+-----------------+--------------+------+-----+---------+-------+
| Field |Type | Null | Key | Default |Extra |
+-----------------+--------------+------+-----+---------+-------+
| TABLE_CATALOG | varchar(512) | YES | | NULL | |
| TABLE_SCHEMA | varchar(64) | NO | | | |
| TABLE_NAME | varchar(64) | NO | | | |
| TABLE_TYPE | varchar(64) | NO | | | |
| ENGINE |varchar(64) | YES | |NULL | |
| VERSION |bigint(21) | YES | |NULL | |
| ROW_FORMAT | varchar(10) | YES | | NULL | |
| TABLE_ROWS | bigint(21) | YES | | NULL | |
| AVG_ROW_LENGTH | bigint(21) | YES | | NULL | |
| DATA_LENGTH | bigint(21) | YES | | NULL | |
| MAX_DATA_LENGTH | bigint(21) | YES | | NULL | |
| INDEX_LENGTH | bigint(21) | YES | | NULL | |
| DATA_FREE | bigint(21) |YES | | NULL | |
| AUTO_INCREMENT | bigint(21) | YES | | NULL | |
| CREATE_TIME | datetime |YES | | NULL | |
| UPDATE_TIME | datetime |YES | | NULL | |
| CHECK_TIME | datetime |YES | | NULL | |
| TABLE_COLLATION | varchar(64) | YES | |NULL | |
| CHECKSUM | bigint(21) |YES | | NULL | |
| CREATE_OPTIONS | varchar(255) | YES | |NULL | |
| TABLE_COMMENT | varchar(80) | NO | | | |
+-----------------+--------------+------+-----+---------+-------+
21 rows in set (000 sec)
主要存储了表的信息如表使用的引擎,表的类型等信息。我们可以通过查询table_rows属性获得哪些表数据量比较大。
mysql> select table_name,table_rows from tables order by table_rows desc limi 10;
+---------------+------------+
| table_name |table_rows |
+---------------+------------+
| task6 | 1558845 |
| task | 1554399 |
| task5 | 1539009 |
| task3 | 1532169 |
| task1 | 1531143 |
| task2 | 1531143 |
| task4 | 1521225 |
| task7 | 980865 |
我们继续深入思考,这些存储的数据是否准确,是否真实的反应了表中数据量大小?
mysql> show create table tables \G;
1 row
Table: TABLES
Create Table: CREATE TEMPORARY TABLE`TABLES` (
`TABLE_CATALOG` varchar(512) default NULL,
`TABLE_SCHEMA` varchar(64) NOT NULL default '',
`TABLE_NAME` varchar(64) NOT NULL default '',
`TABLE_TYPE` varchar(64) NOT NULL default '',
&nb
varchar 在503以前长度可以为0~255, 之后是65535
varchar(2000)正确
varchar(255) 大概可以存255字节的字符串, 中英文占位不同, 字符数也不同
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
发贴子的时候,有时候会发很长的一篇贴子,那怎么办啊?
好像:varchar是最大的:8000!
可是有的贴子还是放不下!说是:二进制代码被截断什么的!
这是怎么回事啊?谢谢!
解析:
2000之前版本
ntext,用于 Unicode 字符,最大长度1G个字符,最大存储空间2GB
text,用于非 Unicode 字符,最大长度2G个字符,最大存储空间2GB
2005之后版本应该用nvarchar(max),varchar(max)代替ntext和text,另外可以用更高效的xml类型。它们的最大存储空间都是2GB
在 Microsoft SQL Server 的未来版本中将删除 ntext、text 和 image 数据类型
以上就是关于mysql 数据库varchar可以存储多少个汉字和多少个数字全部的内容,包括:mysql 数据库varchar可以存储多少个汉字和多少个数字、数据库nvarchar(max)最多可以存多少字符、SQL的语句最大长度限制多少字符等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)