零基础学编程024:如何快速学会SQL?

一位朋友问我如何能够较快地学会SQL,我一时还真不知道如何回答。想学会SQL(结构化查询语言),大概需要理解这些术语:数据库、关系型数据库、面向对象的数据库、键值型的数据库、数据表、数据记录、数据列、数据表的关系运算等等,但对于一个对数据库一无所知的人来说,该如何一步一步地让他建立起这个知识体系?

我尝试着先把大脑中的相关知识清空,利用《“零基础学编程”都需要哪些基础?》中提到的搜索技巧,先试着google一下,关键词用“how to learn sql",第一行的广告被我去掉了,后面的几条结果如下图:

1、CodeCademy

在开始学习python的时候,我写过《零基础学编程001:用在线编程环境快速上手》,学习一门语言需要快速上手来建立信心,一步一步地输入代码并马上看到反馈结果,时刻体会到自己的进步,从而进入程序的世界,而不要在安装编程环境方面就花上2天时间,使刚建立的一点点学习热情严重受挫。

这个Codecademy 也支持SQL的学习,我进去试了一下,第一课就是输入SELECT语句,直接看到查询的结果。可惜课程界面和讲解都是英文的,英语基础好的朋友首选用这个网站学SQL或其它语言。

2、Quora

这个网站相当于英文版的知乎,点进去之后,列出来一堆的学习资源和教程,因为是用户自己评价排名,所以比较可信,自己去看吧。

3、Learn SQL

这是一款手机APP,我简单地安装试用了一下,仍是纯英文的,设计成关卡模式,不完成一关无法进入下一关。一上来介绍数据库的基本概念,让你回答问题,有一定难度,需要注册之后才能使用更多功能。

4、SQLCourse.com

一个专门学SQL的网站,大段大段的英文内容,介绍得非常详细。从google上搜索到的前四条结果相当不错,如果英文不好,你就只能在知乎上搜索“如何自学SQL”,也有不错的回答。

5、通过python学SQL

单单学SQL效果不好,需要与编程语言配合学习,才能明白SQL在编程中的强大用处。既然已经学了一些基本Python知识,能否通过python的环境快速上手SQL?我尝试着搜索了几个相关模块库,最后锁定了这个db.py,能够达到上述目的。

1)安装

如果你之前安装过WinPython,则直接跳到下一步,看清楚了,是WinPython

之前介绍过WinPython这个安装程序包含许多常用的模块库,如果你只是安装纯净的Python 3.6,后面的 import 语句会出现问题,新手还是尽量别被安装问题折磨得死去活来吧。重复一遍,在Windows上推荐安装WinPython软件包,有人试验小海龟画图出错,很可能也是这个原因。

2)快速试验SELECT语句

SELECT语句相当于编程语言中的Hello World,如果将来你有幸成为了一名程序员,并经常与数据库打交道,那么你写的80%的SQL都是SELECT语句!

直接在 python 的集成环境 IDLE 中输入下面三行语句:

from db import DemoDB
db = DemoDB()
db.query("select * from album")

查询结果:

这个样例是一个歌曲的数据库(Database),album是一个数据表(Table),就像EXCEL电子表格一样,它由许多列(Column或Field)组成,这里有三列:AlbumId(歌曲ID)、Title(曲名)、ArtistId(艺术家ID),这个数据表还有许多行(Row),一行称为一条记录(Record)

再看看我们以前在《零基础学编程019:生成群文章目录》学过的CSV,是不是挺类似?其实CSV就是一个文本格式的数据表

我们刚才写的 select * from ALBUM 就是一条最简单的SQL语句,意思是查询ALBUM中的所有记录(Record),SQL语句一般不区分大小写,这种语言有点像自然语言,只说明目的,而不关心背后的实现逻辑,复杂的处理逻辑由数据库管理系统(DBMS)来完成。

今天先介绍一个开头,大家是否对SQL感兴趣?欢迎留言,如果留言人数超过20,我就专门写上几篇有关数据库和SQL的文章。

小结:

  • SQL是数据库的结构化查询语言
  • 想快速学SQL,首先得会搜索
  • 英文基础好,学编程会容易许多
  • 快速上手反馈建立学习的信心
  • CodeCademy可以快速学习,值得一试
  • python中可以用db模块学习SQL
  • 数据库由数据表构成,表由行和列组成
  • select是基础的sql语句,以后操作数据库时80%以上都是写这条语句

--- END ---

原文发布于微信公众号 - 申龙斌的程序人生(slbGTD)

原文发表时间:2017-02-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏睿哥杂货铺

我的写作工具链

1)源文件持续修改中出现的回归编辑工作,互相引用的链接较多

2669
来自专栏铭毅天下

Elasticsearch实战 | match_phrase搜不出来,怎么办?

? 1、问题抛出 某个词组在Elasitcsearch中的某个document中存在,就一定通过某种匹配方式把它搜出来。 举例: title=公路局正在治理...

4837
来自专栏牛客网

迟到的贝壳面经

上周末在北京贝壳的一面+二面经历,很遗憾,二面没有通过,与其埋怨面试官问的太深太细,不如找找自己的原因。 

1042
来自专栏大数据

快速数据管道设计:通过交换表更新各个事件决策

在 VoltDB(这是一种数据库) 经常使用到的术语,快速数据管道(Fast data pipeline),这是一种全新的现代应用程序 —— 这种应用程序将流式...

2217
来自专栏数据派THU

【数据蒋堂】列式存储的另一面

来源:数据蒋堂 作者:蒋步星 本文长度为2400字,建议阅读3分钟 本文针对只读的分析计算任务探讨列存的缺点。 列存是常见的数据存储技术,在许多场景下也确实很有...

1855
来自专栏菜鸟前端工程师

react-开发经验分享-async与生命周期函数

932
来自专栏铭毅天下

干货 | 论Elasticsearch数据建模的重要性

数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体及实体之间联系的形式,用图形化的形式去描述业务规则的过程,从而表示现实世界中事务的相互关系的一种映射...

2292
来自专栏牛客网

(19实习)51信用卡Java面经

1705
来自专栏更流畅、简洁的软件开发方式

关于Int自增字段和GUID字段的性能测试。只有测试,没有分析,呵呵

      最近有两篇关于GUID和Int自增的文章,我是一直使用Int自增的,不习惯使用GUID,感觉GUID很麻烦,用着不方便,性能也比不上Int自增。但是...

22410
来自专栏PPV课数据科学社区

用R进行文本挖掘与分析:分词、画词云

要分析文本内容,最常见的分析方法是提取文本中的词语,并统计频率。频率能反映词语在文本中的重要性,一般越重要的词语,在文本中出现的次数就会越多。词语提取后,还可以...

4394

扫码关注云+社区