开发者应该学习SQL的九个理由

  事实上,有很多你可能正在学习的很酷的新事物,似乎每12.8秒就有一项新技术出现,那到底为什么你要花费空闲时间学习一门像SQL这样又老又臭的语言呢?让我告诉你我的理由。

  SQL是可移植的

  计算机系的学生们在获取他们的学位时被教授数以百计的技术和理论概念,其中的许多信息并不能直接应用于每日的编程任务,但SQL介绍给学生们能够在不同平台间转移的基本概念,不同的平台拥有共通的词汇表和工具组,学生们能带着它们去任何地方。

  尽管每个数据库厂商实现他们自己的扩展,但厂商的每个新版本都符合ANSI/ISO SQL标准。标准兼容尽管很微妙,但也使你能够携带着你的知识从一个平台到另一个平台。如果你学习SQL,你将会预备好从一个数据库转移到另一个。

  SQL从不改变

  我的好朋友和商业伙伴开玩笑说他成为一个数据库管理员是因为SQL已经35年没有变化了,这大部分是真的。厂商实现他们自己的扩展并最终使其加入到SQL标准,但SQL的核心没有改变。一旦你理解了SQL的基础和关系原理(并不那么难),你会发现你能够继续依赖这些知识,添加那些你本来依靠其他工具或开发者来实现的特性和功能。

  SQL易于性能增益

  在一个应用程序中仅有几个地方能够实现性能增益 - 表示层、应用层和存储层。事实是,你的代码已经写得很好并且很好地调整过,从那里获取性能增益会好比从石头中获取血液一样艰难。另一方面,数据库是一个容易做一些简单改变(添加一个索引,稍稍修改一个查询)并看到巨大性能改善的地方。在花费了我的职业生涯的可观部分,以一个应用程序开发者的身份盯着数据库分析器之后,我能为之证明。从程序代码中获得性能改善是可能的,但现代的框架和工具通常都编写良好,因此数据库通常是一个更好的地方(也被认为是更容易的地方)为性能改善找到低悬的果实。

  SQL使你成为更好的开发者

  《程序员的修炼之道》一书激励开发者每年都学习一种新语言,并不是因为环境在持续地变化,而是因为学习新的语言向开发者展示了新的模式。思考问题时有不同的思路,并且它们能够很好地应用于不同的解决方案(通过钻研函数式编程我最近学了不少)。学习SQL能够教会你以集合而非迭代的方式思考。长期来看,这会改变你与数据打交道时的思维方式,使你的数据库代码得到改进。

  增进团队间的交流

  你是否曾经试图和语言相同但说非常不同方言的某人交谈?在工作之外,跨越语言的藩篱交流会很艰难,但当一个项目的成功依赖于此则完全令人抓狂。学习SQL会在你与数据库管理员团队交流你的目标时给予帮助,他们不需要解析你的意思,你可以确切地告诉他们你的需求。最终误解更少了,事情能够更快地完成,你不再会是“那个让人抓狂的开发者”。

  工作保障

  我讨厌这样说,但学习SQL可能意味着当旁边隔间的Ted在裁员季被解雇时你能保住你的工作。你拥有越多的技能,你能履行越多的工作职能,你就变得对现雇主越有价值(还有未来的雇主)。如果你能同时与数据库团队和开发团队一起工作,你就成为了一个有价值的资源,两个团队都要依靠你获得成功。

  SQL真的不那么难

  和普遍的观念相反,SQL不是难以学习的语言。SQL是一种不同的思考方式,这是肯定的,但它并不难。那只有记录在ANSI/ISO标准中的为数不多的指令、操作符和数据类型。虽然厂商会添加他们自己的特性,但仍有一部分精简的核心知识你能学习并且应用到你去到的每个地方。

  理解什么时候不适合数据库

  数据库对于解决很多问题是现象级的工具,但对于解决更多的问题则是糟糕的问题。换言之:你也许不应该用一把锤子去挖掘壕沟。通过学习和理解SQL,你将能够做出更好的决定并将表现糟糕的代码移出数据库。事实上,你将能够在问题形成之前就将其发现。

  一旦你理解了SQL,你会更好地领会一个关系型数据库管理系统的局限性。你会知道应用程序的哪个部分能够安全地存在于一个数据库,而哪部分需要被移动到不同的分层。一些数据验证应该和数据存放在一起,而另一些则不应该。理解SQL如何工作会帮助你决定哪些规则应该保留在数据库里。

  让故障排除更简单

  运行中的应用程序难以故障排除众所周知。越多的复杂度和分层被涉及到,就越难以为一个应用程序排除故障。对于SQL的良好理解让快速地将存在于数据库中的问题隔离变得可能。换言之:理解SQL使将问题定位在你的应用程序的多个不同分层中的某一层变得简单。

你可能感兴趣的:(SQL,程序员)