字符串类型

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

虽然实际存储的值并不一样,但是查询时,这两种类型是一致的,因为 CHAR(4)类型多余的空格将被忽略。
北京源智天下科技有限公司
1-2
联系方式:www.rzБайду номын сангаасhina.net
【范例17-7】创建一个表ch_type,含有4个字段分别为ch1、ch2、ch3、 ch4,对应类型和长度分别为char(3)、varchar(3)、char(4)、 varchar(4)。
字符串类型
• • • •
CHAR和VARCHAR数据类型 和 数据类型 BLOB和TEXT类型 和 类型 ENUM类型 类型 SET类型 类型
北京源智天下科技有限公司
1-1
联系方式:www.rzchina.net
CHAR和VARCHAR数据类型 和 数据类型
CHAR数据类型用于表示固定长度的字符串,长度可以是1~255之间 的任何值。VARCHAR的列中的值是变长字符串,取值范围同CHAR类型 相同。 CHAR和VARCHAR数据类型的区别主要在于存储时所需空间不同。当 一个给定列为char类型时,存储时其长度将被修正为创建表时所声明的长 度。而VARCHAR值只存储所需的字符,外加一个字节记录长度,值不被 填补。如表17-3所示为存储一系列不同的串值到CHAR(4)和VARCHAR (4)列的结果。
表17-5 存放位置
SET成员 red black green yellow 存放位置(二进制值) 0001 0010 0100 1000 十进制数 1 2 4 8
北京源智天下科技有限公司
1-8
联系方式:www.rzchina.net
如果给定该列复制9,即二进制数1001,则第1个和第4个SET成 员被选中,其结果为“red,yellow”。从上面可以看出,对于大小为1 ~8、9~16、17~24、25~32、33~64个成员的集合,其SET值分 别占用1、2、3、4或8个字节。因此,在给列赋值、检索时,不仅可 以使用值表中的字符串,也可以使用数值来表示一个值。例如下列语 句是等价的: INSERT my_table SET property='bag,book,pen'; INSERT my_table SET property=7; INSERT my_table SET color='red'; INSERT my_table SET color=1;
表17-3 CHAR类型和VARCHAR类型的对比
CHAR(4) ' ' ‘ab ' ‘abab' ‘abca' 存储需求 4字节 4字节 4字节 4字节 值 '' ‘ab' ‘abab' ‘abcabcab' VARCHAR(4) '' ‘ab' ‘abab' ‘abca' 存储需求 1字节 3字节 5字节 5字节
北京源智天下科技有限公司
1-4
联系方式:www.rzchina.net
ENUM类型 类型
ENUM类型是一个字符对象,其值通常从创建表时所明确列举的值中 选择。ENUM类型在数据库内部并不是用字符的方式存储的,而是使用一 系列的数字,因此其查找更为高效。 枚举值的数目决定了ENUM列的存储大小。一个字节可表示256个值, 两个字节可表示65 536个值,因此,枚举成员的最大数目为65 536。但在 ENUM定义中,最多指定65 535个成员,因为MySQL保留了一个错误成 员,其是每个枚举的隐含成员。将一个非法值赋给ENUM列时,MySQL 自动将其换成错误成员。 例如,创建如下一个串列: color ENUM("red","black","green","yellow") 其值可以是表中的任何一个,其值和编号如表17-4所示。
北京源智天下科技有限公司
1-7
联系方式:www.rzchina.net
SET列的集合成员不是按顺序编号的,而是每个成员对应SET值中 的一个二进制位。第一个集合成员对应于0位,第二个成员对应于1位, 依此类推。数值SET值0对应于空串。SET成员以位值保存。每个字节 的8个集合值可按此方式存放,因此SET列的存储值大小是由集合成员 的数目决定的,最多是64个成员。 SET定义中的值顺序决定了在显示由多个集合成员组成的SET列值 时,子串出现的顺序。例如一个列被设定为SET color("red","black","green","yellow"),其存放位置顺序如表17-5所示。
北京源智天下科技有限公司
1-6
联系方式:www.rzchina.net
SET类型 类型
SET是可以有0个或多个值的一个字符串对象,其值必须从列举其 允许值的表中选择。SET的多个值之间用逗号分开,例如: property SET("bag“,"book“,"pen") NOT NULL 而property可能值为: "" "bag" "book" "bag,book" "pen" "bag,pen" "book,pen" "bag,book,pen"
北京源智天下科技有限公司
1-3
联系方式:www.rzchina.net
BLOB和TEXT类型 和 类型
BLOB和TEXT类型通常用来保存较大文本,二者之间的差别是BLOB 能用来保存二进制数据,比如图片、声音等。而TEXT只能保存字符数据, 比如新闻、日记等, 一个BLOB可用来保存可变数量的数据的二进制的对象,4个BLOB类 型TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB,仅仅在它们保存 值的最大长度方面有所不同。 4个TEXT类型TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT对应 于4个BLOB类型,并且与BLOB有着同样的最大长度和存储需求。 例如创建一个news表,字段ID、content、image的类型分别为 VARCHAR(10)、TEXT和BLOB:
北京源智天下科技有限公司
1-9
联系方式:www.rzchina.net
北京源智天下科技有限公司
1-5
联系方式:www.rzchina.net
表17-4 成员列表
值 NULL “” “red” “black” “green” “yellow” 编 号 NULL 0 1 2 3 4
在ENUM定义中值的顺序就是排序顺序,对于ENUM列类型,成员从1开 始顺序编号。例如,ENUM("a","b"),a排在b之前,而对于ENUM("b","a"), 则b排在a前。另外,空字符串排在非空字符串之前,NULL排在所有其他枚 举值之前。
相关文档
最新文档