MySQL
一个关于SQL的技术问题
今晚清理Google notebook记录的时候,看到下面两段SQL查询语句,是我前几个月在工作时顺手整理的一个问题临时存在了那里,于是贴出来,算是一个技术方面的小问题在网上分享一下:这两个查询语句的区别是什么?
*
FROM
Employee e
LEFT JOIN Department d
ON e.DepartmentID = d.DepartmentID
WHERE
d.DepartmentName IS NOT NULL
*
FROM
Employee e
LEFT JOIN Department d
ON e.DepartmentID = d.DepartmentID AND d.DepartmentName IS NOT NULL
上面两个SQL语句是用MySQL写的。如果需要该问题的数据表结构(和模拟数据),可以在WikiPedia英文网站的“Join (SQL)”一文中找到。
答案我就不更新在网志里了,相信迟早访客回复里面会有正解的。
类别:
Sams - MySQL Database Design and Tuning
这本书介绍了一些MySQL数据库设计、代码编写、维护方面的技巧,适合数据库管理员和中、高级程序员阅读。
MySQL方面的书籍多如牛毛,不同的书针对不同的目标读者。但就程序员个人能力水平而言,就可以分为初级、中级、高级这几种。对于PHP程序员,如果你懂Smarty,懂adoDB,你可以被认为是一个中级程序员。但这本书不是为(成为)中级程序员准备的,而只是为(成为)高级程序员准备的。
显然,这本书不会介绍MySQL的一些基础知识等等。
数据库设计人员适合阅读第二部分:高级数据库设计概念(Advanced Database Design Concepts);程序员适合阅读该书第三部分:优化应用代码(Optimizing Application Code)。
如果只是想靠一门技术而谋取一份工作的话,这本书没有读的必要;如果是对一门技术有职业兴趣、或者想把一个项目做好或做得出色的话,这本书才有读的必要。
最后说一个小插曲。上学期(2005秋季)我大概曾在520课程和558课程演讲中说到目前MySQL 5虽然已经支持stored procedures(存储过程)等,但还未能支持trigger(触发器)。实际上当时我说错了。从这本书中我们可以看到,MySQL v5.0.2 (2004年12月发布)已经开始对trigger有了初步的支持。
类别:
关于MySQL的中文全文检索技术
后来我进一步地去网上做了相关的调查。根据MySQL数据库产品开发人员的意见,MySQL全文检索技术对东亚文字(包括中文、日文和韩文)的支持很差,是因为对于东亚文字的有效分词很难实现。一个并不完美但可以参考的使用方案是在用数据库存储东亚文字的时候,将两个东亚文字之间都留上空格,这样就可以实现对东亚文字的全文检索了。
当然这个方案只是一个临时的无可奈何之举。
2个著名的免费数据库系统MySQL和PostgreSQL都支持全文检索,但好像都不支持东亚文字的全文检索。而据我所知微软的SQL Server数据库产品是支持针对中文的全文检索的(想必Oracle也应该支持中文的全文检索)。因此,我在想,为什么就没有人去做一下MySQL的中文全文检索的研究工作呢?我们很多的研究生所作的毕业论文涉及各种各样的课题,但其中真正有价值、有意义的也许不是很多,那为什么不能把我们有限的精力拿来做点更有意义的事情呢?
当然我是不会去做这方面的研究的了,但我期望有人能够去解决这个问题。
[补充说明1] 可参考海量科技的MySQL Chinese+产品。该产品(部分)支持中文全文检索。 2006-03-04 04:03:26