> 原文出处:http://www.codedata.com.tw/tag/mysql/
> 作者:[張益裕](http://www.codedata.com.tw/author/michael)
> 注:在转载编辑的过程中,对标题部分做了一些简体中文的修正,并增加了目录导航。
# 三国演义
三国演义是一部在华人世界非常普及的历史小说,是由罗贯中根据元朝的三国志平话改编,他以东汉末年魏、蜀、吴三国斗争为主题,收集历史资料和说书人的故事,成为这一部大家都非常熟悉的故事。或许我们现在觉得这些历史已经跟我们没什么关系了,不过大家都知道关公过五关斩六将,刘备三顾茅芦,诸葛孔明的空城记。这些老掉牙的故事,总是不断的出现在电影、电视剧和各种平台的游戏,一代又一代的传承下去。这应该是因为三国演义的确是一个好故事,很多很精采的好故事,就像美国畅销作家史帝芬金所说的,一个好故事是不会寂寞的。
三国演义的普及,让人认为里面讲的故事其实就是真的历史,罗贯中在编这本书的时候,大概是为了让它可以比较戏剧化一些,采用了很多当时说书人的内容,这些内容是在民间流传或由说书人编造的,跟历史并不一样。例如大家熟悉的关公斩华雄,在三国演义中是一段非常的精采故事,作者使用很短的内容让关云长的豪勇,简单、清楚而且非常震憾的呈现给读者。不过根据史料的考证,其实华雄的头是被孙坚砍掉的。这也是为什么清朝的时候就有人评论三国演义是「七实三虚,惑乱观者」。
提倡白话文的胡适之,对三国演义的批评更是激烈,他认为三国演义把诸葛亮的足智多谋写成一个呼风唤雨的妖道;张飞在历史上其实是一个很有君子风度的武将,可是却被写成粗鲁的莽夫。虽然有很多精采的故事,可是没有经过更好的整理,所以三国演义在华人古典文学上的地位,一直不如红楼梦(注),甚至连水浒传都比不上。
![2015-06-08/55754a50511ee](http://box.kancloud.cn/2015-06-08_55754a50511ee.png)
# MySQL与SQL
MySQL在资讯应用的角色,好像跟三国演义这本著作有点类似。MySQL是目前最普及的资料库伺服器,可是大家也最不在意它,可能因为它是一套免费的软体,如果不要对它太过份,它会默默的在电脑中为你服务,在一般情况下都不太会出问题。MySQL跟其它一般的资料库一样,同样支援ANSI SQL92,也加入少许MySQL自己特别的指令。不论是网页或应用程式的开发人员,当你第一次接触资料库,学习SQL这种古老的指令,应该不会觉得太难。如果你正要进入开发应用程式的领域,在学习的路上,你会分配给SQL的时间应该也不会太多,因为它跟程式语言比较起来是比较单纯一些的。
因为MySQL和SQL几乎是最常见的应用,而且大家也觉得它们是简单的,当然就不会在它们身上花太多时间。所以慢慢的我们会发现一些情况,有一些应用程式发生的问题,其实是来自MySQL资料库伺服器和应用程式中的SQL叙述,这些问题相对是比较单纯的,只是大家忽略了。
例如MySQL提供方便好用的「LIMIT」子句,在应用程式中让开发人员可以很容易完成一些特定的功能,例如网页应用程式中的分页查询。不过LIMIT子句是MySQL才有的,如果应用程式更换资料库伺服器,例如Oracle,应用程式就会产生一堆错误了。还有资料库的交易(transaction)管理,MySQL预设的MYISAM储存引擎并没有支***易管理,因为比较简单一些,所以运作的效率也会比较好;如果应用程式需要执行交易管理,就要在建立资料库的时候指定储存引擎为InnoDB。
各种关于MySQL资料库管理和SQL的问题,开发人员通常在遇到错误的时候,才会开始寻求解决问题的方法。这似乎也是MySQL的宿命,因为我们虽然一直在使用它,可是却不太重视它,也认为这本来就是合理的,开发人员不应该分配太多时间给它。有一个很明显的情况,在逛书局的时候,你应该已经看不到只有讨论关于MySQL和SQL的书籍了。
# OCP MySQL 5 Developer
在我们台湾这里,跟开发人员相关的认证考试,这应该算是最冷门的OCP认证科目之一。这个认证考试的主要内容是MySQL的SQL,通过这个考试的人,表示它具备在应用程式中使用SQL的技能。你应该会觉的这是一个有点诡异的认证考试,它好像没有存在的必要。对一个有经验的开发人员来说,使用SQL的技能就像是本来就应该存在的,你甚至已经忘记当初是怎么学会SQL;对一个新手来说,不会有人建议你去买一本关于SQL的书籍来学习这方面的技能,因为可能也买不到了,不过有各种网站提供SQL的学习,认识一些基础的叙述后,遇到问题再说吧!
SQL在目前的环境下,越来越不受到开发人员的关爱,尤其是现在各种关于资料库应用的框架,例如Hibernate和MyBatis,它们的任务就是要杀死SQL这只远古巨兽,让开发人员不用受到SQL的煎熬。我也认为开发应用程式一直是一件很困难的事情,各种越来越进步的科技让生活更方便,可是应用程式开发技术却越来越复杂,开发人员必须具备的技能也更多,如果真的能有一种技术可以完全消灭SQL,那绝对是一件非常美好的事情。不过目前的情况应该还是有很多困难,就以大约十年前的应用程式来说,SQL还是一个必要的成员,除非放弃原来已经运作正常的程式,否则你还是要面对这些冗长的SQL叙述。
这就是「MySQL超新手入门」系列文章的目的,内容的范围涵盖OCP MySQL 5 Developer认证考试,因为它的范围也是一个开发人员必须具备的SQL技能。从安装MySQL资料库与相关的工具程式开始,到学习所有MySQL提供的SQL,虽然是针对MySQL资料库撰写的,不过绝大部份都符合ANSI SQL92的标准,也就是在其它资料库产品也可以正确的运作。
内容规划为19章:
1. [数据库概论与 MySQL 安装](database-mysql-installation)
2. [SELECT 基础查询](basic-query)
3. [表达式和函数](expression-function)
4. [JOIN 和 UNION 查询](join-union)
5. [CRUD 和数据维护](crud-maintenance)
6. [字符集和数据库](charset-database)
7. [储存引擎和数据类型](charset-database)
8. [表格和索引](table-index)
9. [子查询](subquery)
10. [视图](views)
11. [预处理语句](prepared-statements)
12. [存储过程入门](stored-routines)
13. [存储过程的变量和流程](stored-routines-variable-flow)
14. [存储过程进阶](stored-routines-advanced)
15. [触发器](triggers)
16. [资料库资讯](information_schema)
17. [错误处理和查询](errors-warnings)
18. [导入和导出数据](outfile-dump-infile-import)
19. [性能](performance)
在第一章介绍基本的资料库概念与安装需要的软体后,第二章到第五章讨论基本的新增、修改、删除和查询;第六章到第八章讨论资料库、表格和索引的建立与管理,这个部份的内容会有比较多MySQL独有的特色;第九章是子查询;第十章到第十五章讨论资料库进阶的应用,这些在其它资料库产品都会提供类似的技术,例如Oracle的PL/SQL;第十六章到第十九章讨论的内容比较偏向于资料库管理和效率的进阶应用,这些也是一个开发人员需要了解的。
**注:** 红楼梦在文学上的重视让它演变成一门「红学」,可是红楼梦的故事与人物对一般人来说,却不如三国演义来得熟悉
**参考资料:**
* 三国演义校注,罗贯中原著,吴小林校注,里仁书局
* 三国演义的文学特质及其悲剧艺术,罗龙治
* [](http://www.oracle.com/)[http://www.oracle.com](http://www.oracle.com/)