手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2008年09月27日的文章

小家伙学抬头

刚出生的时候,医生就说了,三个月小家伙应该会抬头了,前两天小家伙抬头还是很累的,今天他妈妈说头已经抬的不错了,而且抬头的时候很长。

上周的抬头照

前两天的抬头照

今天的抬头照,老婆说这张是笑的最开心的,虽然有点糊,但笑容很high

» 阅读全文

Tags: 抬头, 佑阳, 练习, 训练, 锻炼

恭喜mpeg喜得公主

恭喜同事Mpeg喜得千金,昨天一大早上班,收到MPEG短信,告诉我们他刚刚得到了一个千金,重6斤4两,母女平安。

晚上就发现www.phpubb.com/blog/上面就有了小姑娘的照片。

看来MPEG同学非常的开心啊。再次恭喜一下。当爸爸了,要辛苦了,呵呵。

我不过是先大家一步,后来还有一个bobby要做后来人呢。

Tags: 出生, mpeg, 小公主, 千金, 小姑娘

关于PR的好消息

做网站的人关心的是怎么样能够被更多的收录,毕竟收录的越多,被搜索的机会也就越大,被搜索的机会越大,被收录的也就会更多,这是一个良性循环。

对于这一点google的PAGERANK也算是一个门槛,相比较而言,PR值越高的网站,GOOGLE等爬虫就会越关注这个网站,如果上面的资料多,那么被收录的机会就会大大增加。

SEO做的就是这些功能。。

今天pr大更新,欣慰的是neatstudio.com的PR终于升到5了,neatcn.com的PR升到3,然而,52cd.net的PR降为1了,原来是3啊。心痛中。。。

不过,升到5也算是一个好消息了。52cd.net的,我以后会慢慢补回来的。。哼

neatcn.com的alexa rank是342050了,一切在向好的方面发展

谨以此文纪念一下这些数值,OHYEAH.

 

Tags: pagerank, google, pr

精通MYSQL数据库——连载十

本来觉得二进制字段没有什么好介绍的,本来嘛,二进制字段,不就是xxxtext变成了xxxblob?长度,大小都没有变化,只是存储的类型变成了二进制,如果把那些xxxtext字段的属性加一个binary,那就和xxxblob差不多了。
只是在没有加上binary属性的时候,xxxText字段的排序和比较是按字符串类型处理,而xxxBlob是按二进制处理的。加了BINARY属性自然是一样的。
关于在数据库里存在BLOB信息,历来就是一个有争议的话题。最早的VBB论坛就是把附件存在数据库里的,后来还有人单独做HACK把附件剥出来。很多人认为数据库就应该存储一些文本信息,对于二进制数据(图像、附件等)就只应该存储链接,而把文件单独存储出去。这样可以更加有效的利用数据库的空间。
但支持把附件存储在数据库的人却认为,二进制数据存储在数据库内,有利于数据的迁移、备份,提高了数据的集成程度,而且在程序里也能够使用统一的形式访问数据。把常用的数据和这些二进制数据存储在同一个表内,一般被DBA们所痛恨,因为这会导致所有的数据记录的存取速度变慢,而且BLOB数据在正常操作情况下只能作为一个整体来读出。也就是说如果一个BLOB数据长度是1024KB,如果你仅仅想读最后那24KB的内容,没有直接的办法,只能先读出来,然后再定位到最后,BLOB数据只能以一个整体来读写和传输。
从5.0.3开始,原来的BIT型字段正式变形,成为二进制字段了,它的最大宽度达到了64,为了这个BIT型字段,MYSQL还特地增加了一条用来写出二进制数据的新语法:b'0101',SELECT查询的时候,遇到BIT型,将返回二进制数据。(我没有5.0.3的版本,没有测试过怎么读取,书上介绍,可以先使用 seelct bit_field + 0 命令把二进制转为整数,再使用select bin(bit_field + 0 ) 将这些整数显示为二进制)
对于二进制来说,数据会有溢出现象,它分为上溢出和下溢出,但不管是如何的溢出,只要是溢出了,所有的二进制位都将被设置为1。例如将-1,0,1,7,8五个数字依次存入BIT(3)数据列的时候,实际存放的是b'111',b'000',b'001',b'111',b'111'。
除开这些二进制字段,剩下的就是具有MYSQL特色的字段了,如果没有什么必要,确实不太建议使用,因为其他的数据库都不支持这两种类型,一旦在数据迁移的时候,很有可能会造成丢失或增大工作量,是什么字段呢?他们就是ENUM和SET(枚举和集合)。
对于MYSQL来说,这两种字段对于涉及字符的操作,有很高的效率,表面上存储的可能是文本,但在实际处理的时候,是按设置的下标来进行操作,即按INT类型操作,所以效率极高。
ENUM是一个字符串集合,它的成员最多可以有65535个,ENUM字 取值只能是这个集合中的某一个成员(不允许是不同成员的一个组合 ),相当于数学意义上的“排列”。
而SET虽然采用了类似的思路,但允许数据表中的SET字段的取值是集合成员的任意组合(组合数量不得超过64个),相当于数学意义上的“组合”。在内部,这些字符串分别与2的幂(1,2,4,8等)相对应,所以字符串的组合就相当于二进制位的组合 。因为每个安符串分别对应一个二进制位,所以SET类型的空间战胜比ENUM大。
虽然这两种类型的效率相对较高,但由于和其他数据库的不兼容性,因此多创建一个关联数据表来关联这些数据才是更有实用价值。


介绍完MYSQL所支持的所有字段的属性,也该介绍一些在创建数据列的时候涉及到的属性,注意,有一些属性只能用于特定的数据类型

属性名    含义
NULL    数据列可以NULL值(一般是默认设置)
NOT NULL    不允许包含NULL值(因为bTree索引不支持NULL)
DEFAULT xxx    如果输入时没有指定值,则默认以xxx为值
DEFAULT CURRENT_TIMESTAMP 这个在介绍日期时间类型的时候介绍过,默认插入当前时间
ON UPDATE CURRENT_TIMESTAMP   在数据更新的时候,自动更新为当前时间
PRIMARY KEY   定义为主键
AUTO_INCREMENT    自动输入一个序列编号,只能用于整数类型的数据列,一般与主键对应使用,必须与NOT NULL,或UNIQUE 属性同时使用
UNSIGNED    无符号整数,值得注意的是,无论怎么计算,即使是1-2,返回的也是无符号的整数
CHARACTER SET name  仅适用于字符串列,指定一种字符集和一种可选排序方式

  
虽然MYSQL有DEFAULT XXX这种属性,但实际上,MYSQL并不允许使用函数来设定默认值,比如DEFAULT rand()就不被允许了。

介绍完这些,以后就该介绍数据库的设计技巧了。之所以在介绍设计技巧之前连载了这么长时间的数据类型,是因为在设计中,使用合适的类型可以适当的增加效率,具体的还是看设计吧。

Tags: database, mysql, 连载