数据分析师使用最多的就是Excel和SQL两个工具了,SQL负责从底层数据库导出数据,Excel对数据进行处理和可视化展现。SQL简单易学、使用频次高,很多互联网公司的运营、数据分析师、产品经理,都要求具备SQL技能。下面是字节跳动和某保险公司的招聘JD,都要求精通SQL技能。
1、书籍推荐
作为刚学习SQL的小伙伴,推荐《高性能MySQL》、《MySQL技术内幕:InnoDB存储引擎》,恐怕有点吃不消。而且这两本书太厚重,拿来垫显示器是不错的。
对于初学者,强烈推荐《MySQL必知必会》,因为他非常薄。没有讲一些底层原理,直接教你如何查询数据,最直接的语法。数据分析师最常用的查询语法,这本书基本满足,剩下的就是多加练习。《SQL必知必会》和这本书风格、内容基本一样,,精读其中一本就行。相比其他计算机技术书籍,这本书比较便宜。如果觉得纸质书籍太麻烦,可以在网上搜索该书电子档,如果找不到,可以在微信读书上找到这本书。实力吹捧下微信读书网页版及APP,图书资源确实丰富,减少了搬家扔书的烦恼。
2、 基本语法
基本语法可能需要2-3篇文章来写,这篇文章先介绍一部分简单查询语法。
2.1数据库介绍
数据库(database):存放数据的容器。数据库也分为关系型数据库、非关系数据库,非关系数据库还可以细分,有兴趣的小伙伴可以搜索了解下。本文所说的MySQL属于关系型数据库。
- 表:就是数据库的单个文件。
- 字段:同Excel的“抬头”。
- 列、行:同Excel中的列、行。
2.2 SQL介绍
SQL是结构化查询语言(Structured Query Language)的缩写。SQL是专门用来与数据库通信的语言。增删改查(CRUD)语句和英文语法类似,熟悉基本的英文单词就可以写出SQL语句,上手快。
2.3查找数据——关键字:select
检索,理解是“查找”
(1)检索单列:Select name from Product;
(2)检索多列:Select name,id,price from Product;
(3)检索所有列:Select * from Product;(*为通配符,在office里面也代表通配符)
2.4查找不同行——select,distinct
Distinct:中文释义“独特的“、“有区别的”。用distinct对检索出来的数据进行差异化筛选。如果一个表中,有多行同样id,我们希望结果里面只显示唯一的id,此时就需要用到关键字distinct。Select distinct id from Product;
2.5限制结果——select,limit
Limit:中文释义“限制、限度”。
适用范围:检索的结果只需要显示特定的几行
(1) 检索结果不多于5行;
Select name from Product limit 5;
(2) 指定检索的开始行和行数
Select name from Product limit 5,5;
Limit 5,5指示检索返回从第5行开始的第5行。
(3) Limit 1,1
检索出来的第一行为行0而不是行1,Limit 1,1显示的为第二行,而不是第一行。
2.6 自然排序数据——select,order by
order by:中文释义“以……排序”。常见于数值大小排序、字母排序
(1) 单列检索、排序:select name from Product order by name;
(2) 多列检索、排序:Select name,id,price from Product order by price,id;
2.7 指定数据排序方向——select,order by,desc/asc
Desc:descending的缩写,中文释义“降序排列”
Asc:ascending的缩写,中文释义“升序排列”,默认是升序排列。
(1) 单列指定方向:Select name,id,price from Product order by price desc,id;
(2) 多列指定方向:Select name,id,price from Product order by price desc, id desc;多列降序显示,一定要在每列都加上desc;
2.8 过滤数据——select,where
(1)过滤单个值
Select name,id,price from Product where name = ‘wahaha’; 查找娃哈哈产品的商品id、价格
(2)过滤范围值
Select name,id,price from Product where price <= 20; 查找价格小于20的产品名称、id,价格
Select name,id,price from Product where price between 10 and 20; 查找价格位于10到20的产品名称、id,价格
(3) 不匹配检查(释义:不等于。符号:!=或者<>)
Select id,name from Product where id !=100;
(4)空值检查——null(不同于字段0、空字符串或仅仅包含空格)
Select name from Product where price is null;
2.9 结合操作符过滤数据——select、where、操作符
操作符:and/or/in/not,可以理解为数学中的逻辑运算关系
(1) and操作符(多个条件都满足)
select id,price,name from Product where id=1001 and price <10;
释义:同时满足id=1001和price<10两个条件。
(2) or操作符
select id,price,name from Product where id=1001 or price <10;
释义:满足id=1001,或者price<10就行。
And和or操作符运算次序,优先运算and操作符。
(3) in操作符
select name,price from Product where id in (1001,1003)
只查询id为1001或者1003的产品名称和价格。
3.SQL实践训练
学完了上面部分SQL语句,就可以在线网站进行练习了。SQL只有多练习,才能记得住,通过实践知道自己的不足地方,再加强学习。
(1) 牛客网
优点:中文界面,对初学者比较友好。缺点:SQL题目较少。不过上面的题目还是挺经典的,能够把上面的题目都搞懂,SQL水平也算是大幅度提高了。也可以找些校招真题练手,里面也有SQL题目,更加贴近企业面试实际情况。
(2)LeetCode
leetcode 第一印象是刷算法题的,其实 leetcode也有数据库题目。可以像算法题一样在线评测,了解自己写的SQL运行效率,也可以借鉴其他答题者的SQL语句,对自己的语句进行优化。优点:题量较多 。缺点:很多题目需要付费升级为会员才能使用。不过可以按照月度付费,在一个月把SQL刷一遍,也算是逼自己一把。
有这两个网站,相信对于初学SQL的同学是足够使用了。第一遍没有做出来,不用急,过几天再去做,对比之前做的有没有进步。
总结:
- 书籍推荐:《MySQL必知必会》
- 基本语法:检索数据、过滤数据、数据排序
- 网站推荐:牛客网、LeetCode