查看完整版本 : use mysql
zhangquan
2003-08-29, 11:48
平时我使用数据库,涉及的都只是数字的输入,然而现在我要存如一段文章,我要怎么输入该命令呢,还请指教?而且,为了以后便于查寻,要求对文章有个关键字,在不太影响性能的情况下,我应该如何操作?
将字段定义为BLOB即可处理长文档。对文章的关键字?好象只能全文检索吧。
一个BLOB是一个能保存可变数量的数据的二进制的大对象。4个BLOB类型TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB仅仅在他们能保存值的最大长度方面有所不同。见7.3.1 列类型存储需求。
4个TEXT类型TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT对应于4个BLOB类型,并且有同样的最大长度和存储需求。在BLOB和TEXT类型之间的唯一差别是对BLOB值的排序和比较以大小写敏感方式执行,而对TEXT值是大小写不敏感的。换句话说,一个TEXT是一个大小写不敏感的BLOB。
如果你把一个超过列类型最大长度的值赋给一个BLOB或TEXT列,值被截断以适合它。
在大多数方面,你可以认为一个TEXT行列是你所希望大的一个VARCHAR列。同样,你可以认为一个BLOB列是一个VARCHAR BINARY列。差别是:
用MySQL版本3.23.2和更新,你能在BLOB和TEXT列上索引。更旧的MySQL版本不支持这个。
当值被存储时,对BLOB和TEXT列没有拖后空格的删除,因为对VARCHAR列有删除。
BLOB和TEXT列不能有DEFAULT值。
MyODBC定义BLOB为LONGVARBINARY,TEXT值为LONGVARCHAR。
因为BLOB和TEXT值可以是非常长的,当使用他们时,你可能遇到一些限制:
如果你想要在一个BLOB或TEXT列上使用GROUP BY或ORDER BY,你必须将列值变换成一个定长对象。这样做的标准方法是用SUBSTRING函数。例如:
mysql> select comment from tbl_name,substring(comment,20) as substr ORDER BY substr;
如果你不这样做,在排序时,只有列的首max_sort_length个字节被使用,缺省的max_sort_length是1024;这个值能在启动mysqld服务器时使用-O选择改变。你可以在包含BLOB或TEXT值得一个表达式上分组(group),通过指定列的位置或使用一个别名:
mysql> select id,substring(blob_col,1,100) from tbl_name
GROUP BY 2;
mysql> select id,substring(blob_col,1,100) as b from tbl_name
GROUP BY b;
一个BLOB或TEXT对象的最大尺寸由其类型决定,但是你能在客户与服务器之间是实际传输的最大值由可用的内存数量和通讯缓冲区的大小来决定。你能改变消息缓冲区大小,但是你必须在服务器和客户两端做。见10.2.3 调节服务器参数。
注意,每个BLOB或TEXT值内部由一个独立分配的对象表示。这与所有的其他列类型相反,它们是在打开表时,按列被分配一次存储。
zhangquan
2003-09-02, 10:44
真是非常的感谢你讲解的这样的详细!!
其实,我原先在想,可不可以用varchar形式来保存,但好象用varchar形式也要求如varchar(?)格式,试了几下,我也就懒的去试了!
在mysql数据格式里,我好象没看见过BOLB和TEXT数据格式,我用的是最新的RH9.0带的mysql,如果我用BOLB形式,需要我限度文本长度吗?
zhangquan
2003-09-03, 09:42
真是让人见笑了,我昨天晚上去查了下资料,果然有BLOB和TEXT数据类型,看来我真的是井底之蛙啊!!
vBulletin® v3.6.8,版权所有 ©2000-2009,Jelsoft Enterprises Ltd.