mysql中的设置varchar长度问题...

作者&投稿:学启 (若有异议请与网页底部的电邮联系)
Mysql中的varchar 如何设置最大长度~

mysql varchar(50) 不管中文 还是英文 都是存50个的

MySQL5的文档,其中对varchar字段类型这样描述:varchar(m) 变长字符串。M 表示最大列长度。M的范围是0到65,535。(VARCHAR的最大实际长度由最长的行的大小和使用的字符集确定,最大有效长度是65,532字节)。

为何会这般变换?真是感觉MySQL的手册做的太不友好了,因为你要仔细的继续往下读才会发现这段描述:MySQL

5.1遵从标准SQL规范,并且不删除VARCHAR值的尾部空格。VARCHAR保存时用一个字节或两个字节长的前缀+数据。如果VARCHAR列声明的长度大于255,长度前缀是两个字节。

好了,貌似懂了一点。但具体他说的长度大于255时使用2个字节长度前缀,小学减法题:65535 - 2 = 65533啊。不知道这些大牛如何计算的,暂且保留疑问吧?

注:我测试了一下使用UTF8编码,varchar的最大长度为21854字节。

在mysql 5.0.45版本,数据库编码utf8下进行测试:varchar最长定义为21785。也就是说不论字母、数字、汉字,只能放21785个。

mysql中 varchar(20)数据长度超过了是设置错误造成的,解决方法为:
1、通过my.ini(Linux下为my.cnf)的配置文件进行修改。一般my.ini文件在安装文件的根目录下。

2、系统是Windows10,安装目录下没有my.ini文件。

3、仔细找了一下,my.ini文件在ProgramData下。

4、打开配置文件,在 [mysqld] 的后面加入一行“ft_min_word_len=1”。PS:也可以设置成ft_min_word_len=2,具体情况根据自己的中文数据而定。

5、重启MySQL服务。注意,配置文件修改后一定要重启服务后才能生效。

6、查看一下最小索引长度,确定生效。SQL语句:SHOW GLOBAL VARIABLES LIKE '%__word_len%'。

50个汉字
在MySQL输入测试,varchar(2),存储两个汉字不出错,多了出错,
也就是varchar(50)可以存50个
下面的你可能会用到
MySQL数据类型
MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述。概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许格式。

由MySQL支持的列类型列在下面。下列代码字母用于描述中:

M
指出最大的显示尺寸。最大的合法的显示尺寸是 255 。
D
适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。最大可能的值是30,但是应该不大于M-2。
方括号(“[”和“]”)指出可选的类型修饰符的部分。

注意,如果你指定一个了为ZEROFILL,MySQL将为该列自动地增加UNSIGNED属性。

TINYINT[(M)] [UNSIGNED] [ZEROFILL]
一个很小的整数。有符号的范围是-128到127,无符号的范围是0到255。

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
一个小整数。有符号的范围是-32768到32767,无符号的范围是0到65535。

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
一个中等大小整数。有符号的范围是-8388608到8388607,无符号的范围是0到16777215。

INT[(M)] [UNSIGNED] [ZEROFILL]
一个正常大小整数。有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295。

INTEGER[(M)] [UNSIGNED] [ZEROFILL]
这是INT的一个同义词。

BIGINT[(M)] [UNSIGNED] [ZEROFILL]

一个大整数。有符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到

18446744073709551615。注意,所有算术运算用有符号的BIGINT或DOUBLE值完成,因此你不应该使用大于9223372036854775807(63位)的有符号大整数,除了位函数!注意,当两个参数是INTEGER值时,-、+和*将使用BIGINT运算!这意味着如果你乘2个大整数(或来自于返回整数的函数),如果结果大于9223372036854775807,你可以得到意外的结果。一个浮点数字,不能是无符号的,对一个单精度浮点数,其精度可以是<=24,对一个双精度浮点数,是在25 和53之间,这些类型如FLOAT和DOUBLE类型马上在下面描述。FLOAT(X)有对应的FLOAT和DOUBLE相同的范围,但是显示尺寸和小数位数是未定义的。在MySQL3.23中,这是一个真正的浮点值。在更早的MySQL版本中,FLOAT(precision)总是有2位小数。该句法为了ODBC兼容性而提供。

FLOAT[(M,D)] [ZEROFILL]
一个小(单精密)浮点数字。不能无符号。允许的值是-3.402823466E+38到-1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。M是显示宽度而D是小数的位数。没有参数的FLOAT或有<24 的一个参数表示一个单精密浮点数字。

DOUBLE[(M,D)] [ZEROFILL]
一个正常大小(双精密)浮点数字。不能无符号。允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。M是显示宽度而D是小数位数。没有一个参数的DOUBLE或FLOAT(X)(25 < = X < = 53)代表一个双精密浮点数字。

DOUBLE PRECISION[(M,D)] [ZEROFILL]

REAL[(M,D)] [ZEROFILL]
这些是DOUBLE同义词。

DECIMAL[(M[,D])] [ZEROFILL]
一个未压缩(unpack)的浮点数字。不能无符号。行为如同一个CHAR列:“未压缩”意味着数字作为一个字符串被存储,值的每一位使用一个字符。小数点,并且对于负数,“-”符号不在M中计算。如果D是0,值将没有小数点或小数部分。DECIMAL值的最大范围与DOUBLE相同,但是对一个给定的DECIMAL列,实际的范围可以通过M和D的选择被限制。如果D被省略,它被设置为0。如果M被省掉,它被设置为10。注意,在MySQL3.22里,M参数包括符号和小数点。

NUMERIC(M,D) [ZEROFILL]
这是DECIMAL的一个同义词。

DATE
一个日期。支持的范围是'1000-01-01'到'9999-12-31'。MySQL以'YYYY-MM-DD'格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列。

DATETIME
一个日期和时间组合。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL以'YYYY-MM-DD HH:MM:SS'格式来显示DATETIME值,但是允许你使用字符串或数字把值赋给DATETIME的列。

TIMESTAMP[(M)]
一个时间戳记。范围是'1970-01-01 00:00:00'到2037年的某时。MySQL以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式来显示TIMESTAMP值,取决于是否M是14(或省略)、12、8或6,但是允许你使用字符串或数字把值赋给TIMESTAMP列。一个TIMESTAMP列对于记录一个INSERT或UPDATE操作的日期和时间是有用的,因为如果你不自己给它赋值,它自动地被设置为最近操作的日期和时间。你以可以通过赋给它一个NULL值设置它为当前的日期和时间。
TIME
一个时间。范围是'-838:59:59'到'838:59:59'。MySQL以'HH:MM:SS'格式来显示TIME值,但是允许你使用字符串或数字把值赋给TIME列。

YEAR[(2|4)]
一个2或4位数字格式的年(缺省是4位)。允许的值是1901到2155,和0000(4位年格式),如果你使用2位,1970-2069( 70-69)。MySQL以YYYY格式来显示YEAR值,但是允许你把使用字符串或数字值赋给YEAR列。(YEAR类型在MySQL3.22中是新类型。)

CHAR(M) [BINARY]
一个定长字符串,当存储时,总是是用空格填满右边到指定的长度。M的范围是1 ~ 255个字符。当值被检索时,空格尾部被删除。CHAR值根据缺省字符集以大小写不区分的方式排序和比较,除非给出BINARY关键词。NATIONAL CHAR(短形式NCHAR)是ANSI SQL的方式来定义CHAR列应该使用缺省字符集。这是MySQL的缺省。CHAR是CHARACTER的一个缩写。

[NATIONAL] VARCHAR(M) [BINARY]
一个变长字符串。注意:当值被存储时,尾部的空格被删除(这不同于ANSI SQL规范)。M的范围是1 ~ 255个字符。 VARCHAR值根据缺省字符集以大小写不区分的方式排序和比较,除非给出BINARY关键词值。 VARCHAR是CHARACTER VARYING一个缩写。

TINYBLOB

TINYTEXT
一个BLOB或TEXT列,最大长度为255(2^8-1)个字符。
BLOB

TEXT
一个BLOB或TEXT列,最大长度为65535(2^16-1)个字符。

MEDIUMBLOB

MEDIUMTEXT
一个BLOB或TEXT列,最大长度为16777215(2^24-1)个字符。
LONGBLOB

LONGTEXT
一个BLOB或TEXT列,最大长度为4294967295(2^32-1)个字符。

ENUM('value1','value2',...)
枚举。一个仅有一个值的字符串对象,这个值式选自与值列表'value1'、'value2', ...,或NULL。一个ENUM最多能有65535不同的值。

SET('value1','value2',...)
一个集合。能有零个或多个值的一个字符串对象,其中每一个必须从值列表'value1', 'value2', ...选出。一个SET最多能有64个成员。
参考资料:http://hi.baidu.com/iamcay

mysql varchar(50) 不管中文 还是英文 都是存50个的

MySQL5的文档,其中对varchar字段类型这样描述:varchar(m) 变长字符串。M 表示最大列长度。M的范围是0到65,535。(VARCHAR的最大实际长度由最长的行的大小和使用的字符集确定,最大有效长度是65,532字节)。

为何会这般变换?真是感觉MySQL的手册做的太不友好了,因为你要仔细的继续往下读才会发现这段描述:MySQL 5.1遵从标准SQL规范,并且不删除VARCHAR值的尾部空格。VARCHAR保存时用一个字节或两个字节长的前缀+数据。如果VARCHAR列声明的长度大于255,长度前缀是两个字节。

好了,貌似懂了一点。但具体他说的长度大于255时使用2个字节长度前缀,小学减法题:65535 - 2 = 65533啊。不知道这些大牛如何计算的,暂且保留疑问吧?

注:我测试了一下使用UTF8编码,varchar的最大长度为21854字节。

在mysql 5.0.45版本,数据库编码utf8下进行测试:varchar最长定义为21785。也就是说不论字母、数字、汉字,只能放21785个。
推想:varchar字节最大65535,utf8编码一个字符3个字节65535/3=21785。

25个汉字
数字是50个
英文也是50个
这个类型你可以定义大点都无所谓

是这样的。


MySQL日期格式化以ym显示时间mysqlym
MySQL日期格式化:以%y%m显示时间 MySQL是一款开源的关系型数据库管理系统,广泛用于Web应用程序的开发。在MySQL中,日期和时间类型的数据是非常常见的。MySQL提供了很多日期和时间相关的函数,其中包括日期格式化函数。本文将介绍如何使用MySQL的日期格式化函数,以%y%m显示时间。在MySQL中,日期和时间类型的数据...

mysql数据类型中blob和binary的区别?
定义里有两个变量,一个是 v_tmp 显式定义为 int64,另外一个 @vresult 随着给定值的类型随意变换类型。 简单调用下。 mysql-(ytt\/3305)->select ytt_sample_data_type(1111,222) 'result';+---+| result |+---+| The result is: '246642'. |+---+1 row in set (0.00 sec) 总结 本篇把 MyS...

如何测试mysql是否安装成功
1、打开命令行窗口。2、然后我们点击输入Root密码,并按回车。3、这时沃恩看到显示MySQL输入标记 4、输入显示所有数据库命令:show databases; 一定要有分号,并按回车。5、显示系统默认的4个数据库,则说明MySQL数据库安装成功。

Mysqlworkbench数据库设计设计工具V63CE中文版Mysqlworkbench数据库设计...
Mysql workbench中文版是一款由数据库设计建模工具,你可以通过该软件,设计和创建新的数据库图示,建立数据库文档,以及进行复杂的MySQL迁移。MySQL Workbench是下一代的可视化数据库设计、管理的工具,它同时有开源和商业化的两个版本。【使用方法】Mysql workbench中文语言设置方法:edit --> preferences --...

mysql 创建视图
MySql创建视图 (1).第一类:create view v as select * from table;(2).第二类:create view v as select id,name,age from table;(3).第三类:create view v[vid,vname,vage] as select id,name,age from table;如果涉及到数据量过大,业务逻辑需要跨表查询等等也可建立一个跨表的视图,...

用CMD命令查看MySQL版本号cmd显示mysql版本
1. 打开CMD命令行提示符。可通过“开始菜单”或按下 Win + R 键打开运行窗口,并输入 CMD 命令。2. 输入以下命令,并回车执行:mysql -V 3. 如果MySQL已经正确安装并配置,将会输出MySQL版本号和其他相关信息,如下图所示:我们可以看到,此处输出的MySQL版本号为 5.7.24。Linux系统 在Linux系统下...

那有比较全的MySql命令啊???
(2) 将NAME设为长度为10的字符字段 (3) 将ADDRESS设为长度50的字符字段,而且缺省值为深圳。varchar和char有什么区别 呢,只有等以后的文章再说了。(4) 将YEAR设为日期字段。如果你在mysql提示符键入上面的命令也可以,但不方便调试。 你可以将以上命令 原样写入一个文本文件中假设为school.sql,然后...

如何用CMD命令启动MySQLcmd怎么启动mysql
– 打开命令提示符(CMD)– 输入mysql -v,并按下Enter键 如果成功安装了MySQL,则您将在CMD窗口中看到类似以下的信息(版本号可能会有所不同):mysql Ver 14.14 Distrib 5.7.34, for Win64 (x86_64)步骤2:启动MySQL服务器 一旦确定MySQL已成功安装,就可以使用以下命令启动MySQL...

在linux下 如何使用mysqldump进行mysql的完全备份? 要完整命令 记得是...
与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。-O var=option, --set-variable var=option设置一个变量的值。可能的变量被列在下面。-v, --verbose 冗长模式。打印出程序所做的更多的信息。-V, --version 打印版本信息并且退出。-w, --where='''where-condition'''只导出被选择...

如何改mysql数据库数据库密码
不过别忘了使用PASSWORD函数。方法二 使用mysqladmin,这是前面声明的一个特例。mysqladmin -u root -p password mypasswd 如:D:\\Mysql\\bin>mysqladmin -u root -p password admin Enter password:(在此输入你原密码)输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。把命令里...

东湖区18078219015: mysql VARCHAR的最大长度到底是多少 -
营冯歧星: MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定).在 MySQL5.0以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节的数...

东湖区18078219015: mysql 设置 varchar(30) 和 varchar(50)有什么区别?不是存储都用一样的空间么? -
营冯歧星: 设置大小是用来限制插入数据库字符串的长度,varchar(30)和varchar(50)在30长度内存储的空间都一样是因为varchar在规定范围内都是按字符串实际长度存储的.

东湖区18078219015: 在mysql中一个中文字符占几个字节? -
营冯歧星: "定义varchar类型的字段,长度设置为10,"由于是非unicode字符串类型,1字节=8位,所以最多输入10个英文或5个汉字.若"你定义nvarchar类型的字段,长度设置为10,"那么属于unicode字符串类型,1字节=16位,所以最多输入10个英文或10个汉字.

东湖区18078219015: MySQL的varchar定义长度到底是字节还是字符 -
营冯歧星: MySQL的varchar定义长度到底是字节 varchar存储规则: 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节 Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同.

东湖区18078219015: sqlserver中 varchar 最大长度是多少? -
营冯歧星: 最大长度8000,用max可以存储达到2G. 例如:varchar [ ( n | max) ]可变长度,非 Unicode 字符数据.n 的取值范围为 1 至 8,000.max 指示最大存储大小是 2^31-1 个字节. 在某些情况下,前台应用对过长的字串是无法正确处理的,比如一...

东湖区18078219015: mysql数据库中sql修改字段类型要怎么做 -
营冯歧星: --更改字段类型长度 alter table 表 alter column 字段名 类型的长度--varchar(60) 例:把城市表的城市名字段有原来的长度20改为30 alter table Testcity alter column cityname varchar(30) --更改字段类型 alter table 表 alter column 字段名 更改后的类型 例:把城市表的城市名字段有原来的varchar类型改为int类型 alter table Testcity alter column cityname int

东湖区18078219015: mysql中varchar和char的区别 -
营冯歧星: char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)...

东湖区18078219015: varchar是最大长度为2000,请问是2000字节,还是2000字符,还是2000字长? -
营冯歧星: varchar (2000) 长度是字节 2000字节,放英文的话,2000个, 中文的话, 1000个.nvarchar(1000) 长度是字符. 就是 无论中文 / 英文 , 都 1000个.

东湖区18078219015: mysql数据库,字段大小有关系吗? -
营冯歧星: varchar是变长字段,会根据你存储的数据长度来决定占用的存储空间,但是会有一个结束符,也就是说你varchar(200)你最多可以存200个字符,但实际占用了201个空间,对于不确定字段来说用varchar要远优于char型,但是对于定长字段,比如一个字段每组数据都应该有20位,此时用char来定义比较好,不会有varchar那个多余占用的空间.另外虽然varchar是变长字段可以节省空间,但因为是变长,所以也会为以后可能出现的更新等操作儿而预留一定的空间 所以varchar(200)和varchar(256)相比,实际存储数据的空间其实没什么差别,但是后面那个可能会稍微多预留些空间吧应该是

东湖区18078219015: 求指点:VARCHAR的长度设置对读取效率影响大吗? -
营冯歧星: mysql 的varchar和oracle 的varchar2 一样,都是可变长的字符类型.也就是说定义的长度过多,不会有太多的影响.它使用的存储空间,只取决于你实际存放的字符的长度.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网