大多数程序员都会接触各种不同的项目,每个项目所使用的数据库可能并不相同,因此,很多程序员往往惯性地认为数据库的SQL编程就是SELECT、INSERT、UPDATE、DELETE加上一些控制语句。同时,有些程序员在学习并从事了过程化或面向对象编程之后才转到SQL编程上,因此他们的SQL编程往往带有强烈的程序员特性(后面介绍的SQL编程第一阶段的特性)。在国内,通常很少有公司会聘请面向SQL开发的程序员,在国外却有SQL开发程序员的职位,工作内容是从事与SQL编程相关的开发工作。对于一些数据库方面的考试,如在Oracle的OCP考试分类中,特别区分了面向数据库的管理和面向数据库的开发。
而在国内,大部分SQL程序员就是C、C++或者Java程序员兼的,他们既负责应用程序的开发,也包揽了SQL编程的工作,这样往往会导致在数据库中大量使用或者说滥用非关系模型的思想。这里以笔者在一家网游公司遇到的情况为例进行介绍。通常会因为各种原因需要对运营中的游戏大区进行合并,如将华东一区和华东二区合并,底层所做的操作就是将两个数据库中的数据进行合并,而两个数据库的表结构都是一样的。并区的脚本通常使用SQL来完成,当然复杂一点的可能需要借助一下脚本语言。但是不管怎么说,SQL编程的好坏往往会影响并区时间长短。一个好的并区程序可以在四五个小时内完成几千万数据量的表,而有问题的SQL并区程序一个星期可能都不能完成任务。时间对一个网络游戏意味着很多,可能是玩家的回归,也可能是玩家最终的流失,更不用说那些在并区过程中收入的损失。