对从事数据工作的小伙伴来说,SQL几乎是必备技能,写得一手好SQL说明你是一个合格的‘取数民工’。
SQL如何从菜鸟到高手呢,一般分三步走:
-
熟悉基本的增删改查语句及函数,包括select、where、group by、having、order by、delete、insert、join、update等,可以做日常的取数或简单的分析(该水平已经超过90%非IT同事);
-
掌握并熟练使用高阶语法,比如集合、分组聚合、子查询、条件逻辑、字符串函数、算术函数、日期时间函数,并且知道MySQL、Oracle、SQL Server等数据库的语法差异;
-
熟悉如何优化SQL语句,以期达到最高查询效率,了解事务、锁、索引、约束、视图、元数据等概念,并且学会使用hive sql、spark sql、pymysql等工具;
数据分析人员最好是能达到第三个层次,这样基本可以算一个90分的sqler。
如果把excel类比sql,你得玩转透视表、各种函数公式,甚至VBA,才能最大效率地赋能工作。
学习SQL是有法可循的,有以下五个步骤:
1. 了解什么是SQL?
SQL,全称Structured Query Language,即**结构化查询语句,**它的主要作用是设计,创建和管理关系数据库,关系数据库的表是类似excel的二维表,由行列组成,每列代表一个字段。换句话说,SQL是用于与关系数据库进行通信的编程语言。
关系数据库有很多,比如MySQl、Oracle等,每个数据库都使用自己的SQL方言,但是它们都共享相同的基本语法。
SQL的职责是管理二维表,通过语句来替代excel中那些图形化的命令。
比如同样是筛选数据,在excel中需要在列名上添加筛选,然后选择想要的字段,这是图形化的命令;SQL则是通过语句来实现筛选;
select * from table where …
SQL语法可以分为三类:
- 用于定义数据结构的语句称为SQL方案语句,比如 CREATE TABLE student…
- 用于创建、操作、检索数据库中数据的语句称为SQL数据语句,比如 INSERTE INTO student…
- 用于开始、结束、或回滚事务的语句称为SQL事务语句
简单理解,方案语句是建造数据的壳,例子中创建了表student;数据语句是处理数据,例子中向表student插入了数据,事务语句就是解决多个SQL执行时的纠纷问题。
如果你是数据库管理员,那么你需要同时掌握模式语句、数据语句和事务语句,但如果你只是使用数据的分析师、程序员,则只需要掌握数据语句就行了。
SQL不能像编程语言一样,使用变量、条件逻辑、循环结构等对过程进行定义,以获得想要的结果。SQL直来直去,只要定义必要的输入输出,没有对过程的控制。
2. 怎么学习SQL?
首先你需要了解SQL语法的基础,包括SELECT,FROM,WHERE,GROUP BY,HAVING,ORDER BY、LIMIT等。
初学者对抽象概念不太懂,可以对比excel学习SQL基本语法。
核心:select * from tableName
这句话是从某表中选择全部字段,相当于excel中的选择sheet
where相当于excel的筛选,group by相当于excel的透视表,order相当于excel的升序降序。
接着你得学习一些常用的函数:
最后掌握高级用法:
3. 有哪些好的书籍和教程?
目前市场上SQL相关的资料很多,比较火的像《SQL必知必会》、《SQL学习指南》等。
网上也有一些不错的开源教程,比如菜鸟教程、w3school等。
建议大家把一本书或一套教程啃完就可以了,一个月就能搞定。
4. 有哪些SQL实战网站?
脱离练习学习SQL简直是要命,可能你学了大半个月,拿到一个查询需求还是无从下手,所以说实践对于SQL来说非常重要。
这里有两个方式可以练习SQL,一是自己搭建数据库,然后找题目练习,二是在SQL网站上练习
自己搭建数据库也不难,初学者可以安装mysql,然后去github上下载习题。
SQL练习的网站也不少,像SQLZOO、XUESQL、SQLBolt、leecode、牛客网等。
5 . 练习练习练习
练习是学习SQL的不二法门,只有练的足够多,你才能精通SQL!