五分钟让你学会 SQL

Posted by zhang on

最近一段时间因为业务方的小姐姐经常找我要一些奇奇怪怪的业务数据做分析,而研发小哥实在是太忙了,我只能拾起我祖传的 SQL 手艺亲自上阵。

很多人一听到说要写 SQL 语句——咦,似乎是个编程的东西,好难,嘤嘤嘤

其实本文有点标题党,只需要五分钟你能写出最基本的 sql 语句。至于剩下的 99% 的命令,你可以在以后余生慢慢学。

本文都说了什么

因为本文过于基础,因此先在这里说讲了什么。

  • 简单介绍了下什么数据库。
  • 介绍了下什么是 SQL
  • SQL 的使用方法
  • SELECT 基础模型

简单介绍下「数据库」

数据库你可以理解为是存储数据的仓库,我们在网站上的信息绝对部分都是存储于数据库中,在使用的时候由 SQL 语句进行操作。

一般数据库分为关系型数据库(比如 MySQL、PostgreSQL、Microsoft SQL Server之类的,当然还包括我们初高中信息课学习的 Microsoft Access)、非关系型数据库(NoSQL,比如 MongoDB、Redis)。

我们的 sql 语句针对的是关系型数据,本文将以 MySQL 中的 SQL 语句作为讲解的范例,其他数据库的语句多少会有些许不同,与东北话和唐山话类似……

对于关系型数据库我们可以把它理解成是一个 Excel 表格文件,每一个数据库中包含若干张数据表,每一个数据表包含若干个字段,类似下图这个样子:

什么是 sql

sql 是 Structured Query Language (「结构化查询语言」)的首字母缩写,是一种特定用于数据库的编程语言,其目的在于对数据库中存储的数据进行管理。

提到对数据库的操作,我们就不得不提到大名鼎鼎的「CRUD」, 「CRUD」定义了用于处理数据的最基本操作——增删改查。取得是 create/read/update/delete 的首字母。

CRUD 对应 sql 语句呢就是 insert 语句、SELECT 语句、update 语句和 delete 语句。

一般作为一个产品经理,你需要学会 SELECT 就可以了,至于 insert 、update和 delete 如果你不想学习本文的姊妹篇——从删库到跑路,就真的真的不用看了~一般都是有 DBA 或者研发小哥来搞就好了(有的一些管理严格的公司,直接使用 sql 语句对数据库进行插入、更新和删除都只能通过 DBA 来操作)。

那么查询是如何工作的呢?查询的关键在于准确的向计算机描述你需要查询信息的条件,并且将可能存在于多个数据表中的数据按照一定规则连接起来,最终展示出你所需要的内容。比如:

  • 查询 2020 年 1 月 1 日到现在所有注册客户的名单;
  • 查询 2020 年 1 月 1 日到现在所有已经完成实名认证客户的名单;
  • 查询 2020 年 1 月 1 日到现在所有客户的投资额并按照投资总额从大到小排序;
  • 其他很多很多你想的到的事情

我应该如何使用 sql 呢

连接数据库

首先你要连接到 SQL 数据库,你需要提前准备一些信息:数据库的用户名、密码、服务器地址、访问协议和端口。

另外,你需要准备一个客户端用来连接(总不能人脑直联服务器~),用的比较多的主要是这么几个,供大家参考——Navicat、phpMyAdmin(PHP是世界上最好的语言,不接受反驳→_→)、Sequel Pro ,当然还有很多这种工具,而且不同公司可能还会有自己内部的数据库访问工具,总之找到一个最适合你的就行了。

至于如何装一个 MySQL ,就不在这个文章里说了,有兴趣的可以请我吃饭或者百度一下不好么?

开始跑个 sql 看看

上文也说了,只要学会 SELECT 就好了。那我们就从 SELECT 语句开始。

它的作用就是从数据库中选择数据,并返回结果集。你的SELECT 最基本语法(敲重点,这里就是五分钟学会写 SQL 的那个秘籍!)如下:

我们从最简单的语法学起

SELECT *
FROM table

将 table 这个表中的所有内容查询出来,* 在SQL 语句中表示所有内容。

SELECT column
FROM table

将 table 这个表中的 column 字段的内容查询出来

SELECT 
column1, 
column2 
FROM table;

将 table 这个表中的 column1 和 column2 这两个字段的内容查询出来

SELECT 
*  ## 需要查出的字段名称,*代表全部,你也可以指定显示特定的字段
FROM table_name ## 从哪个数据表中查数据 
WHERE condition ## 查询条件是什么

这里我使用nytimes/covid-19-data提供的U.S. County-Level Data 数据文件导入到我本地的数据库中给大家演示。不过我稍微的处理。

首先我们先查询下这个数据库都有哪些内容

SELECT 
*
FROM covid_19_us

我们来看下效果:

下边我们只展示三个字段

SELECT 
county,
date,
cases 
FROM covid_19_us

我们来看下效果

ok,到现在你已经掌握了最基本的 SQL 查询语句了,下一篇再写运算符和跨表查询之类的东西吧。

#About Me

张小璋,野蛮生长成世界500强企业供应链金融产品经理的法语毕业生。微信公众号:张小璋碎碎念(ID: SylvainZhang )。
一直在互联网金融公司从事产品经理工作并负责互联网金融产品线,深耕互联网金融和区块链领域。「PMCAFF」、「人人都是产品经理」专栏作家、「PmTalk」签约作家。