查看原文:【数据seminar】数据治理 | 还在用Excel做数据分析呢?SQL它不香吗
我们将在数据治理板块中推出一系列原创推文,帮助读者搭建一个完整的社科研究数据治理软硬件体系。该板块将涉及以下几个模块:
计算机基础知识
(1)社科研究软硬件体系搭建——虚拟化技术概述与实践
编程基础
(1)数据治理 | 带你学Python之 环境搭建与基础数据类型介绍篇
(2)数据治理 | 带你学Python之控制结构与函数
(3)数据治理 | 带你学Python之面向对象编程基础
(4)本期内容:数据治理 | 还在用excel做数据分析呢?SQL它不香吗
数据采集
数据存储
(1)安装篇 数据治理 | 遇到海量数据stata卡死怎么办?这一数据处理利器要掌握
(2)管理篇 数据治理 | 多人协同处理数据担心不安全?学会这一招,轻松管理你的数据团队
(3)数据导入 数据治理 | “把大象装进冰箱的第二步”:海量微观数据如何“塞进”数据库?
数据清洗
数据实验室搭建
目录
前言
引言
Part 1 数据库和SQL
(一)数据库简介
(二)SQL简介
Part 2 从EXCEL到SQL
(一)数据筛选
(二)数据求和
(三)数据排序
(四)数据分组
(五)数据匹配
Part 3 总结
这里是 SQL 编程语法基础系列内容,该系列共包含两部分内容(本文属于第一部分内容),该部分讲述了Excel和SQL之间的区别,和Excel中数据的操作怎么用SQL来实现。该系列后续的一部分将会主讲SQL语法为主。
Excel是数据分析的必备工具,也是多数数据分析师接触的第一个工具,Excel能够解决我们对数据的基本操作,例如对数据进行记录、计算、过滤与分析等。
Excel是一个非常好用的工具,但也是有短板的,我们如果打开一个数据量很大的sheet,会发现打开的速度很慢,还时不时伴随着卡顿;Excel共享也不方便:我们想要别人也能访问和使用数据,需要将文件发送给对方才可以;Excel安全性较低:Excel作为一个办公软件,其安全性可想而知,没有太多的安全性功能。
面对这些问题,数据库能够很好为我们解决这些问题:数据库可以存放大批量的数据,一个表随随便便存个几十万是一点问题没有的,上百万,上千万也是很常见;数据库可以轻松的共享,且共享方便;数据库安全性高,有着复杂的安全机制和权限验证,也有非常完善的数据备份机制,能最大限度的保证数据的安全。
在本文首先,简单介绍了数据库的和SQL的概念,之后讲解Excel中对于数据的操作,怎么用SQL来完成,对于本文列出的5条SQL语句,读者们可以不需要完全理解,只需要大致了解其中的含义即可,我们会在该系列的第二部分详细讲解SQL语句。
简单的说,数据库(Database)就是一个存放数据的仓库,这个仓库是按照一定的数据结果来组织、存储的、我们可以通过数据库提供的多种方法来管理数据库里的数据,数据库和我们生活中存放杂物的仓库性质一样,区别只是存放的东西不同。数据库中可以存放许多不同的表,就像Excel里面能够写入不同的Sheet一样。
数据库分关系型数据库和非关系型数据库:
-
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织,Excel中的一个Sheet就是一张二维的表。关系型数据库中的每一个表,其实就是Excel中的每一个Sheet,关系型数据库使用方便,操作数据库的SQL语言通用(SQL是用来和数据库交流的语言,后面会讲到)。
-
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。非关系型数据库不提供SQL支持,学习和使用成本较高。
人和人直接使用人类语言进行沟通,人和数据库之间则使用SQL语言进行“交流”。
SQL(Structured Query Language 结构化查询语句)是一种特定目的程序语言,用于管理关系数据库管理系统。SQL的功能包括数据插入、查询、更新和删除,数据库的创建和修改,以及数据访问控制等。SQL就像指令,每一条指令都会交给数据库管理系统,管理系统会执行对应的操作。可根据下图加深理解。
原始数据展示
为方便大家学习,我们准备了一份演示数据,文件名为:国民经济指标2017.xlsx,在MySQL数据库中也存放了一张一模一样的表,表名为:国民经济指标2017。
下图展示了数据的前20行:
我们可以利用Excel工具栏中的筛选选项,来对表格中的内容进行筛选:
我们在指标名称中选择<生产总值>后点击确定,然后就能够看到筛选后的结果:
筛选后的结果:
在Excel中,我们需要通过鼠标进行各种的操作,而在数据库中,我们只需要编写简单的SQL语句,就能够满足我们的筛选要求:
SQL执行结果(文本内容):
这条SQL语句很好理解,用到了三个关键词:
-
select 关键词:用来查询数据,这边的 * 指的是所有列的数据。
-
from 关键词:定义从那张表中进行查询,这边从<国民经济指标2017>这张表中查询。
-
where 关键词:用来筛选我们指定的数据,这边需要满足指标名称为<生产总值>的数据。
我们可以观察到,Excel复杂的操作,我们利用SQL一条语句就能够实现。
(具体的语法细节,我们将在下一期推文重点介绍!)
为了方便观察,我们从原来的Excel表中将指标名称为<生产总值>提取到了一个新的Sheet。
在Excel中,我们可以利用求和的公式来对框选的数据进行求和,操作如下:
选择需要求和的项点击Enter键后,下图是求和后的值:
下面是利用SQL对表中的数据进行求和操作:
SQL执行结果(文本内容):
可以看到SQL语句中有也有字样,这说明SQL的一些语法,跟Excel还是很类似的。
我们可以利用工具栏中的升序和降序,来对数据进行排序:
排序前表格示例:
排序后结果(升序):
下面我们利用SQL来进行排序关键词是用来排序的:
SQL执行结果(文本内容):
假设我们想要求出不同指标的各项总和,在Excel中我们可以利用<数据透视表>选项进行分组,可以在<插入>栏中点击<表格和区域>并在新Sheet中创建:
将<指标名称>拖入行,将<指标取值>拖入值就能看到分组后的结果:
分组求和后的结果:
SQL中的分组,使用关键词,并用函数求和:
SQL执行结果(只展示前5行文本内容):
我们在Excel中可以使用VLOOKUP函数来对不同表进行数据匹配:
需求如下,表2是某些城市的“生产总值”数据,表1中的第三列“指标取值”,是待匹配的列,我们需要根据城市来匹配出指定的<指标取值>
匹配过程如下:
使用函数需要传入4个参数:
-
第1个参数为待匹配数据的关键字,在表二中要根据这个“城市”列,来查找“指标名称”。
-
第2个参数需要选择数据表,F3:G13 表示表2中的数据
-
第3个参数为列序数,这里的列序数代表的是你要输出的数据在数据表的第几列,例如想要输出指标取值填2,指标单位填3
-
第4个参数传入匹配的规则,0代表准确匹配,1代表模糊匹配
匹配后的结果:
在SQL中,我们还是可以利用一条SQL语句来实现表的整合:
SQL执行结果(文本内容):
-
left join 关键词:指定联结的类型,在SQL中有很多不同的联结方式,这边采用左联结。
-
on 关键词:指定对照的信息,这边根据表中的城市列进行匹配。
本文介绍了Excel和SQL之间的联系,可以看出SQL能够轻松的完成我们对数据的操作需求,而且SQL要比Excel处理数据方便的多也更加的灵活,下期我们将会详细介绍具体的SQL语法细节,以及更多的SQL语句用法。