操作数据库必须养成的好习惯
我们开发的系统中,数据是最重要的一部分,如果程序的代码错了,我们可以通过各种方式修改回来,但如果数据失真了,将永远无法还原,那种欲哭无泪的滋味,相信经历过的人是深有体会的。可能这些小的细节对我们来说都是微不足道的,但往往这些微不足道而且是小概率的事件将会毁了你。
记得刚开始工作的时候,我们项目组的几个人对某个市的数据进行操作,由于自己的一个不小心,写错了一个SQL就把其中一部分的数据给毁了,那时候心理真的很难受,多么希望有个人可以骂骂我,至少心理会好受一点,但是没有人理我,这样一直在水深火热这中,感觉自己已经到了地狱一般。经过多年程序生涯,在地狱中也得到了一些成长,于是把自己的一点用金钱换来的经验全盘托出,希望对一些朋友有所帮助。
1、不要用Truncate Table语句。刚开始学这个语句的时候,相信很多人多会拿出来跑一跑,会很高兴地向同事证明你的Truncate Table比Delete跑得更快,但是如果你养成这样的习惯,万一有一天误删东西的时候,就还原不回来了,因为Truncate Table不会记录日志,所以,如果操作重要数据的时候,还是用回Delete语句吧。
2、每次动数据库之前,都先要把数据库备份起来。这个习惯一定要养成,你操作数据库的时候,哪怕只是做一次简单的查询或只是删除几条普通的数据,都先备份一下,不会花你很多时间,却在你失误的时候可以把你从死亡的边缘拉回来。如果数据比较大,至少也要把表里的数据备份出来。
3、把删除语句以及更新语句、插入语句注释掉。我们操作数据库时,通常都喜欢在查询分析器里写一大堆SQL,然后选择某一条,按F5来执行,但有时候会直接按下F5,导致所有的语句都执行,给数据造成一定的损害。如果你把那些有影响的语句注释掉了,就算按错了也没有关系。
4、不要随便地去分离数据库。如果我们要获取整个数据库的数据时,尽量采用把数据备份下来,然后取到其他机器上还原,而不要把数据库分离,然后再复制到其它机器附加。有时候,数据库分离了之后就会造成无法附加,虽然概率很小,但一旦碰上了就会很麻烦,尤其是一些实时的系统。
5、自己不熟悉的数据库,不要去动它。我们维护数据库时,有时候要 出差到其他市去操作数据,这时,其他项目组的同事可能会叫你帮忙更新这个更新那个的,如果你很熟悉数据库的结构,以及了解更新的影响程度,那么你帮忙操作就无所谓,如果你不熟悉,尽量不操作,如果你做好了,功劳不是你的,如果出了什么差错,你就要背黑锅了。
6、身体疲劳时不要操作数据库。加班是程序员的家常便饭,当你加班到身体很疲劳时,操作数据库失误的概率会很大,我记得刚刚出来工作时有一次我写了一个DELETE语句,选择执行了居然漏选了一个WHERE条件,还好数据比较多,超时了,要不然就.........
7、如果自己对数据库结构了解很透彻,而且你的数据库技术水平已经达到一定的高度,更加要小心了,通常出现误操作导致数据失真就是这个阶段,有时候学了一个新语法就会马上拿去试着使用。
8、经常要考虑你的SQL脚本有没有什么漏洞,或者有没有其他方法可以更有效率地执行。
9、SQL SERVER2000里面有一个宝藏,就是它的联机丛书,建议经常去阅读它,当你把它读完并理解之后,你的SQL水平基本就可以超80%的程序员了,根本不要去迷信什么NB的教材,但到了那个时候,你会发现自己懂的东西少了,要学习的东西更多了。