数据库讲的很全很简单,很给力...
2015-03-04
在初期对数据库的认识中,我仅仅在掌握了简单基础的增删改查后便看似愉快的放弃了对数据库的深入研究了。因为似乎我在自己所写的程序中,这四句增删改查足矣让我受用一生。还记得当初刚开始学习数据库的时候,习惯性的在QQ上加了个MySQL交流群,大群,足有接近1000人。可是基本上我没有怎么看群,应该不到一周的时间就已经屏蔽了群了吧。当时还对群里一群人偷偷的鄙视了一番,不就四句代码,增删改查吗?有必要搞得这么严重吗?
在寒假在一家创业公司的实习期间,我终于认识到了一个问题,原来数据库并不如我所想的那般简单。当时,我们在开发一款购物类的应用,同样作为服务端开发的一个小伙伴提到了「事务管理」这个关键词,当时真的不知道这是什么,对此,我至今有点汗颜。那一刻,我才突然意识到了,原来数据库是一门很高深的学问。当时,我就想着,我是时候该好好再看一遍数据库方面的书籍了。于是,《SQL必知必会》走进了我的视线。
这本书其实一开始写的也是很简单的,就是我之前所以为的数据库的全部,增删改查。到后面,我发现有很多问题都是我没有意识到的。先不说那些高端的,就从简单的同样是查语句,我原本所使用的语句只局限于:select * from table where id > 0 order by id desc limit 0,10;这种最基础的语句,可是读了书才知道,还有分组查询Group by,分组查询中的having,以及联结查询,join,left join等等。到了后面的,什么存储过程,视图,游标,触发器,唯一约束,检查约束,事务管理,外键等等这些知识,我在之前都是瞟了一眼,以为都是不会用到的东西,所以一看都忘了。现在回过头在看,才发现,这些东西在数据库中的地位是至高无上的。
举个例子,事务管理,当开发一个应用,比如银行转账,客户甲需要将自己账户里面的5000块钱转给客户乙。这会拆分成两步,1.在客户甲的账户中扣去5000元;2.在客户乙的账户中加上5000元。但是当系统因为一些不可抗拒的因素造成步骤一完美实现,而步骤二却意外崩溃。这种时候怎么办?是的,事务管理就可以完美解决这个问题。只需要在可能出现意外的地方,设置事务回滚即可。
说这么多,其实就是想表达这几个观点,
1.多读书很重要
2.任何学问都不能浅尝辄止
3.完了。