<!-- [if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]--><!-- [if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
</w:LatentStyles>
</xml><![endif]-->
<!-- [if gte mso 10]>
<mce:style><!--
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
-->
<!-- [endif]-->
MySQL5
中varchar
字段最大长度
很早就了解MySQL5
中的varchar
字段可以大于255
个字节,仔细读了一下MySQL5
的文档,其中对varchar
字段类型描述:varchar(m)
变长字符串。M
表示最大列长度。M
的范围是0
到65,535
。(VARCHAR
的最大实际长度由最长的行的大小和使用的字符集确定,最大有效
长度是65,532
字节)。
MySQL
5.1
遵从标准SQL
规范,并且不删除VARCHAR
值的尾部空格。VARCHAR
保存时用一个字节或两个字节长的前缀+
数据。如果VARCHAR
列声明的长度大于255
,长度前缀是两个字节。
注:测试了一下使用UTF8
编码,varchar
的最大长度为21854
字节。
mysql
中
varchar
字段长度超过限制长度自动截取的问题
mysql
手册的说明:
如果分配给CHAR
或VARCHAR
列的值超过列的最大长度,则对值进行裁剪以使其适合。如果被裁掉的字符不是空格,则会产生一条警告。如果裁剪非空格字符,则会造成错误(
而不是警告)
并通过使用严格SQL
模式禁用值的插入。
MySQL
服务器模式说明:
MySQL
服务器可以以不同的SQL
模式来操作,并且可以为不同客户端应用不同模式。这样每个应用程序可以根据自己的需求来定制服务器的操作模式。
模式定义MySQL
应支持哪些SQL
语法,以及应执行哪种数据验证检查。这样可以更容易地在不同的环境中使用MySQL
,并结合其它数据库服务器使用MySQL
。
你可以用--sql-mode="modes
"
选项启动mysqld
来
设置默认SQL
模式。如果你想要重设,该值还可以为空(--sql-mode
="")
。
你还可以在启动后用SET [SESSION|GLOBAL] sql_mode='modes
'
语句设置sql_mode
变量来更改SQL
模式。设置 GLOBAL
变量时需要拥有SUPER
权限,并且会影响从那时起连接的所有客户端的操作。设置SESSION
变量只影响当前的客户端。任何客户端可以随时更改自己的会话 sql_mode
值。
Modes
is
是用逗号(‘
,’)
间隔开的一系列不同的模式。你可以用SELECT @@sql_mode
语句查询当前的模式。默认值是空(
没有设置任何模式)
。
主要重要sql_mode
值为:
· ANSI
更改语法和行为,使其更符合标准SQL
。
· STRICT_TRANS_TABLES
如果不能将给定的值插入到事务表中,则放弃该语句。对于非事务表,如果值出现在单行语句或多行语句的第1
行,则放弃该语句。本节后面给出了更详细的描述。
· TRADITIONAL
Make MySQL
的行为象“
传统”SQL
数据库系统。该模式的简单描述是当在列中插入不正确的值时“
给出错误而不是警告”
。注
释:一旦发现错误立即放弃INSERT/UPDATE
。如果你使用非事务存储引擎,这种方式不是你想要的,因为出现错误前进行的数据更改不会“
滚动”
,结果是更新“
只进行了一部分”
。
本手册指“
严格模式”
,表示至少STRICT
_TRANS_TABLES
或STRICT _ALL_TABLES
被启用的模式。
分享到:
相关推荐
关于`NVARCHAR`,它在MySQL 4.1以下的版本中,无论存储的是英文还是中文,每个字符都会占用2个字节,这是为了存储Unicode数据,避免乱码问题。而在4.1及以上版本,`VARCHAR`已经足够处理UTF-8编码的中文字符,因此`...
总的来说,MySQL中的int、char和varchar在性能上的差异并非显著到足以成为决定性因素。开发者应根据实际需求,如数据的类型、大小、预期的增长、是否需要索引以及对可读性和可维护性的要求,来综合考虑选择哪种数据...
在MySQL数据库中,`CHAR`和`VARCHAR`是两种常见的字符串数据类型,它们在存储和处理数据时具有不同的效率特点。理解这两种类型的差异对于优化数据库性能至关重要。 `CHAR`是一种固定长度的数据类型,这意味着无论...
5. 虽然`VARCHAR`在存储时会去除尾部的空格,但在某些版本的MySQL中(如5.1及以后),它遵循SQL标准不再删除尾部空格,这对于数据一致性是有好处的,但可能会占用更多的存储空间。 总的来说,动态修改`VARCHAR`长度...
在MySQL和Oracle这两个广泛使用的数据库管理系统中,我们经常遇到需要将字符串(varchar)类型的日期转换为日期(date)类型的情况。这通常是因为原始数据以字符串格式存储,而我们需要对这些日期进行比较、排序或...
在MySQL数据库中,CHAR和VARCHAR是两种常见的字符串数据类型,它们在存储和处理方式上有着显著的区别,这对于数据库设计和性能优化至关重要。 首先,CHAR是一种固定长度的数据类型。这意味着无论你存储的实际数据有...
综上所述,了解并掌握VARCHAR类型在MySQL中的大小长度限制以及计算方法,对于优化数据库设计和避免潜在的存储问题至关重要。在设计表结构时,应考虑到字符编码、行定义长度和存储空间的限制,以确保数据的有效存储和...
在MySQL数据库中,CHAR和VARCHAR是两种常用的字符串数据类型,它们在存储和处理字符串时有显著的区别。理解这些差异对于优化数据库性能和节省存储空间至关重要。 首先,CHAR和VARCHAR都是预定义长度的数据类型,但...
### MySQL常见面试问题详解 #### 1. MySQL简介与特性 ...以上内容涵盖了MySQL面试中常见的几个问题及其解答思路。希望这些知识点能够帮助你更好地理解和掌握MySQL的相关知识,并在面试中表现出色。
MySQL中的`VARCHAR`数据类型是用于存储可变长度的字符串数据的,它的主要优势在于空间效率,因为它只存储实际输入的字符数量,不像`CHAR`数据类型会预留固定长度的空间。下面将详细介绍`VARCHAR`的逻辑意义、最大...
5. **优化查询条件**:确保查询条件能够有效利用索引,例如,避免在`varchar`字段上使用模糊匹配或非前缀查询。 此外,了解MySQL的优化工具也很重要,如`EXPLAIN`用于分析查询计划,`ANALYZE TABLE`用于更新统计...
Oracle 中 char 和 varchar2 的区别 Oracle 中 char 和 varchar2 是两种常用的字符串数据类型,它们之间的区别是很多开发者经常忽视的。下面我们将详细分析 Oracle 中 char 和 varchar2 的区别。 首先,char 是定...
在C#编程中,与MySQL数据库进行交互时,可能会遇到中文字符显示为乱码的问题。这个问题通常是由于编码不一致或设置不当导致的。本篇文章将深入探讨如何解决C#操作MySQL时的中文乱码问题,并提供相关的源码示例。 ...
MySQL中的CHAR和VARCHAR是两种常见的字符串数据类型,用于存储文本数据。它们在数据库设计和优化中扮演着重要的角色,理解它们的区别和使用场景至关重要。 首先,让我们深入了解一下两者的演变。在MySQL 5.0.3之前...
3、在数据量少的时候可以使用sum()函数直接求和,因为MySQL中它可以自动识别是字符串类型还是数字类型。 4、以上适用于整数,或者是数据量小,要是数据量太大,并且精度较高不适用,那么就可以考虑使用MySQL 的CAST...