只有学习最纯粹!
然而与其他语言不用的是,SQL语言不仅是面向过程的语言,更多的时候,通过SQL语言提供的面向集合的思想可以解决数据库中遇到的很多问题。当然SQL语言本身也提供了面向过程的方法,但是如果使用不当,会在数据库性能方面遭遇梦魇。SQL编程需要掌握的知识远比想象中多,只有掌握各种知识,综合运用面向过程和面向集合的思想,才能真正解决所遇到的问题。不要迷信网上的任何“神话”,不要被自己或他人的经验所左右。我一直坚信,只有理解了数据库内部运行的原理,才能承自然之道,“乘天地之正,而御六气之辩”,做到真正的“无招胜有招”。——姜承尧
SQL编程的三个阶段
- 第一阶段是面向过程化的SQL编程阶段
这是SQL程序员刚开始使用数据库的阶段,此时他们没有多少处理关系模型的经验和基于集合的思想。在这一阶段,经常会有滥用各种工具(如游标、临时表、动态SQL语句等)的情况,而程序员自己通常意识不到他们正在引起破坏。
- 第二阶段是面向集合的SQL编程阶段
这个阶段SQL的程序员开始意识到SQL编程与面向过程和对象编程得的不同之处,知道运用SQL编程需要更多的东西,慢慢发现SQL不再是妨碍编程的令人讨厌的东西,而是建立在基于关系模型集合理论的强大基础上的产物。从这一阶段开始,程序员开始相信那些说游标、临时表和动态SQL有害而永远不应该使用的“专家”。
- 第三阶段是融合的SQL编程阶段
这个阶段SQL程序员已经具有了丰富的知识并对SQL有了深入的了解,他们对自己的代码非常自信,但是这并不意味着他们会停止钻研更深入的知识以及提高关键性的技术。在这一阶段,SQL程序员不再迷恋所谓的专家,他们可以意识到即使是游标。也并不是在所有的情况下都是无用和有害的。
第三阶段的SQL程序员已经具备了判断什么时候使用纯静态的SQL编程方法不能完成某些任务的能力。尽管纯静态SQL编程是一种非常典型的方法,但是它只在大部分情况下适用。有时候,使用临时表可以显著地改善性能,使用动态SQL可以解决复杂的问题,适当地使用游标可以提高程序运行的效率,使用C,C++这样的过程语言可以带来更大的灵活性,而且不会与关系模型发生冲突。
数据库的应用类型
对于SQL开发人员来说,必须先要了解进行SQL编程的对象类型,即要开发的数据库应用是哪种类型。
数据库应用类型 | 说明 |
OLTP(OnLine Transaction Processing,联机事务处理) | 传统关系型数据库的主要应用,其主要面向基本的、日常的事务处理,例如银行交易 |
OLAP(OnLine Analysis Processing,联机分析处理) | 数据仓库的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果 |
表 OLTP和OLAP之间的区别
角色 | OLTP | OLAP |
用户 | 操作人员 | 决策人员 |
功能 | 日常操作处理 | 分析决策 |
DB设计 | 面向应用 | 面向主题 |
数据 | 当前的,最新的 | 历史的,聚集的 |
存取 | 读/写数十条记录 | 读上百万的数据 |
工作单位 | 简单的事务 | 复杂的查询 |
用户数 | 上千个 | 上百个 |
DB大小 | 一般小于500G | 大于1T |