很多朋友写数据库SQL时间久了,都会养成一整套自己独有的写法和风格,而且大多数朋友对自己的写法和风格都比较自我欣赏,甚至有一种迷之自信。
这对于那些科班出身的朋友来说可能是好事,因为一般老师都会传授您最好的、最对的;但大多朋友都是半路出家,边用边学、日积月累,可能我们的写法和风格存在致命缺陷也未可知。
从本篇开始,笔者将写一个有关SQL优化的系列。本篇算是该系列的开篇,主要从笔者常年使用SQL的角度可劲儿“夸夸”SQL这个让人着迷的“大美女”,如果您对数据库有点兴趣但还没有深入涉足,赶紧把这个“大美女”养起来吧!
SQL是个一本万利的好东西?!
SQL(Structured Query Language,结构化查询语言)是操纵数据库的标准语言,从广义上讲,她跟C\C++等编程语言都归属编程语言范畴,数据库则是储存数据的仓库。
SQL是个好东西,与多如牛毛的编程语言(比如C\C++、Java、Python、GO、Pascal……)相比,SQL基本算是一种标准通用的操纵数据库的编程语言,当下流行的关系型数据库(比如PostgreSQL、MySQL、Oracle、SQLServer……)和NewSQL(比如TiDB等)数据库都是支持的,但支持程度略有差别。
一些对数据库不太了解的朋友,甚至包括某些刚学习编程的朋友,对数据库并不一定特别重视,甚至觉得数据库是可有可无的。老司机们您们别笑,估计不少朋友经历过这个阶段。
道理非常简单,一些刚入门的朋友,一头扎进编程海洋里面遨游着,在编程进行到要真正做产品的时候,才发现没有数据库程序,程序就开发不下去了,匆匆忙忙回头选了某种数据库,一头扎进去才发现又是新领域。
我可以负责任的告诉您,您花时间学习和掌握数据库真是一本万利的,当您选了某种数据库系统,比如PostgreSQL或MySQL,您扎扎实实的把各种基础知识(其实主要就是SQL啦)摸熟了,这些基础知识在其它数据库系统上基本是通用的。
如果您掌握并能够熟练应用这套语法架构,再了解一些不同数据库独有的那一小丢丢个性化语法,您就可以可以在不同数据库之间随意切换,这算不算一本万利啊!从这个角度讲,学数据库的朋友要比搞编程的朋友幸福多啦。
虽然现在NoSQL(Redis、MongoDB等)和NewSQL(TiDB等)如火如荼,但她们也要用SQL,只是NoSQL中很多SQL还没有标准化,但标准化知识时间问题,不标准化只会是死路一条,所以NewSQL明智的选择了与SQL标准兼容。
SQL主要包含了哪些内容?
说到这里,有些朋友可能已经等不及了,SQL的语法架构主要包含哪些呢?
好吧,我们先简单科普一下SQL的语法架构。其实SQL语法并不复杂,主要包括六大块,她们分别是:
1、数据查询语言(DQL:Data Query Language),比如select配合神奇魔幻的where和order by,这里面的奥妙,很多朋友一辈子都没有摸透。
2、数据操作语言(DML:Data Manipulation Language),诸如insert、delete、update等,说白了就是数据的插入、删除和更新,这个相对简单些。
3、事务处理语言(TPL):包括begin transaction...commit transaction等,其实事务语言很简单,关键是您要理解事务的真正含义并能正确使用她。
4、数据控制语言(DCL):比如grant和revoke,这类语句一般用来处理权限。
5、数据定义语言(DDL):比如create、drop,主要用于创建数据库、表、视图、存储过程、自定义函数等等。
6、指针控制语言(CCL):比如declare cursor、fetch next from into,游标是存储过程常用的语句,这个用活了,您才能随心所欲的写存储过程。
我们常说的SQL,主要就是由以上六大块组成的。怎么样,是不是感觉特别简单特别清爽,比起那些一看就让人头疼的编程语言,SQL是不是就像小儿科?
您千万不要认为,SQL语法结构如此简单那SQL的用途肯定就不大了!错了,SQL的用途太大了,大到很多编程语言跟SQL比,只能称之为应用,而SQL却是应用的基础。
同样的需求、不同的SQL有何玄妙?
当今是数据大爆炸时代,比如像淘宝、天猫、京东等等,每天都在处理着海量数据,如果阿里和京东的系统后台没有足够强大的数据库系统和足够优化的SQL支撑,她们就甭做生意了。
很多朋友无法认识到SQL的重要性,甚至觉得掌握几条基本语句就结了。可事实又是怎样呢?我提几个您平时可能碰到的场景,您可以思考下自己做的好不好:
1、为何查询同样的数据,别人写的SQL速度比您写的要快好几倍?这其中都有什么玄妙?
2、为何别人设计的数据库用了几年速度都没有太大变化,自己设计的数据库用一段时间就慢的不行?
3、为何别人写的SQL容易修改阅读,自己写的SQL修改时会伤筋动骨、错漏百出?
4、为何别人写的SQL总比我写的执行速度更快、看上去更简洁优美?
……
SQL需要优化,除了经验,您需要掌握充足的知识
越是深入SQL编程,您越会发觉SQL显得深不可测。其实这一切都是假象,您静下心来细想一下,您在学习SQL知识上到底花过多少时间、是不是只有用到时才匆匆忙忙在网上查资料拼凑方案?
学习SQL是需要积累、总结和沉淀的,当您具备了一些基础知识,能够用来干活了,并不是说您就成了SQL高手了,越是这时候,您越要静下心,将自己的知识梳理一下,把糟粕部分剔除,每种处理都尽量使用优化过的方案,这将会是一个知识正能量积累提升的过程。
从本篇开始,笔者将写一个有关SQL优化的系列,期待与您共同探讨如何成为有含金量的SQL高手。
本文暂时没有评论,来添加一个吧(●'◡'●)