1.SQL操作的是数据
SQL是数据库的查询语言,因而可以对系统数据产生持久化影响。在常规编程中,一个错误通常只会造成程序的crash或bug,修改并重新调试往往就可以了;而在SQL中,一个不小心就可能造成系统数据的破坏和丢失。常常有新手执行SQL时,不小心遗漏了DELETE或UPDATE语句中的WHERE子句,这往往是很大的麻烦。
因此,学习和使用SQL,一开始应该养成两个习惯:
(1)细心。在执行SQL语句认真检查一下,要清楚自己在做什么。
(2)及时备份,并考虑对系统的元数据进行版本控制。为偶尔的意外准备好后悔药。
常见的可能造成破坏性影响的SQL关键词:DELETE, UPDATE, DROP, TRUNCATE TABLE。
2.SQL是基于集合的说明式语言
SQL擅长集合操作,而不是循环。所谓说明式语言,你只需要告诉SQL需要做什么,而不是怎么做。
初学SQL的人,思维往往难免带有过程式语言的痕迹,解决问题时常常不由地考虑循环。在学习SQL编程时,每当想要用循环时,先反问一下自己:这个问题是不是必须用循环来解决?事实上,多数情况下,这个问题的答案是否定的。
有本书中讲,SQL代码中出现一次IF便要减一些分(比如-1),出现一次WHILE便要减很多分(比如-10或-50,不夸张)。可以尝试用这样的方法为自己的存储过程打分。