{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

学习SQL大概要多久?有没有好的资料或者视频推荐呢?

linkFlylinkFly 回答0 收藏1
收藏问题

3条回答

wangjuntytl

wangjuntytl

回答于2022-06-28 13:43

这个问题问的有些笼统,个人感觉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 ....

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学习指南》等。


《SQL必知必会》目录



《SQL学习指南》目录

网上也有一些不错的开源教程,比如菜鸟教程、w3school等。

SQL 简介 | 菜鸟教程

SQL 教程

建议大家把一本书或一套教程啃完就可以了,一个月就能搞定。

4. 有哪些SQL实战网站?

脱离练习学习SQL简直是要命,可能你学了大半个月,拿到一个查询需求还是无从下手,所以说实践对于SQL来说非常重要。

这里有两个方式可以练习SQL,一是自己搭建数据库,然后找题目练习,二是在SQL网站上练习

自己搭建数据库也不难,初学者可以安装mysql,然后去github上下载习题。

SQL练习的网站也不少,像SQLZOO、XUESQL、SQLBolt、leecode、牛客网等。

SQL Tutorial/zh - SQLZOO:https://sqlzoo.net/wiki/SQL_Tutorial/zh


自学SQL网(教程 视频 练习全套):http://xuesql.cn/

5 . 练习练习练习

练习是学习SQL的不二法门,只有练的足够多,你才能精通SQL

文源:知乎 朱卫军

评论0 赞同0
  •  加载中...
rottengeek

rottengeek

回答于2022-06-28 13:43

在SQLServer组的以前的一个同事说,很多程序员学到了group by之后就被卡在这里了……那个人告诉我,学SQL,千万不要用普通程序语言的过程式的想法去想,而要用query本身的思想去想。不过我是做编译器的所以自然没有这个障碍。根据我的经验,他的意思大概是,SQL本身就是functional(函数式)的,只有用functional的思考方法才能更好地理解他。

对于流行的SQL数据库(SQLServer、Oracle和DB2)来讲,一般情况下靠谱的table、index的设计,可以让你的CPU接近100%,每个query都在100毫秒内完成。这个靠谱的程度是相当难达到的。不过一般的想法是,如果你的SQL写的性能不够,一般有两种可能:
1、你的问题不适合SQL做
2、你的index没写对

index是一个博大精深的东西,不学点理论知识肯定是不行的,在此我推荐《Database Management Systems 3rd Edition》 - Ramakrishnan Gehrke。这本书讲了很多数据库的重点知识,譬如说如何组织你的数据库,如何写一个好的SQL,如何通过你的需求建立靠谱的index(注意,是先有需求和SQL后有index,而不是先有index然后才依赖于这个去写你的SQL的),那些index到底是怎么实现的,等等。看完之后事半功倍,肯定能写得一手好SQL,建得一手好表了。

评论0 赞同0
  •  加载中...
TalkingData

TalkingData

回答于2022-06-28 13:43

得看你有木有接触过IT行业,还有逻辑思考能力,有人指导的话,逻辑思维好的两个星期每天花3个小时可熟练掌握sql的基本应用了。

评论0 赞同0
  •  加载中...

相关问题

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<