重温SQL有感:“小镇做题家”,不是我的归宿!

01 槽边往事

十多年前,我学过一年的C/S端软件开发,那时学习的数据库系统包括ACCESS和SQLSERVER,虽然学得不算太好,但还是及格的。别的不说,至少我能用它全盘规划一个小型网站所对应的数据库系统并对着书本进行编码实践(ASP+ACCESS | ASP.NET+SQLSERVER,自己练)。不过那时我的脑力还不够强,在学习电子商务网站开发后端功能模块时,好多代码背后的逻辑就搞不明白,脑子给代码搅得像一团米糊,看来以后要想靠编程吃饭,前途颇有些堪忧!——毕竟,我是文科生,我天生所擅长的,是像奥巴马那样写小作文,而不是写代码

奥巴马小作文

(奥巴马写给安倍的悼念信,网络众口称赞:写小作文没人能写过奥巴马~)

于是我有意识地寻找新的方向,后来发现做市场推广这个工作虽然辛苦,但有练习写作的机会:就是以第三方记者的视角,写一写市场活动的宣传类新闻稿,然后交给媒介对接方,发布在报刊类媒体上。那时报纸广告还是主流,打广告较多的金主,可以赠送软文,以获取用户的信任,用于辅助广告的效果提升——虽然,我是后面才知晓这些套路的。

想当年,某鸭脖就是用疯狂发布报纸软文的方式,把当地市场给开拓出来的,我的印象深刻。

那时我所在的公司,也是月月逮住51job纸质版、深圳特区报、深圳晚报狠狠地打招生广告。效果好好。

不过没几年,报纸就彻底不行了!营销进入网络新时代

虽然转向网络营销这个领域并干到现在也算干得不赖,但我除了营销人的职业身份之外,里子里还算是一个IT人,有句话儿说得好,“念念不忘,必有回响”,以前学过的东西,曾经用心练习过的东西,是不会那么轻易被遗忘的。现在回想那时所学习的关于数据库的知识,不只是知识本身仍在发挥价值(例如自己用CMS建设网站,整套技术不需求助于他人),还助我建立起一种系统化的思考能力,虽然不是特别地强,但不论是学习新的东西,还是解决工作中遇到的问题,都能派上用场。

念念不忘,必有回响!

(念念不忘,必有回响。因它在传递你心间的声音,绵绵不绝,遂相印于心。——李叔同)

这个夏天太热了,今天不出门,做点啥呢?不如用mysql,来温习一下SQL语句的基本知识吧。

02 学习方向

SQL语言是以前所学过的,到现在变化并不大,因为SQL是标准化查询语言,通用于各类数据库系统。虽然现今数据库系统在不断的更新换代,还有新的数据库系统出现,如nosql等,但大多均是遵循标准化的SQL语句,虽然是学过sqlserver,但早已多年不用了,发展到什么版本也不清楚,而今,电脑里安装所用的是mysql。

mysql

补充一点,如果你是新手,要学习MYSQL,有两个方向可供自己选择或判断,一个是专业运维,一个是应用开发,二者的知识重点是不一样的,笼统一点来说,运维要在具备良好的计算机网络和熟练使用linux这类服务器管理系统的知识背景下,全面精通MYSQL,包托编写SQL语句在内,软的、硬的技能皆需通晓,得是全能DBA;而开发的重点在于数据库的规范化设计、及SQL的熟练应用——包括查询、数据增删改(含数据输入的安全防范)等,同时还要结合一至多门编程语言或开发框架,组成一套解决方案,不能单独依赖SQL生存。

我重温SQL,方向自然定在开发(且只是WEB开发)这个层面。要往运营DBA数据库管理那个层面走,基础不够,不吃不喝学习实践上三年,估计才可以出道,但这是不现实的。

用于温习的菜鸟教程,请看:https://www.runoob.com/mysql/mysql-tutorial.html

03 技术要点

SQL无非查删增改+统计。

这个SQL语句,在重新温习(理论)+练习(实操巩固)一遍后,发现,无非就是增加、修改、删除、查询这些,外加一些函数用于统计之用。

删除delete语句最简单,但使用时一定要小心,删除了不该删除的,就万劫不复了。

更新update语句也很简单,满足限定条件即可,虽然容易忘,但此语句千年不变。

以上两条在使用上,别忘了带上where这个限制条件,要不,就全乱了!

全乱了

新增insert也是很简单的,但不同的是,它是常用于用户输入的。编程总是要不断录入数据的吧,在网站或B/S系统中,删除和更新通常是要登录后台后,拥有一定的权限,才有此操作功能,因此还算有一种基础的安全防范,而插入呢,并不一定,例如注册新用户的界面,谁都可以往表单中填入数据,如果数据是带有破坏性的呢?!因此在编程时就要考虑安全问题,防止SQL注入。这些网络上教程有很多,关键是要知道在此环节避免掉坑。

要说SQL的核心,还是在于查询语句SELECT上。普通的单表查询不算什么,要点在于多表联合查询join,因为关系型数据库的特点,就是表和表之间的关系嘛。你不能往一个表里填塞所有东西,得合理规划多个表来进行数据的存储,并设计好彼此之间的关系(当然,还有索引等)。而要获得想要的数据,就得连接多个表进行查询。这个概念以前我学得不错,心中雪亮得很,至少在认知上不会犯糊涂。

至于join查询还分内连接(算是默认吧~)、左连接、右连接,这个如何用到位,过去是不甚明了的。今天费了不少时间和功夫,才算把这些稍有巩固。

join查询

至为重要的是内连 inner join,用于获取两个表中字段匹配关系的记录。这正是关系型数据的精华所在。

因此,对于inner join,需要特别重视,得有心找一些实用案例,练上多遍到熟练为止。

至于左连或右连,会用一个就够了,例如我是正常人,习惯从左到右看,那我需要哪个表的数据更多一些,我就把它确定为左表就好,然后使用left join;反之,如果你是不太正常的人,例如海盗船长式的那种斜眼,那就按自己的独特习惯,从右到左看吧,把想要显示更多数据的表,当作右表使用right join即可。

斜眼的海盗船长

(船长,我只是为了举例以加强理解,并没有歧视你的意思~)

讲真,这三者之间的细微区别,在练习了一轮后,我还是有些儿“不求甚解”,待有需要时,再多找案例练习吧。

今天的头已经给这“三连”,搅得有些儿小混乱了。

先收藏好此链接,回头再多看:

https://www.runoob.com/mysql/mysql-join.html

Union和like也是很简单,只是很久没有接触了,感觉有些儿陌生。这里要重视like,因为在网站开发中会很有用,例如查询和展示相关内容。

再说COUNT(),SUM()等统计函数,均与数据统计有关。并不难,有需要时,多练上几遍就明白了。

04 应用优先

我们开发网站或者基于B/S的系统,例如OA之类,只要是基于数据库系统,无非就是这些SQL语句翻来倒去的使用。当然,这里面还有很多技巧,特别是在查询优化这一块,还有很多东西要学习和巩固加强。不过,只要基础过硬,这些都不是事,网上有教程和解决方案供参考,看需求和自己的学习主动性而定。

SQL基础知识就是这些,关键是要在开发中,灵活运用起来,解决问题才行。

在这样练习过一轮SQL后,我发现自己目前并不需再单独购买较新的mysql书籍用于案头参考。目前这些对我够了。我只是用它结合PHP或Python,在业余尝试做一些东西,需要深入时,我再发力。

mysql从入门到精通

(这本书我翻阅过,很全面,案例式教程,但我目前暂无购买需求,你若看好可以买~不亏的!)

讲真,要我做出东西,是可以的,但要我考试肯定不行,做出东西重在想法和去实践,手边有备用的SQL使用参考手册就好。而考试,就是要记,要背那些看似正确实则可能无用的大部头知识。对我来说没有意义。不由想起那些“小镇做题家”们,去他的吧,那不是我的归宿

小镇做题家

把SQL用出花来,无他,惟手熟耳。

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注