滑县网站建设服务,军民融合网站建设,苏州工业园区网站,wordpress目录分页1.首先CHAR, VARCHAR, TEXT和BINARY, VARBINARY, BLOB的区别#xff1a;CHAR, VARCHAR, TEXT称为#xff1a; 非二进制字符串;BINARY, VARBINARY, BLOB称为#xff1a;二进制字符串;非二进制字符串和二进制字符串的区别是#xff1a;非二进制字符串包含的是字符字符串…1.首先CHAR, VARCHAR, TEXT和BINARY, VARBINARY, BLOB的区别CHAR, VARCHAR, TEXT称为 非二进制字符串;BINARY, VARBINARY, BLOB称为二进制字符串;非二进制字符串和二进制字符串的区别是非二进制字符串包含的是字符字符串可以定义字符集排序和比较是根据字母顺序进行二进制字符串包含的是字节字符串不可以定义字符集排序和比较基于列值字节的数值值BINARY类似与CHAR类型但是保存二进制字符串而不是非二进制字符串VARBINARY类似与VARCHAR类型但是保存二进制字符串而不是非二进制字符串同样类似的BLOB对应TEXT类型(相应的有TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB和TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT)2.CHAR和VARCHAR相同之处都可以定义字符串的长度如CHAR(M), VARCHAR(M)不同之处CHAR(M)定义的列的长度为固定的M取值可以为0255之间当保存CHAR值时在它们的右边填充空格以达到指定的长度。当检索到CHAR值时尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。VARCHAR(M)定义的列的长度为可变长字符串M取值可以为0~65535之间(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)。VARCHAR值保存时只保存需要的字符数另加一个字节来记录长度(如果列声明的长度超过255则使用两个字节)。VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留符合标准SQL。注意MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255其数据范围可以是0~255或1~255(根据不同版本数据库来定)。在 MySQL5.0以上的版本中varchar数据类型的长度支持到了65535也就是说可以存放65532个字节的数据起始位和结束位占去了3个字 节也就是说在4.1或以下版本中需要使用固定的TEXT或BLOB格式存放的数据可以使用可变长的varchar来存放这样就能有效的减少数据库文 件的大小。CHAR和VARCHAR最大的不同就是一个是固定长度一个是可变长度。由于是可变长度因此实际存储的时候是实际字符串再加上一个记录字符串长度的字节(如果超过255则需要两个字节)如果分配给CHAR或VARCHAR列的值超过列的最大长度则对值进行裁剪以使其适合。如果被裁掉的字符是空格则会产生一条警告。如果裁剪非空格字符则会造成错误(而不是警告)并通过使用严格SQL模式禁用值的插入。由于BINARY和VARBINARY分别与CHAR和VARCHAR对应因此两者的区别也和CHAR和VARCHAR的区别类似。但是注意VARBINARY定义的M值范围为0M2553. VARCHAR和TEXT类型的区别TEXT类型不需要指定M值其他方面与VARCHAR都类似比如存储的是可变长度即不够的部分不需要右边空格填充等等。TEXT与VARCHAR类似实际需要保存字符串本身外加两个字节保存字符串的实际长度。看下表容易理解上面讲述的区别字符串类型的存储需求(M为最大长度L实际存储字符串的长度)列类型存储需求CHAR(M)M个字节0 M 255 (L为固定的255不够补空格)VARCHAR(M)L1个字节其中L M且0 M 65535(参见下面的注释)(MySQL5.0之前都是最大255)BINARY(M)M个字节0 M 255VARBINARY(M)L1个字节其中L M且0 M 255TINYBLOB, TINYTEXTL1个字节其中L 28(256)BLOB, TEXTL2个字节其中L 216(65536)MEDIUMBLOB, MEDIUMTEXTL3个字节其中L 224LONGBLOB, LONGTEXTL4个字节其中L 232ENUM(value1,value2,...)1或2个字节取决于枚举值的个数(最多65,535个值)SET(value1,value2,...)1、2、3、4或者8个字节取决于set成员的数目(最多64个成员)解释CHAR(M)为固定长度而且M必须要在0255之间VARCHAR(M)保存可变长度M定义了最大长度M取值065535之间TINYTEXT不需要定义长度M值长度范围不超过28(256)TEXT不需要定义长度M值长度范围不超过216(65536)下面类似。。。对于二进制字符串形式BINARY(M)VARBINARY(M)TINYBLOBBLOB等类似。更详细的信息参考如下链接4.其他一些参考信息1、CHAR。CHAR存储定长数据很方便CHAR字段上的索引效率级高比如定义char(10)那么不论你存储的数据是否达到了10个字节都要占去10个字节的空间,不足的自动用空格填充。2、VARCHAR。存储变长数据但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的我们只知道它不可能超过10个字符把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度1。为什么“ 1”呢这一个字节用于保存实际使用了多大的长度。从空间上考虑用varchar合适从效率上考虑用char合适关键是根据实际情况找到权衡点。3NCHAR、NVARCHAR、NTEXT。这三种从名字上看比前面三种 多了个“N”。它表示存储的是Unicode数据类型的字符。我们知道字符中英文字符只需要一个字节存储就足够了但汉字众多需要两个字节存储英文 与汉字同时存在时容易造成混乱Unicode字符集就是为了解决字符集这种不兼容的问题而产生的它所有的字符都用两个字节表示即英文字符也是用两个 字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来nchar、nvarchar则最多存储 4000个字符不论是英文还是汉字而char、varchar最多能存储8000个英文4000个汉字。可以看出使用nchar、nvarchar 数据类型时不用担心输入的字符是英文还是汉字较为方便但在存储英文时数量上有些损失。所以一般来说如果含有中文字符用nchar/nvarchar如果纯英文和数字用char/varcharMySQL数字类型中的三种常用种类以下的文章主要讲述的是MySQL数字类型的三种常用种类我们大家都知道不管是微小免费的MySQL数据库空间还是比较大型的电子商务网站对于相关的数据库来说其合理的相关设计表结构、充分利用空间都是十分必要的。这就要求我们对数据库系统的常用数据类型有充分的认识和合理的应用。下面我们将给大家介绍一点心得体会希望能帮助你在建库的时候能考虑的更加合理。数字类型MySQL数字类型按照我的分类方法分为三类整数类、小数类和数字类。MySQL数字类型之一我所谓的“数字类”就是指 DECIMAL 和 NUMERIC它们是同一种类型。它严格的说不是一种数字类型因为他们实际上是将数字以字符串形式保存的;他的值的每一位 (包括小数点) 占一个字节的存储空间因此这种类型耗费空间比较大。但是它的一个突出的优点是小数的位数固定在运算中不会“失真”所以比较适合用于“价格”、“金额”这样对精度要求不高但准确度要求非常高的字段。MySQL数字类型之二小数类即浮点数类型根据精度的不同有 FLOAT 和 DOUBLE 两种。它们的优势是精确度FLOAT 可以表示绝对值非常小、小到约 1.17E-38 (0.000...0117小数点后面有 37 个零) 的小数而 DOUBLE 更是可以表示绝对值小到约 2.22E-308 (0.000...0222小数点后面有 307 个零) 的小数。FLOAT 类型和 DOUBLE 类型占用存储空间分别是 4 字节和 8 字节。如果需要用到小数的字段精度要求不高的当然用 FLOAT 了。可是说句实在话我们“民用”的数据哪有要求精度那么高的呢?这两种类型至今我没有用过――我还没有遇到适合于使用它们的事例。MySQL数字类型之三整数类用的最多的最值得精打细算的是整数类型。从只占一个字节存储空间的 TINYINT 到占 8 个字节的 BIGINT挑选一个“够用”并且占用存储空间最小的类型是设计数据库时应该考虑的。TINYINT、SMALLINT、MEDIUMINT、INT 和 BIGINT 占用存储空间分别为 1 字节、2 字节、3 字节、4 字节和 8 字节就无符号的整数而言这些类型能表示的最大整数分别为 255、65535、16777215、4294967295 和 18446744073709551615。如果用来保存用户的年龄 (举例来说数据库中保存年龄是不可取的)用 TINYINT 就够了;九城的《纵横》里各项技能值用 SMALLINT 也够了;如果要用作一个肯定不会超过 16000000 行的表的 AUTO_INCREMENT 的 IDENTIFY 字段当然用 MEDIUMINT 不用 INT试想每行节约一个字节16000000 行可以节约 10 兆多呢。