零基础学编程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 条评论
登录 后参与评论

相关文章

来自专栏铭毅天下

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

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

1802
来自专栏杨建荣的学习笔记

一条update语句的优化探索(r9笔记第80天)

今天经开发同学反馈,发现有一些update语句阻塞了部分业务流程,为什么说一些而不是一条,是因为这些update语句都在一个存储过程中,语句结构相仿,真有一种一...

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

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

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

3764
来自专栏北京马哥教育

MySQL入门书籍和方法分享

前言:在chinaunix上总是有很多同学咨询想学习数据库,或者是为入行DBA做些准备。几年来作为一个MySQL DBA的成长过程有一些积累和感悟,特此拿出来...

3124
来自专栏架构师之路

数据库中间件为何不支持join

有网友对《假如让你来设计数据库中间件》一文中,数据库中间件仅仅支持四类SQL存有疑问: partition key普通查询 partition key上的IN查...

3476
来自专栏牛客网

迟到的贝壳面经

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

912
来自专栏牛客网

阿里2019实习内推,五轮技术面+一轮HR面,Java岗面经

在牛客网上获取到很多知识和信息,现在反馈一波,希望能对广大找实习的同学有所帮助。 个人情况:EE方向渣硕,二月末内推了阿里集团某部门Java岗,约三周完成了所有...

3685
来自专栏数据科学与人工智能

【SQL技能】SQL技能对于ETL开发人员的重要性

我最初是一个Oracle开发者,我喜欢它的结构化查询语言,一年后,我意识到SQL并非Oracle的专有。 作为70年代Sequel标准的一个分支,SQL走向成...

2809
来自专栏即时通讯技术

微信手机端的本地数据全文检索优化之路

基于本地数据的全文搜索(Full-Text-Search,FTS)在移动应用上扮演着重要的角色。与基于服务端提供的搜索服务不同,移动端受硬件条件限制,尤其在数据...

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

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

842

扫码关注云+社区